1 알고리즘은 중요하다 문제를 이해한다 ... 20 필요하다면 실험해본다 ... 22 구원의 알고리즘 ... 25 또 다른 이야기 ... 26 이 이야기의 교훈 ... 28 참고자료 ... 28 2 알고리즘의 수학 문제 인스턴스의 크기 ... 29 함수의 증가율 ... 32 최고, 평균, 최저 상황에 대한 분석 ... 37 성능 계열 ... 41 연산의 혼합 ... 55 성능측정 연산 ... 56 마지막 한 가지 ... 59 참고자료 ... 59 3 패턴과 도메인 패턴: 의사전달을 위한 언어 ... 62 알고리즘 패턴의 형식 ... 63 의사코드 패턴 형식 ... 65 설계 형식 ... 66 실험 평가 형식 ... 68 도메인과 알고리즘 ... 69 부동소수점 계산 ... 70 수동 메모리 할당 ... 74 프로그램 언어의 선택 ... 77 참고자료 ... 78 4 정렬 알고리즘 개요 ... 81 삽입 정렬 ... 88 중앙값 정렬 ... 93 빠른정렬 ... 106 선택 정렬 ... 114 힙 정렬 ... 115 계수 정렬 ... 120 버킷 정렬 ... 123 정렬 알고리즘의 선택 기준 ... 129 참고자료 ... 134 5 검색 개요 ... 135 순차 검색 ... 136 이진 검색 ... 143 해시 기반 검색 ... 148 이진 트리 검색 ... 163 참고자료 ... 171 6 그래프 알고리즘 개요 ... 173 깊이 - 우선 검색 ... 181 너비 - 우선 검색 ... 188 단일 출발지 최단 거리 ... 192 모든 쌍 최단 경로 ... 205 최소 신장 트리 알고리즘 ... 210 참고자료 ... 213 7 인공지능으로 경로 찾기 개요 ... 215 게임 트리 ... 216 검색 트리 ... 219 깊이 - 우선 검색 ... 225 너비 - 우선 검색 ... 235 A* 검색 ... 240 미니맥스 ... 255 네그맥스 ... 261 알파베타 ... 265 참고자료 ... 272 8 네트워크 흐름 알고리즘 개요 ... 275 최대 흐름 ... 278 이분 맞춤 ... 290 여유 경로에 대한 고찰 ... 293 최소 비용 흐름 ... 298 옮겨싣기 ... 299 수송 ... 300 할당 ... 301 선형 계획법 ... 301 참고자료 ... 303 9 계산 기하학 개요 ... 305 볼록 껍질 스캔 ... 315 라인스위프 ... 324 최근접 이웃 질의 ... 336 범위 질의 ... 348 참고자료 ... 355 10 모든 방법이 실패할 때 가정의 변화 ... 357 근사 알고리즘 ... 358 오프라인 알고리즘 ... 358 병렬 알고리즘 ... 359 무작위 알고리즘 ... 359 아주 가끔 틀릴 수도 있는 알고리즘 ... 368 참고자료 ... 372 11 후기 개요 ... 373 원칙: 자료를 이해한다 ... 373 원칙: 작은 문제로 나눈다 ... 374 원칙: 적합한 자료구조를 선택한다 ... 375 원칙: 성능을 높이려면 저장공간을 추가한다 ... 376 원칙: 확실한 해결책이 없다면, 검색을 구성해본다 ... 377 원칙: 확실한 해결책이 없다면, 해결책이 있는 다른 문제로 환원한다 ... 378 원칙: 알고리즘을 작성하는 건 어렵다 - 알고리즘을 시험하는 건 더 어렵다 ... 379 부록 성능측정 통계의 기초 ... 381 하드웨어 ... 383 예에 관하여 ... 383 찾아보기 ... 396