1장 주가 스팬
1.1 알고리즘
1.2 실행 시간과 복잡도
1.3 스택을 사용하는 주가 스팬
2장 미로 탐색
2.1 그래프
2.2 그래프 표현
2.3 깊이 우선 탐색
2.4 너비 우선 탐색
3장 압축
3.1 압축
3.2 트리와 우선순위 큐
3.3 허프만 코딩
3.4 LZW 압축
4장 암호
4.1 복호화 문제
4.2 일회성 패드
4.3 AES 암호
4.4 디피-헬먼 키 교환
4.5 빠른 모듈러 거듭제곱
5장 암호 분리
5.1 공개키 암호화
5.2 RSA 암호 체계
5.3 메시지 해싱
5.4 인터넷 트래픽 익명화
6장 작업 순서
6.1 위상 정렬
6.2 가중치 그래프
6.3 임계 경로
7장 행, 문단, 경로
7.1 최단 경로
7.2 데이크스트라 알고리즘
8장 라우팅과 중개
8.1 인터넷 라우팅
8.2 벨만-포드(-무어 알고리즘
8.3 음의 가중치와 순환
8.4 차익 거래
9장 무엇이 가장 중요한가
9.1 페이지랭크
9.2 하이퍼링크 행렬
9.3 누승법
9.4 구글 행렬
10장 투표 우열 측정
10.1 선거 제도
10.2 슐츠 방법
10.3 플로이드-워셜 알고리즘
11장 무차별 대입 검색과 비서 문제 그리고 양분
11.1 순차 검색
11.2 매칭, 비교, 레코드, 키
11.3 마태 효과와 멱 법칙
11.4 자기 조직화 검색
11.5 비서 문제
11.6 이진 검색
11.7 컴퓨터에서의 정수 표현
11.8 이진 검색으로 되돌아가서
11.9 비교 트리
12장 다양한 정렬 알고리즘
12.1 선택 정렬
12.2 삽입 정렬
12.3 힙 정렬
12.4 병합 정렬
12.5 퀵 정렬
12.6 무엇을 선택할까
13장 검색: 휴대품 보관소, 비둘기, 버킷
13.1 키 값 매핑
13.2 해싱
13.3 해시 함수
현실 세계 문제를 해결해 보며 컴퓨팅 사고의 핵심인 알고리즘을 배운다!
실용적인 알고리즘의 구현 방법을 배워본다.
이 책은 컴퓨터과학의 문제 해결 방법인 알고리즘이 현실 세계 문제들을 어떤 방식으로 해결하는지 보여준다. 금융 거래, 웹 페이지에서 중요도 결정, 선거 문제에서 투표 우열 계산, 스트리밍 데이터 검색 등 현실 세계에서 일어나는 일들을 예로 들어 알고리즘이 작동하는 방식과 그것을 활용하는 방식을 알려준다. 이 책을 통해 경제와 경영, 생활과 사회학, 수학과 통계 등 다양한 분야에서 활용할 수 있는 알고리즘의 구현 방법을 살펴볼 수 있다.
직관적이고 이해하기 쉽게 의사 코드로 설명한다.
의사 코드는 프로그래밍 언어가 가진 약점을 살짝 피해 갈 수 있어서 실제 프로그래밍 코드보다 더 쉽게 이해할 수 있고 추론하기도 때로는 더 쉽다. 또한, 개발할 때 구문에 주의를 기울여야 하는 부분에서 실제 코드보다 의사 코드로 기술하는 것이 알고리즘을 구현하기가 더 쉽다. 그래서 이 책에서는 특정 프로그래밍 언어가 아닌 의사 코드로 알고리즘을 설명한다.
책 속으로
미로 탐색은 오래된 문제다. 이 문제의 시작은 크레타의 미노스 왕이 전쟁에서 진 아테네 왕에게 7년마다 남녀 각각 7명을 크레타로 보내게 한 이야기로 거슬러 올라간다. 크레타로 온 남녀는 사람의 몸과 황소의 머리를 한 괴물인 미노타우로스가 사는 미궁에 던져졌다. 이 미궁은 매우 복잡한 미로여서 불운한 희생자들은 미노타우로스에게 잡아 먹힐 운명이었다. 세 번째로 공물을 바칠 때가 되자 아테네의 테세우스가 자원했다. 테세우스가 크레타섬에 도착했을 때 미노스 왕의 딸 아리아드네는 그에게 반해서 그를 돕기 위해 실뭉치를 주었다. 테세우스는 미궁에 들어가 미노타우로스를 발견하고 죽인 후 실을 사용하여 출구를 찾아냈다. --- 42쪽
차익 거래 프로그램은 교환하고 사고팔 수 있는 상품 집합을 포함한다. 그러한 상품을 예로 들면 구리, 납, 아연 같은 산업용 금속과 유로, 달러 같은 통