'Computer Science/알고리즘'에 해당되는 글 22건
- Quiz 01 2011.04.12
- Algorithm, Spring 2011 2011.04.11
- HW#10 : Chained Matrix Multiplication의 구현과 예제의 동작 과정을 보이시오. 2011.04.11
- HW#09 : 연쇄행렬곱셈 문제에 대해 D&C 접근 방법을 쓰지 않는 이유? 2 2011.03.31
- HW#08 : ASAP 관련된 문제 2011.03.31
- HW#07 : APSP 문제 풀이 2011.03.31
- HW#06 : Dynamic Programming을 이용한 Binomial Coefficient 문제 해결 2011.03.31
- HW#05 : Quick Sort의 구현과 예제의 동작 과정을 보이시오. 2011.03.24
- HW#04 : Merge Sort의 구현과 예제의 동작 과정을 보이시오. 2011.03.21
- HW#03 : 분할을 두 개로 하는 경우가 많다. 왜 두 개를 사용하는가? 1 2011.03.21
Quiz 01Quiz 01
Posted at 2011. 4. 12. 19:50 | Posted in Computer Science/알고리즘알고리즘 앞반 퀴즈
A에서 J도시까지 최소비용경로 구하기.
알고리즘 뒷반 퀴즈
배낭채우기 문제.
'Computer Science > 알고리즘' 카테고리의 다른 글
HW#12 : Prim's Algorithm의 구현과 예제의 동작과정을 보이시오. (0) | 2011.04.28 |
---|---|
HW#11 : MST 계산법 중 BF, DC, DP 접근 방법의 한계점 (0) | 2011.04.28 |
Algorithm, Spring 2011 (0) | 2011.04.11 |
HW#10 : Chained Matrix Multiplication의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.04.11 |
HW#09 : 연쇄행렬곱셈 문제에 대해 D&C 접근 방법을 쓰지 않는 이유? (2) | 2011.03.31 |
Algorithm, Spring 2011Algorithm, Spring 2011
Posted at 2011. 4. 11. 04:09 | Posted in Computer Science/알고리즘Algorithm, Spring 2011
Course Description and Goals
본 과목은 컴퓨터공학에서 다루는 문제들을 해결하기 위한 가장 기본적이며 중요한 원칙들과 해결기법 및 전략에 대해서 강의한다. 컴퓨터공학부 3학년이 수강대상이며, 이에 준하는 수준에서 강의를 진행한다.
컴퓨터공학의 다양한 문제해결을 위한 전략을 설계하고 분석하는 것을 주요 강의 내용으로 다루며, 수강생들이 이를 효과적으로 습득하기 위해서 선수과목으로 프로그래밍 관련 과목과 데이터구조 분석/설계를 필히 이수하고 수강하여야 한다. 선수과목에서 다루어진 내용에 대해서는 강의를 생략할 예정이며, 선수과목을 미이수한 학생들은 수강신청 시 유의하여야 한다.
본 과목의 목표는 학생들이 한 학기 알고리즘을 수강한 후, 이후 직면할 수 있는 다양한 컴퓨터공학의 문제들을 효과적으로 해결할 수 있는 컴퓨터공학적 사고를 할수 있도록 하는 것이며, 주어진 문제에 대해서 가장 효과적인 접근방식 및 전략 (Approach and Strategy)를 설계하고, 제안한 알고리즘에 대한 수학적 분석을 통해 그 우월성을 입증할 수 있는 능력을 배양하게 된다.
본 과목에 대한 컴퓨터공학심화 프로그램 교과목 학습성과 구성은 다음과 같음: 학습성과-1(20%), 학습성과-2(30%), 학습성과-3(30%), 학습성과-4(20%)
Course Procedures and Evaluation
강의는 지도교수에 의한 이론강의를 중심으로 하며, 학생들의 수업참여도를 높이기 위한 질의응답, 토론을 적극 활용한다. 학생들은 제시된 교재의 심화된 내용을 반드시 스스로 학습하여 자신만의 알고리즘 설계 및 분석 능력을 습득할 수 있어야 한다.
또한, 학습한 내용에 대한 적극적인 습득을 위해 정기적인 숙제 및 퀴즈를 실시한다. 숙제는 워드프로세서를 사용하지 않고, 자신만의 유일한 예제를 만들고 연필을 이용하여 손으로 직접 풀어서 제출한다.
평가는 중간고사, 기말고사, PreTest, 퀴즈 및 숙제 점수를 반영하여 최종 성적을 산출함.
1. 중간고사는 30점 만점으로 실시함.
2. 기말고사는 30점 만점으로 실시함.
3. PreTest는 10점 만점으로 실시함 (2회:5점/회).
4. 퀴즈 및 숙제는 30점 만점으로 실시함 (퀴즈 2회:4점/회, 숙제 22회:1점/회)
Reference Textbooks
1. Foundations of Algorithms Using C++ Pseudocode by R. Neapolitan et al., Addison Wesley.
3. Introduction to Algorithms by T.H. Cormen et al., MIT Press.
Lecture Schedule and Homeworks
WEEK 1: Introduction and Design & Analysis of Algorithm
WEEK 2: Divide and Conquer (Binary Search and Merge Sort)
WEEK 3: Divide and Conquer (Quick Sort), Dynamic Programming (Binomial Coefficient)
WEEK 4: Dynamic Programming (Bionomial Coefficient, All-Pairs SP)
WEEK 5: Dynamic Programmin (All-Pairs SP, Chained Matrix Multiplication)
WEEK 6: Dynamic Programming (CMM) and Greedy (Minimum Spanning Trees)
WEEK 7: Greedy (Minimum Spanning Trees) and Pre-Test
WEEK 8: Mid-Term Exam
WEEK 9: Dynamic Programming vs Greedy (The Knapsack Problem)
WEEK 10: Backtracking (N-Queens/ Sum-of-Subsets/ Graph Coloring Problem)
WEEK 11: Backtracking (TSP Problem, 0/1 Knapsack Problem)
WEEK 12: Branch and Bound (0/1 Knapsack Problem), Best-First Search
WEEK 13: Theory of NP (Decision Problem, Optimization Problem)
WEEK 14: Theory of NP (NP-Complete Problem)
WEEK 15: Theory of NP (NP-Hard Problem, Approximation Algorithm) and Pre-Test
WEEK 16: Final Exam
'Computer Science > 알고리즘' 카테고리의 다른 글
HW#11 : MST 계산법 중 BF, DC, DP 접근 방법의 한계점 (0) | 2011.04.28 |
---|---|
Quiz 01 (0) | 2011.04.12 |
HW#10 : Chained Matrix Multiplication의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.04.11 |
HW#09 : 연쇄행렬곱셈 문제에 대해 D&C 접근 방법을 쓰지 않는 이유? (2) | 2011.03.31 |
HW#08 : ASAP 관련된 문제 (0) | 2011.03.31 |
HW#10 : Chained Matrix Multiplication의 구현과 예제의 동작 과정을 보이시오.HW#10 : Chained Matrix Multiplication의 구현과 예제의 동작 과정을 보이시오.
Posted at 2011. 4. 11. 04:05 | Posted in Computer Science/알고리즘'Computer Science > 알고리즘' 카테고리의 다른 글
Quiz 01 (0) | 2011.04.12 |
---|---|
Algorithm, Spring 2011 (0) | 2011.04.11 |
HW#09 : 연쇄행렬곱셈 문제에 대해 D&C 접근 방법을 쓰지 않는 이유? (2) | 2011.03.31 |
HW#08 : ASAP 관련된 문제 (0) | 2011.03.31 |
HW#07 : APSP 문제 풀이 (0) | 2011.03.31 |
HW#09 : 연쇄행렬곱셈 문제에 대해 D&C 접근 방법을 쓰지 않는 이유?HW#09 : 연쇄행렬곱셈 문제에 대해 D&C 접근 방법을 쓰지 않는 이유?
Posted at 2011. 3. 31. 15:28 | Posted in Computer Science/알고리즘'Computer Science > 알고리즘' 카테고리의 다른 글
Algorithm, Spring 2011 (0) | 2011.04.11 |
---|---|
HW#10 : Chained Matrix Multiplication의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.04.11 |
HW#08 : ASAP 관련된 문제 (0) | 2011.03.31 |
HW#07 : APSP 문제 풀이 (0) | 2011.03.31 |
HW#06 : Dynamic Programming을 이용한 Binomial Coefficient 문제 해결 (0) | 2011.03.31 |
HW#08 : ASAP 관련된 문제HW#08 : ASAP 관련된 문제
Posted at 2011. 3. 31. 15:27 | Posted in Computer Science/알고리즘'Computer Science > 알고리즘' 카테고리의 다른 글
HW#10 : Chained Matrix Multiplication의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.04.11 |
---|---|
HW#09 : 연쇄행렬곱셈 문제에 대해 D&C 접근 방법을 쓰지 않는 이유? (2) | 2011.03.31 |
HW#07 : APSP 문제 풀이 (0) | 2011.03.31 |
HW#06 : Dynamic Programming을 이용한 Binomial Coefficient 문제 해결 (0) | 2011.03.31 |
HW#05 : Quick Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.24 |
HW#07 : APSP 문제 풀이HW#07 : APSP 문제 풀이
Posted at 2011. 3. 31. 15:26 | Posted in Computer Science/알고리즘'Computer Science > 알고리즘' 카테고리의 다른 글
HW#09 : 연쇄행렬곱셈 문제에 대해 D&C 접근 방법을 쓰지 않는 이유? (2) | 2011.03.31 |
---|---|
HW#08 : ASAP 관련된 문제 (0) | 2011.03.31 |
HW#06 : Dynamic Programming을 이용한 Binomial Coefficient 문제 해결 (0) | 2011.03.31 |
HW#05 : Quick Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.24 |
HW#04 : Merge Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.21 |
HW#06 : Dynamic Programming을 이용한 Binomial Coefficient 문제 해결HW#06 : Dynamic Programming을 이용한 Binomial Coefficient 문제 해결
Posted at 2011. 3. 31. 00:06 | Posted in Computer Science/알고리즘#include <stdio.h> #include <stdlib.h> int minimum(int i, int k) { if(i < k) return i; else return k; } int bin2(int n, int k) { // Valable Decaltion int i = 0; int j = 0; int **B = NULL; int returnValue = 0; // Matrix Initialization B = (int**)malloc(sizeof(int*) * (n+1)); for(i = 0; i < n+1; i++) B[i] = (int*)malloc(sizeof(int) * (k+1)); for(i = 0; i < n+1; i++) for(j = 0; j < k+1; j++) B[i][j] = 0; // Binomial Coefficient for(i = 0; i <= n; i++) for(j = 0; j <= minimum(i,k); j++) if(j == 0 || j == i) B[i][j] = 1; else B[i][j] = B[i-1][j-1] + B[i-1][j]; returnValue = B[n][k]; // Matrix Uninitialization for(i = 0; i < n+1; i++) free(B[i]); free(B); return returnValue; } int main(int argc, char argv[]) { printf("B[4][2] = %d\n", bin2(4,2)); return 0; }
'Computer Science > 알고리즘' 카테고리의 다른 글
HW#08 : ASAP 관련된 문제 (0) | 2011.03.31 |
---|---|
HW#07 : APSP 문제 풀이 (0) | 2011.03.31 |
HW#05 : Quick Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.24 |
HW#04 : Merge Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.21 |
HW#03 : 분할을 두 개로 하는 경우가 많다. 왜 두 개를 사용하는가? (1) | 2011.03.21 |
HW#05 : Quick Sort의 구현과 예제의 동작 과정을 보이시오.HW#05 : Quick Sort의 구현과 예제의 동작 과정을 보이시오.
Posted at 2011. 3. 24. 11:05 | Posted in Computer Science/알고리즘'Computer Science > 알고리즘' 카테고리의 다른 글
HW#07 : APSP 문제 풀이 (0) | 2011.03.31 |
---|---|
HW#06 : Dynamic Programming을 이용한 Binomial Coefficient 문제 해결 (0) | 2011.03.31 |
HW#04 : Merge Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.21 |
HW#03 : 분할을 두 개로 하는 경우가 많다. 왜 두 개를 사용하는가? (1) | 2011.03.21 |
HW#02 : N개의 배열을 이분 검색을 할 때 시스템 스택의 깊이는? (0) | 2011.03.21 |
HW#04 : Merge Sort의 구현과 예제의 동작 과정을 보이시오.HW#04 : Merge Sort의 구현과 예제의 동작 과정을 보이시오.
Posted at 2011. 3. 21. 22:41 | Posted in Computer Science/알고리즘1. 리스트를 이등분 한다.(Divide)
2. 이등분된 리스트 두개를 정렬한다.(Conquer)
3. 이등분된 리스트를 병합하여 하나의 리스트로 만든다.(Combie)
다음은 Merge Sort를 C언어로 구현한 것이다.
(소스 생략)
(예제 생략)
'Computer Science > 알고리즘' 카테고리의 다른 글
HW#06 : Dynamic Programming을 이용한 Binomial Coefficient 문제 해결 (0) | 2011.03.31 |
---|---|
HW#05 : Quick Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.24 |
HW#03 : 분할을 두 개로 하는 경우가 많다. 왜 두 개를 사용하는가? (1) | 2011.03.21 |
HW#02 : N개의 배열을 이분 검색을 할 때 시스템 스택의 깊이는? (0) | 2011.03.21 |
HW#01 : 피보나치 수열의 값 찾기 문제에 대한 두 가지 접근법에 대한 일반화 (0) | 2011.03.17 |
HW#03 : 분할을 두 개로 하는 경우가 많다. 왜 두 개를 사용하는가?HW#03 : 분할을 두 개로 하는 경우가 많다. 왜 두 개를 사용하는가?
Posted at 2011. 3. 21. 22:38 | Posted in Computer Science/알고리즘K-Way Merge Sort를 예로 들어 보면 K값을 3으로 할 수도 있고 2로 할 수도 있다. 2-Way Merge Sort와 3-Way Merge Sort의 시간복잡도(Time Complexity)를 생각해 보아야 한다. Divide and Conquer Approach의 경우 T(n) = Divide + Conquer + Combie 시간을 생각해 보아야 한다.
K = 2 인 경우, T(n) = 0 + T(n/2) + T(n/2) + n/2 + n/2 - 1
K = 3 인 경우, T(n) = 0 + T(n/3) + T(n/3) + T(n/3) + n/3 + n/3 + n/3 - 1
결국 입력 원소의 개수가 크다면 K 값이 큰 것이 되부름(Recursion)을 적게 하여 유리하다. 또한 병렬 처리를 할 경우 K 값이 큰 것이 좋다. 하지만 3-Way Merge Sort는 병합 과정이 복잡하기 때문에 메모리의 Activation Record를 낭비해서라도 2-Way Merge Sort를 사용한다.
'Computer Science > 알고리즘' 카테고리의 다른 글
HW#06 : Dynamic Programming을 이용한 Binomial Coefficient 문제 해결 (0) | 2011.03.31 |
---|---|
HW#05 : Quick Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.24 |
HW#04 : Merge Sort의 구현과 예제의 동작 과정을 보이시오. (0) | 2011.03.21 |
HW#02 : N개의 배열을 이분 검색을 할 때 시스템 스택의 깊이는? (0) | 2011.03.21 |
HW#01 : 피보나치 수열의 값 찾기 문제에 대한 두 가지 접근법에 대한 일반화 (0) | 2011.03.17 |