#
Algorithm
2학년 1학기까지 습득한 C/C++ 프로그래밍 능력과 자료구조 이론의 이해 및 구현 능력을 바탕으로, 컴퓨터를 통한 추상적인 문제의 효과적인 해결에 기초가 되는 알고리즘의 설계/분석/구현 기법을 익힘을 목표로 한다.
이를 위하여,
① 문제 분석/풀이 기법 도출/풀이 기법의 비용 분석 ß 주요 내용
② C/C++ 언어를 통한 자신의 풀이 기법의 최적의 구현,
③ 자신의 소프트웨어 구현물에 대한 분석 과정에 대하여 익히도록 한다
#
컴퓨터공학 전공자로서 본 수업을 통하여 습득하려는 능력
이러한 능력을 습득하기 위하여 상당한 시간에 걸쳐 반복적인 노력이 필요함
- Algorithm에 대한 정의와 complexity와 computability 개념에 대한 이해
- Asymptotic analysis of time/space complexity 개념에 대한 이해
- Worst-case versus average-case
- Recursion 개념의 활용
- (Mathematical induction을 통한) algorithm correctness 증명 능력
- Dynamic set의 표현 및 응용 능력
- Priority queue 구조
- Disjoint set 구조
- Divide-and-conquer 기법에 대한 이해 및 응용 능력
- Sorting 방법에 대한 이해 및 구현 기법 습득
- Dynamic programming 기법에 대한 이해 및 응용 능력
- Greedy approach에 대한 이해 및 응용 능력
- Graph 구조 표현 기법 구현 및 관련 알고리즘 응용 능력
- Intractable Problem과 근사 알고리즘에 대한 이해 (희망 사항)
#
예상 진도 (2020학년도 2학기)
- W1: 9/1, 9/3 Introduction to Design and Analysis of Algorithm
- W2: 9/8, 9/10 Priority Queues and Applications (Review)
- W3: 9/15, 9/17 Practice of Complexity Analysis through Example Problems
- W4: 9/22, 9/24 Divide-and-Conquer Techniques
- W5: 9/29, 10/1추석 Divide-and-Conquer Techniques and Sorting
- W6: 10/6, 10/8 Dynamic Programming Techniques
- W7: 10/13, 10/15 Dynamic Programming and Applications
- W8: 10/19 ~ 10/23 정확한 시험 시간은 추후 공지 예정 MIDTERM
- W9: 10/27, 10/29 Greedy Techniques
- W10: 11/3, 11/5 Greedy Techniques and Scheduling Algorithms
- W11: 11/10, 11/12 Introduction to Graph Data Structures
- W12: 11/17, 11/19 Graph Algorithms and Applications I
- W13: 11/24, 11/26 Graph Algorithms and Applications II
- W14: 12/1, 12/3 Introduction to NP-Completeness
- W15: 12/8, 12/10 Intractable Problems and Approximation Algorithms 또는 진도 보충
#
교재 및 참고 도서
- Neapolitan, Foundations of Algorithms (5th ed.), Jones & Bartlett, 2015.
- Cormen et al., Introduction to Algorithms (3rd ed.), The MIT Press, 2009.
- Roughgarden, Algorithms Illuminated, Part 1~3, Soundlikeyourself Publishing, 2018.
- Kleinberg and E. Tardos, Algorithm Design, Addison Wesley, 2005.
- Sedgewick and K. Wayne, Algorithms (4th ed.), Addison-Wesley, 2011.
- Dasgupta et al., Algorithms, McGraw-Hill Education, 2006.
- Baase and A. Van Gelder, Computer Algorithms: Introduction to Design and Analysis, Addison Wesley, 2000.
- Horowitz et al., Fundamentals of Data Structures in C, Computer Science Press, 1993.
- Skiena, The Algorithm Design Manual (2nd ed.), Springer, 2008.
- Aho, J. Hopcroft, and J. Ullman, Design and Analysis of Algorithms, Addison-Wesley, 1974.
- Weiss, Data Structure and Algorithm Analysis in C (2nd ed.), Pearson, 1997.
- Levitin, Introduction to the Design and Analysis of Algorithms, Addison Wesley, 2003.
- Aho, J. Hopcroft, and J. Ullman, Data Structures and Algorithms, Addison-Wesley, 1983.
- Horowitz, S. Sahni and S. Rajasekaran, Computer Algorithms/C++, Computer Science Press, 1997.
- Sedgewick, Algorithms in C: Parts 1-4 (3rd ed), Addison-Wesley, 1998.
- Sedgewick, Algorithms in C: Parts 5 (3rd ed), Addison-Wesley, 2002.
8 적절한 교재를 선택하여 관련된 내용을 자세하게 읽기를 권장함
#
강의 자료 순서
[주제 1] Introduction to Algorithms and Complexity
[주제 2] Heap-based Priority Queues and Heap Sort (Review)
[주제 3] Divide-and-Conquer Techniques and Sorting Techniques
[주제 4] Dynamic Programming
[주제 5] Greedy Methods
[주제 6] Graph Algorithms
[주제 7] Intractable Problems and Approximation Algorithms
[주제 8] More on Priority Queues and Hashing