Professional Documents
Culture Documents
1장 알고리즘 소개
1장 알고리즘 소개
알고리즘
이충기 지음
Algorithm
CHAPTER
01
알고리즘
소개
1.1 알고리즘이란 ?
1.2 알고리즘적 문제 해결 과정
1.3 알고리즘의 표현
1.4 알고리즘의 분류
Algorithm
알고리즘이란 ?
예 : 요리법 , 길 찾기
알고리즘의 개념
알고리즘의 3 가지 조건
1. 명확성
– 알고리즘의 각 단계는 애매모호하지 않고 명확해야 한다 .
2. 정확성
– 모든 유효한 입력에 대해 올바른 해를 출력해야 한다 .
3. 정지성
– 유효한 입력이 주어지면 유한한 시간 내에 종료되어야 한다 .
알고리즘의 3 가지 조건
합 계산 알고리즘의 실행 결과
알고리즘이 아닌 예
product = 0
while (product < 20) {
product = product * 2
}
‘ 홍길동’ 찾는 문제
문제 해결 과정
증명 방법 예 : 수학적 귀납법
1. 시간 효율성
– 얼마나 빨리 실행되는 지를 나타낸다 .
2. 공간 효율성
– 컴퓨터 메모리를 얼마나 사용하는지를 나타낸다 .
3. 코드 효율성
– 코드가 얼마나 이해하기 쉬운가를 나타낸다 .
자연어 ( 한글 또는 영어 )
의사 코드 (Pseudocode)
순서도 (Flowchart)
프로그래밍 언어 ( 자바 , C 또는 파이선 등 )
예 : 최댓값 찾기 알고리즘 – 한글
FindMaximum(A[0 . . N - 1])
// 배열 내의 최댓값을 찾는다 .
// 입력 : 크기가 N(> 1) 인 숫자들의 배열 A
// 출력 : 배열 A 내의 최댓값
max = A[0]
return max
최댓값을 구하는 과정
알고리즘 설계 기법
분할 정복 (Divide-and-Conquer)
동적 계획 (Dynamic Programming)
탐욕 기법 (Greedy Technique)
되추적 (Backtracking)
분기한정 (Branch-and-Bound)
알고리즘 설계 기법
억지 기법 (brute-force technique)
근사 (approximate) 알고리즘
병렬 (parallel) 알고리즘
분산 (distributed) 알고리즘
양자 (quantum) 알고리즘
정렬 (sorting) 알고리즘
탐색 (searching) 알고리즘
조합 (combinatorial) 알고리즘
수치 (numerical) 알고리즘
문제 해결 과정들
– 문제 이해
– 알고리즘 설계
– 정확성 증명
– 효율성 분석
– 구현
알고리즘 표현 : 자연어 ( 한글 또는 영어 ), 의사 코드