Holiday
DELTA台達107 W3W4F3
In this course, we will look at a lot of fundamental problems that are solved daily around us, and we will study their solutions (that is, the methods or the algorithms), and show how to analyze the performance of the solutions. We will also introduce general techniques to help us design a good algorithm when we face a new problem.
Course keywords: Algorithms, Design, Performance Analysis, Complexity, Correctness 一、課程說明 (Course Description) There are many problems around us, and they need some fast and good methods to be solved. For instance, (i) Suppose that we have been very lazy the last few weeks, and suddenly, we find that 10 homeworks A,B,C,D,E,..., J will be due next week. The homeworks have different deadlines, and some will be on Monday, some will be on Friday. We have an estimation of how fast we can finish each homework. Questions: Can we finish all of them? If so, which one should we do first, which one next? (ii) Suppose that our school has 100 landmarks (such as the library, the EECS building, the main gate, etc), and you want to design a system so that if a user enters any two landmarks (say, A and B), your system can immediately suggest a shortest route from A to B. Of course, you can find all the 100x100 routes by yourself, but it would be better if you can write a computer program to do it for you. Is there any efficient computer program for this problem? To solve a particular problem, there are usually many different methods. For instance, in Problem (i), we can try all possible arrangements of the homeworks A,B,C,D,E, ... and see if they can all be finished in time. However, we need to try 10! arrangements, and this would take a long time. On the other hand, if we want to finish all the homeworks, it seems that we should do the one whose deadline is nearest first, and then do the one whose deadline is second nearest, and so on. There may be other methods we can try. One question arises: Among all methods, is there one which is always faster and better than the others? In this course, we will look at a lot of fundamental problems that are solved daily around us, and we will study their solutions (that is, the methods or the algorithms), and show how to analyze the performance of the solutions. We will also introduce general techniques to help us design a good algorithm when we face a new problem. 二、指定用書 (Text Book) Introduction to algorithms, 2nd edition, the MIT press, 2001 by T. Cormen, C. E. Leiserson, and R. L. Rivest 三、參考書籍 (References) 1. Algorithms in C++, (or Algorithms in Java), by R. Sedgewick 2. The Art of Computer Programming, by D. E. Knuth 四、教學方式 (Teaching Method) Lectures and Tutorials (in English) 五、教學進度 (Syllabus) I. Mathematical Foundations 1. Introduction 2. Growth of Functions 3. Summations 4. Recurrences II. Sorting and Order Statistics 6. Heapsort 7. Quicksort 8. Sorting In Linear Time 9. Medians and Order Statistics III. Data Structures: Self Study IV. Advanced Design and Analysis Techniques 15. Dynamic Programming 16. Greedy Algorithms 17. Amortized Analysis V. Advanced Data Structures 19. Binomial Heaps 20. Fibonacii Heaps 21. Data Structures for Disjoint Sets VI. Graph Algorithms 22. Elementary Graph Algorithms 23. Minimum Spanning Trees 24. Single-Source Shortest Paths 25. All-Pairs Shortest Paths VII. Selected Topics 34. NP-Completeness 35. Approximation Algorithms 六、成績考核 (Evaluation) 5--6 assignments 0% 3 exams 100% ---------------------- Total 100% There are two formula for your final score: (1) 20 + (average of 3 exams) * 0.8 (2) (average of the best 2 exams) * 0.8 + (the worst one) * 0.2 Final score = Maximum of (1) and (2). 七、可連結之網頁位址 (Web links) www.cs.nthu.edu.tw/~wkhon/algo08.html
MON | TUE | WED | THU | FRI | |
08:00108:50 | |||||
09:00209:50 | |||||
10:10311:00 | |||||
11:10412:00 | |||||
12:10n13:00 | |||||
13:20514:10 | |||||
14:20615:10 | |||||
15:30716:20 | |||||
16:30817:20 | |||||
17:30918:20 | |||||
18:30a19:20 | |||||
19:30b20:20 | |||||
20:30c21:20 |
Average Percentage 68.49
Std. Deviation 15.57
電資院優先,第3次選課起開放全校修習
-