|
COURSE
SYLLABUS |
COP 4531: Complexity and Analysis of Data Structures and Algorithms (this pre-requisite will not be waived), and COT 4420: Theory of Computation. You are also expected to have the mathematical maturity to write formal proofs and algorithms.
MW 3:35 pm - 4:50 pm, LOV 103.
Instructor: Ashok Srinivasan Office hours: MW 2:30 pm - 3:30 pm. I am also usually available in my office, and you can feel free to meet me in the afternoons. Alternatively, you may schedule an appointment, either by email or by phone. Office: 169, Love Building Phone: 644-0559 Email: asriniva@cs.fsu.edu Course web site: Access through blackboard http://campus.fsu.edu.
In your algorithms course, you learned efficient algorithms for many common problems in computer science, while in the theory of computing course, you learned to prove that some problems cannot be solved by a computer. In this course, we will look at problems in between these two extremes, called NP complete and NP hard problems, which can be solved, but perhaps not efficiently. We use concepts from the theory of computing course to define what we mean by an algorithm being efficient. We show that NP complete problems are in some sense the hardest problems that we can at least hope to solve efficiently, and give reasons why it is commonly believed that they cannot be solved efficiently. Proving a problem NP complete relieves you from the responsibility of designing an efficient algorithm to solve it. However, the problem itself does not disappear, and we still need to be able to do something about it. So we will study approximation algorithms which find approximate solutions efficiently. Thus this course will help you theoretically analyze the nature of certain difficult problems, and develop algorithms that try to handle them in an effective manner, even though we may not be able to determine the optimal solution efficiently. NP complete problems arise in many real-life applications, such as compilers, scheduling, and parallel computation.
Problems that you have studied so far were somewhat simple, in the sense that the algorithms used to solve them were rather straightforward. From example, it was easy to see that an algorithm was correct and to determine its time complexity. Topics we discuss in this course can be broadly classified into two categories: (i) difficult problems, for which we think it is unlikely that efficient algorithms exist, and (ii) difficult algorithms, for which proof of correctness or analysis of time complexity are difficult. The discussion will sometimes span both catergories, when we discuss approximation algorithms for the difficult problemsTo be more specific, we will discuss the following topics: prove problems NP complete; develop approximation algorithms to solve NP hard problems, prove their correctness, and analyze their time complexity; show that some problems are too hard to even approximate; discuss parallel algorithms and heuristics for solving some NP hard problems that arise here; and analyze randomized algorithms for sorting and selection.
This course does not require any programming, though you may choose to write programs for your project. It does involve deep thinking and rigorous theoretical analyses. Therefore, much mathematical maturity is required of you. (However, specific mathematical skills, beyond those learned in undergraduate Discrete Mathematics courses, are not required.) For example, you should be able to write formal proofs. This course will also require you to be creative -- most of the problems that you solve in assignments and exams will be different from those discussed in class, though the solutions strategies will often be related to those discussed. Just learning how to apply algorithms that you have learned in class will not be sufficient to pass the course.
By the end of the semester, you should develop the following skills: (i) identify problems that are NP complete or NP hard by proving this formally, (ii) develop and use approximation algorithms to solve NP hard problems, (iii) prove the correctness of algorithms and analyze their time complexity in a mathematically rigorous manner, and (iv) develop efficient algorithms for problems similar to those discussed in class. We give more details below (objectives shown in bold are particularly important). You will also later be given more specific objectives for each lecture.NP completeness and NP hardness
- Given a problem instance, encode it as an input to a Turing machine.
- Given a non-decision version of a problem, give a reasonable decision version.
- Define the class NP using both, a non deterministic Turing machine model, and using verification with a certificate.
- Define an NP complete problem.
- Prove NP completeness of circuit satisfiability.
- Given an NP complete problem, prove that it is NP complete by reduction.
- Define an NP hard problem using Turing reducibility.
- Given an NP hard problem, prove that it is NP hard.
- Assuming that the decision version of a problem can be solved in polynomial time, show how the non-decision version can be solved efficiently (assuming this is feasible, of course).
Approximation algorithms
- Define the following terms: (i) combinatorial optimization, (ii)approximation factor of an approximation algorithm, (iii) polynomial time approximation scheme, and (iv) fully polynomial time approximation scheme.
- Given a problem instance, show steps in the approximation algorithms for the following problems: vertex cover (two algorithms), set cover (three algorithms), knapsack, and minimum makespan.
- Analyze the time complexity and determine the approximation factor for each of the above algorithms and its variants.
- Given an NP hard combinatorial optimization problem, give an approximation algorithm for it and determine its approximation factor.
- Given an application, abstract its computational structure and either prove that it is NP hard, or give a polynomial time algorithm to solve it. If it is NP complete, give an approximation algorithm to solve it and give its approximation factor.
- Explain the use of linear programming and rounding to approximately solve NP hard problems.
- Given a problem that is hard to approximate and an approximation factor, prove that it is hard to approximate with the approximation factor that is given.
Parallel algorithms
- Explain the justification for the model we used to analyze the time complexity of parallel algorithms.
- Define the terms speedup and efficiency.
- Given a parallel algorithm, analyze its time complexity.
- Given a sequence of numbers and the number of processors, show the steps carried out by the parallel quicksort and parallel sorting by regular sampling (PSRS) algorithms.
- Analyze the time complexity of the above two parallel sorting algorithms.
- Given a problem, develop a parallel algorithm for it and analyze its time complexity.
- Explain the use of graph partitioning in parallel computation, give the limitations of the edge cut metric to measure communication cost, and propose improvements to the edge-cut metric.
- Given a graph, show how the spectral method partitions the graph.
- Formally justify the use of the spectral method as a heuristic for graph partitioning.
- Show steps involved in the diffusion and in Hu and Blake's schemes for dynamic load balancing.
- Explain the limitations of diffusion and Hu and Blake's schemes for dynamic load balancing.
Randomized algorithms
- Given a sequence of integers and a sequence of random numbers, demonstrate the steps in the randomized quicksort algorithm RandQS.
- Analyze the expected time complexity of randomized quicksort.
- Given a sequence of integers and a sequence of random numbers, demonstrate the steps in the randomized selection algorithm Find.
- Given a sequence of integers and a sequence of random numbers, demonstrate the steps in the randomized selection algorithm LazySelect.
- Analyze the expected time complexity of the two randomized selection algorithms.
- Analyze the time complexity of modifications to the randomized sorting and selection algorithms discussed above.
Class participation 10 Project 10 Three Homework assignments 3 x 10 = 30 Midterm 20 Final Exam 30
Course average Letter grade 85 - 100 A 80 - 85 A- 75-80 B+ 70-75 B 65-70 B- 0-65 F to C+ Your grade will be based on the scores obtained in the above categories, with weights as given above. You should also score at least 60% in the weighted average of the midterm and finals in order to get a grade of B- or higher. Note that the thresholds for grades are a little lower than they normally are in other courses. Please don't think this makes it easier to obtain a high grade. They are lower because the exams are much more difficult!
- Examples
- If you get 83% total and 93% on the exams, your grade will be A-.
- If you get 83% total and 33% on the exams, you will not get A-. Your grade will be C+, since the exam grade is below 60%.
- Class participation
- Class participation consists of answering questions correctly in class, and other positive contributions, discussed in greater detail at www.cs.fsu.edu/~asriniva/courses/alg04/classparticipation.html.
- Project
- You will write a paper on a topic of your choice. More details are given at www.cs.fsu.edu/~asriniva/courses/alg04/project.html.
- Assignments
- Assignments will all be theoretical; there will be no programming involved. Hardcopies should be turned in to me in my office. If I am not in my office, you can slip it under my door. Assignments are due 5 pm on the due date.
- Midterm and final exams
- Each of these exams will consist of two parts. The first part will be a closed book one, which will primarily test knowledge, understanding, and direct application of material discussed in class. The second part will be open book, where you will be allowed to bring in the two required texts for this course (but not the handouts). It will test your ability to solve new problems. The final exam will be comprehensive.
- Deadlines and instructions
- Following the same professional guidelines that you will encounter in business, there are strict deadlines, and instructions that must be followed. Please read instructions carefully, and schedule your activities so that you submit assignments well in time. You should check your garnet email account and the class web page regularly, and note other announcements, on-line and in class.
- Participation
- I will ask you questions in class: (i) review questions on the previous lecture, and (ii) questions on the material currently being discussed, in order for me to obtain feedback on how well you understand the material. You should be prepared to answer these questions, and should also participate by asking questions, suggesting ideas, and performing in-class assignments that I give. Of course, you cannot participate in class unless you attend it!
- Reading assignments
- You will have a reading assignment for each lecture, which you should read. New material often builds on the old ones. So, if you have trouble with some material, please get help from me before the next class. You should also peruse the material for the next lecture, and be prepared to answer questions on it, which I will provide in advance. I expect that you will need to spend between one and two hours studying, for each lecture. The assignments and exams will consume additional time. The following learning components are important, and you may want to verify if you do satisfactorily on these, after studying the material.
- Knowledge: Examples -- Do you understand the terminology used? Given an algorithm and problem instance, can you describe the steps carried out by the algorithm and the output?
- Understanding: Examples -- If some aspect of an algorithm, were modified, can you analyze the time complexity, prove its correctness, or prove that it is incorrect? If some aspect of the problem where changed, can you suggest modifications to the algorithm used to solve it? In order to answer such questions, you need to understand how each component of an algorithm problem affects the time complexity, and why each component of an algorithm is important for its correctness. After you learn about what an algorithm does (and have, thus, acquired "knowledge"), it will be useful for you to think of different things that can be changed, and see how that will affect the time complexity or correctness. Similarly, you have to understand how different aspects of the problem are dealt with by different components of the algorithm.
- Theoretical analysis: You can often intuitively understand why an algorithm works, or why its time complexity is what we claim it to be. However, you should also learn to formally prove this in a mathematically rigorous manner. You will also need to write algorithms precisely. Students often have trouble with this. I suggest that, until you attain some proficiency in these skills, you practice writing proofs and algorithms for review questions that I post after each lecture, and get feedback from me.
- Creativity: Can you modify algorithms that we have studied, to make them more efficient for special situations? Given a problem for which our algorithm is not valid as designed, can you modify the algorithm to solve the problem, and then prove the correctness of your solution, and analyze its time complexity? Can you prove that a new problem which you are presented is NP complete, or that it is hard to approximate within a given factor? Questions related to creativity will form the major part of the grade.
- Assignments
- You will have three assignments in this course, and you will have around ten days to work on each one.
Attendance Policy:
The university requires attendance in all classes, and it is also important to your learning. The attendance record may be provided to deans who request it. If your grade is just a little below the cutoff for a higher grade, your attendance will be one of the factors that we consider, in deciding whether to "bump" you up to the higher grade. Missing three or fewer lectures will be considered good attendance. In rare cases, such as medical needs or jury duty, absences may be excused with appropriate documentation. You should let me know in advance, when possible, and submit the documentation I seek. You should make up for any materials missed due to absences.Missed exam Policy:
A missed exam will be recorded as a grade of zero. We will follow the university rules regarding missed final exams (see http://registrar.fsu.edu/dir_class/fall/exam_schedule.htm), for all the exams, including the final exam.Late Assignment Policy:
In order to enable us to provide timely solutions to assignments, we have the following policy regarding submission of late assignments.
- An assignment that is turned in no more than 48 hours late will be scored with a 20% penalty.
- An assignment that is turned in more than 48 hours late will receive the score of zero, though we will review it and comment on it.
Grade of 'I' Policy:
The grade of 'I' will be assigned only under the following exceptional circumstances:
- The final exam is missed with an accepted excuse for the absence. In this case, the final exam must be made up during the first two weeks of the following semester.
Professional ethics:
You will gain confidence in your ability only when you do the work independently. On the other hand, one does learn a lot through discussions with ones peers. In order to balance these two goals, I give below a list of things that you may, and may not, do.Things you may not do: You should not copy from the assignments of other students. This includes directly copying or making modifications to others' assignments. If you happen to find a solution to an assignment problem from source, you may not copy it. Furthermore, you should take steps to ensure that others cannot copy your assignment.
Things you may do: You may ask others about (i) terminology that you do not understand, (ii) clarifications on what is required of you in an assignment problem (though you may be much better of asking me), and (iii) how to submit your assignment. After the assignment has been graded, you are encouraged to discuss each others' solutions. Honor Code: Students are expected to uphold the academic honor code published in "The Florida State University Bulletin" and the "Student Handbook". Please read the provisions of the Academic Honor Code: http://www.fsu.edu/Books/Student-Handbook/codes/honor.html. Also read the section on "Honor code" below.
Plagiarism:
- Plagiarism is "representing another's work or any part thereof, be it published or unpublished, as ones own. For example, plagiarism includes failure to use quotation marks or other conventional markings around material quoted from any source" (Florida State University General Bulletin 1998-1999, p. 69). Failure to document material properly, that is, to indicate that the material came from another source, is also considered a form of plagiarism. Copying someone else's program, and turning it in as if it were your own work, is also considered plagiarism.
Student Disability Resource Center
Dean of Students Department
08 Kellum Hall
Florida State University
Tallahassee, FL 32306-4400
(850) 644-9566 (voice)
(850) 644-8504 (TDD)
SDRC@admin.fsu.edu
http://www.fsu.edu/~staffair/dean/StudentDisability/
Week Lecture Chapter Assignments 1 5 Jan No class 7 Jan Introduction
Read: GJ -- Chapter 1.2 12 Jan Theory of NP completeness
Read: GJ -- Sec 2.1 - sec 2.5, CLR -- Sec 34.214 Jan NP completeness of circuit satisfiability
Read: CLR -- Sec 34.33 19 Jan Martin Luther King day -- no class. 21 Jan Proving NP completeness by reductions
Read: CLR -- Theorems 34.9 and 34.10, GJ -- Sec 3.1.14 26 Jan NP completeness of vertex cover
Read: GJ -- Sec 3.1.3Assignment 1 announced Jan 26. 28 Jan Techniques for proving NP completeness
Read: GJ -- Sec 3.25 2 Feb NP hardness and approximation
Read: GJ -- Chapter 5, AA -- Sec A.3 (in the appendix)Assignment 1 due Feb 6. 4 Feb Introduction to approximation algorithms
Read: AA -- Chapter 1.6 9 Feb Set cover
Read: AA -- Chapter 2.Project topic due Feb 12. 11 Feb Knapsack
Read: AA -- Chapter 8.7 16 Feb Minimum makespan
Read: AA -- Chapter 10.Project topic, abstract, and reference(s) due Feb 20. 18 Feb Introduction to LP-duality
Read: AA -- Chapter 12.8 23 Feb Introduction to LP-duality -- continued
Read: AA -- Chapter 12.Assignment 2 announced Feb 24. 25 Feb Set cover via dual fitting
AA -- Chapter 13.9 1 Mar Rounding applied to set cover
Read: AA -- Chapter 14.Assignment 2 due Mar 5. 3 Mar Set cover via primal-dual schema
Read: Chapter 15.10 8 Mar Spring break -- no class 10 Mar Spring break -- no class 11 15 Mar Midterm review 17 Mar Midterm 12 22 Mar Hardness of approximation
Read: Handout.Project progress report due Mar 26. 24 Mar Hardness of approximation
Read: Handout.13 29 Mar Introduction to parallel algorithms
Read: Class notes.31 Mar Parallel sorting
Read: Handout.14 5 Apr Graph partitioning for parallel computing
Read: Handout on spectral method.7 Apr Dynamic load balancing in parallel computing
Read: Handout.15 12 Apr Randomized quicksort
Read: Handout.Assignment 3 announced Apr 13. 14 Apr Randomized selection
Read: Handout.16 19 Apr Project presentations. Project report due Apr 19.
Assignment 3 due Apr 23.21 Apr Project presentations. 17 28 Apr Final exam 12:30 pm - 2:30 pm
This syllabus is a guide for the course and is subject to change with advanced notice.