# Introduction To Algorithms

## Progress

* [ ] I 기초
  * [x] 개요
  * [ ] [1장. 알고리즘의 역할](https://novemberoscar.gitbook.io/auxiliary-memory/books/introduction-to-algorithms/1.1)
    * [x] 2020-04-30 1.1 알고리즘
    * [x] 2020-04-30 1.2 기술로서의 알고리즘
  * [ ] [2장. 시작하기](https://novemberoscar.gitbook.io/auxiliary-memory/books/introduction-to-algorithms/1.2)
    * [x] 2020-05-05 2.1 삽입 정렬
    * [ ] 2.2 알고리즘의 분석
    * [ ] 2.3 알고리즘의 설계
  * [ ] 3장. 함수의 증가
    * [ ] 3.1 점근적 표기
    * [ ] 3.2 표준 표기법과 흔히 사용되는 함수
  * [ ] 4장. 분할정복
    * [ ] 4.1 최대 부분배열 문제
    * [ ] 4.2 행렬 곱셈을 위한 스트라센 알고리즘
    * [ ] 4.3 점화식을 풀기 위한 치환법
    * [ ] 4.4 점화식을 풀기 위한 재귀 트리 방법
    * [ ] 4.5 점화식을 풀기 위한 마스터방법
    * [ ] 4.6 마스터 정리의 증명
  * [ ] 5장. 확률적 분석과 랜덤화된 알고리즘
    * [ ] 5.1 고용 문제
    * [ ] 5.2 지표 확률 변수
    * [ ] 5.3 랜덤화된 알고리즘
    * [ ] 5.4 확률적 분석과 지표 확률 변수의 기타 활용
* [ ] II 정렬과 순서 통계량
  * [ ] 개요
  * [ ] 6장. 힙 정렬
    * [ ] 6.1 힙
    * [ ] 6.2 힙 특성 유지하기
    * [ ] 6.3 힙 만들기
    * [ ] 6.4 힙 정렬 알고리즘
    * [ ] 6.5 우선순위 큐
  * [ ] 7장. 퀵 정렬
    * [ ] 7.1 퀵 정렬
    * [ ] 7.2 퀵 정렬의 성능
    * [ ] 7.3 랜덤화된 퀵 정렬
    * [ ] 7.4 퀵 정렬 분석
  * [ ] 8장. 선형 시간 정렬
    * [ ] 8.1 정렬의 하한
    * [ ] 8.2 계수 정렬
    * [ ] 8.3 기수 정렬
    * [ ] 8.4 버킷 정렬
  * [ ] 9장. 중앙값과 순서 통계량
    * [ ] 9.1 최솟값과 최댓값
    * [ ] 9.2 선형적인 평균 수행시간에 선택하기
    * [ ] 9.3 최악의 경우선형 시간에 선택하기
* [ ] III 자료구조
  * [ ] 개요
  * [ ] 10장. 기본 자료구조
    * [ ] 10.1 스택과 큐
    * [ ] 10.2 연결 리스트
    * [ ] 10.3 포인터와 객체 구현하기
    * [ ] 10.4 루트 있는 트리 표현하기
  * [ ] 11장. 해시 테이블
    * [ ] 11.1 직접 주소 테이블
    * [ ] 11.2 해시 테이블
    * [ ] 11.3 해시 함수
    * [ ] 11.4 개방 주소화 방법
    * [ ] 11.5 완전 해싱
  * [ ] 12장. 이진 검색 트리
    * [ ] 12.1 이진 검색 트리의 개념
    * [ ] 12.2 이진 검색 트리에 대한 질의
    * [ ] 12.3 삽입과 삭제
    * [ ] 12.4 임의로 만들어진 이진 검색 트리
  * [ ] 13장. 레드블랙 트리
    * [ ] 13.1 레드블랙 트리의 특성
    * [ ] 13.2 회전
    * [ ] 13.3 삽입
    * [ ] 13.4 삭제
  * [ ] 14장. 자료구조의 확장
    * [ ] 14.1 동적 순서 통계량
    * [ ] 14.2 자료구조 확장 기법
    * [ ] 14.3 구간 트리
* [ ] IV 고급 설계 및 분석 기법
  * [ ] 개요
  * [ ] 15장. 동적 프로그래밍
    * [ ] 15.1 막대 자르기
    * [ ] 15.2 행렬-체인 곱셈
    * [ ] 15.3 동적 프로그래밍의 요소
    * [ ] 15.4 최장 공통 부분 시퀀스
    * [ ] 15.5 최적 이진검색 트리
  * [ ] 16장. 그리디 알고리즘
    * [ ] 16.1 활동 선택 문제
    * [ ] 16.2 그리디 방법의 요소들
    * [ ] 16.3 허프만 코드
    * [ ] 16.4 매트로이드와 그리디 방법
    * [ ] 16.5 매트로이드로 작업 일정짜기 문제
  * [ ] 17장. 분할상환 분석
    * [ ] 17.1 총계 분석
    * [ ] 17.2 결산 방법
    * [ ] 17.3 잠재 비용 방법
    * [ ] 17.4 동적 테이블
* [ ] V 고급 자료 구조
  * [ ] 개요
  * [ ] 18장. B-트리
    * [ ] 18.1 B-트리의 개념
    * [ ] 18.2 B-트리의 기본연산
    * [ ] 18.3 B-트리에서 키삭제하기
  * [ ] 19장. 피보나치 힙
    * [ ] 19.1 피보나치 힙의 구조
    * [ ] 19.2 병합 가능한 힙 연산
    * [ ] 19.3 키 감소시키기와 노드 삭제하기
    * [ ] 19.4 최대 차수의 한계 정하기
  * [ ] 20장. 반 엠데 보아스 트리
    * [ ] 20.1 기본 방법
    * [ ] 20.2 재귀 구조
    * [ ] 20.3 반 엠데 보아스트리
  * [ ] 21장 서로 소 집합의 자료구조
    * [ ] 21.1 서로 소 집합의 연산
    * [ ] 21.2 서로 소 집합의 연결 리스트 표현
    * [ ] 21.3 서로 소 집합 포리스트
    * [ ] 21.4 경로 압축을 이용한 순위에 의한 합병의 분석
* [ ] VI 그래프 알고리즘
  * [ ] 개요
  * [ ] 22장. 기본 그래프 알고리즘
    * [ ] 22.1 그래프의 표현
    * [ ] 22.2 너비 우선 검색
    * [ ] 22.3 깊이 우선 검색
    * [ ] 22.4 위상 정렬
    * [ ] 22.5 강한 연결 요소
  * [ ] 23장. 최소 신장 트리
    * [ ] 23.1 최소 신장 트리의 확장
    * [ ] 23.2 크루스칼 알고리즘과 프림 알고리즘
  * [ ] 24장. 단일 출발지 최단 경로
    * [ ] 24.1 벨만-포드 알고리즘
    * [ ] 24.2 방향 비순환 그래프에서의 단일 출발점 최단 경로
    * [ ] 24.3 다익스트라 알고리즘
    * [ ] 24.4 차이 제약 조건과 최단 경로
    * [ ] 24.5 최단 경로특성의 증명
  * [ ] 25장. 모든 쌍의 최단 경로
    * [ ] 25.1 최단 경로와 행렬 곱셈
    * [ ] 25.2 플로이드-워샬 알고리즘
    * [ ] 25.3 희소 그래프에 대한 존슨 알고리즘
  * [ ] 26장. 최대 플로우
    * [ ] 26.1 플로우 네트워크
    * [ ] 26.2 포드-풀커슨 방법
    * [ ] 26.3 최대 이분 매칭
    * [ ] 26.4 푸시-재명명 알고리즘
    * [ ] 26.5 재명명후-앞보내기 알고리즘
* [ ] VII 알고리즘 분야의 중요한 토픽
  * [ ] 개요
  * [ ] 27장 멀티스레드 알고리즘
    * [ ] 27.1 동적 멀티스레딩의 기본
    * [ ] 27.2 멀티스레드 행렬의 곱셈
    * [ ] 27.3 멀티스레드 병합 정렬
  * [ ] 28장. 행렬의 연산
    * [ ] 28.1 선형 연립방정식의 해
    * [ ] 28.2 역행렬
    * [ ] 28.3 양으로 정의된 대칭 행렬과 최소-제곱 근사
  * [ ] 29장. 선형 계획법
    * [ ] 29.1 정규형과 이완형
    * [ ] 29.2 문제의 선형 계획법 구성
    * [ ] 29.3 심플렉스 알고리즘
    * [ ] 29.4 쌍대성
    * [ ] 29.5 초기 가능한 기본해
  * [ ] 30장. 다항식과 FFT
    * [ ] 30.1 다항식의 표현
    * [ ] 30.2 DFT와 FFT
    * [ ] 30.3 효율적인 FFT의 구현
  * [ ] 31장. 정수론 알고리즘
    * [ ] 31.1 기초 정수론
    * [ ] 31.2 최대공약수
    * [ ] 31.3 모듈로 연산
    * [ ] 31.4 모듈로 선형 방정식의 해
    * [ ] 31.5 중국인의 나머지 정리
    * [ ] 31.6 원소의 거듭제곱
    * [ ] 31.7 RSA 공개키 암호 시스템
    * [ ] 31.8 소수 판정
    * [ ] 31.9 정수의 인수분해
  * [ ] 32장. 스트링 매칭
    * [ ] 32.1 단순 스트링 매칭 알고리즘
    * [ ] 32.2 라빈-카프 알고리즘
    * [ ] 32.3 유한 오토마타를 이용한 스트링 매칭
    * [ ] 32.4 크누스-모리스-프랫 알고리즘
  * [ ] 33장. 계산 기하학
    * [ ] 33.1 선분의 특징
    * [ ] 33.2 선분의 교차성 결정
    * [ ] 33.3 볼록 껍질의 발견
    * [ ] 33.4 가장 가까운 점들의 쌍 구하기
  * [ ] 34장. NP-완비성
    * [ ] 34.1 다항 시간
    * [ ] 34.2 다항 시간 확인
    * [ ] 34.3 NP-완비성과 환원 가능성
    * [ ] 34.4 NP-완비성 증명
    * [ ] 34.5 NP-완비 문제들
  * [ ] 35장. 근사 알고리즘
    * [ ] 35.1 정점 덮개 문제
    * [ ] 35.2 순회 판매원 문제
    * [ ] 35.3 집합 덮개 문제
    * [ ] 35.4 랜덤화와 선형 계획법
    * [ ] 35.5 부분 집합의 합 문제
* [ ] VIII 부록 : 수학적 기초
  * [ ] 개요
  * [ ] 부록 A. 합
    * [ ] A.1 덧셈 공식과 특성
    * [ ] A.2 합의 한계
  * [ ] 부록 B. 집합과 기타
    * [ ] B.1 집합
    * [ ] B.2 관계
    * [ ] B.3 함수
    * [ ] B.4 그래프
    * [ ] B.5 트리
  * [ ] 부록 C. 계산과 통계
    * [ ] C.1 계산
    * [ ] C.2 확률
    * [ ] C.3 이산 확률 변수
    * [ ] C.4 기하 분포와 이항 분포
    * [ ] C.5 이항 분포의 꼬리
  * [ ] 부록 D. 행렬
    * [ ] D.1 행렬과 행렬 연산
    * [ ] D.2 행렬의 기본 특성
