요즘 도서관은 전자도서관으로 모바일로 볼수있다.
도서 종류가 적긴하지만 수학 공부할때 문제집 여러개 푼 것처럼
여러가지 계속 읽으면 될 것 같다.
알고리즘은 기원전 3세기경에 수학자 유클리드가 편찬한 책에서 발견할 수 있었다고 한다.(어원은 아니다 어원은 8~9세기 알 콰리즈 이다)
외우진 않을꺼지만 흥미롭다!! 기원전이라니!!
뜻은 '문제를 풀기 위한 절차'라고 한다.
알고리즘이라 정의하기 위한 조건이 있다.
알고리즘의 실행 시간을 판단하기 위해 '계산량'이라는 지표를 사용한다.
계산량은 시간 계산량과 공간 계산량으로 나눌 수 있다.
프로그래밍에서 시간은 실행 환경(컴퓨터, 통신상태)에 따라 달라지기 때문에 시간이 아니라, 스탭(명령)의 개수를 기준으로 한다. 이는 실행 환경에 영향을 받지 않는 절대값이기 때문이다.
조합적 확산(combinatorial explosion)
처리할 데이터의 조합이 너무 방대하여 스텝의 개수가 너무 많아지는 경우를 뜻한다.
시간 계산량 표기방법중 하나이다.
나중에 한번 정리할꺼긴 한데 일단 나왔으니 정리한다.
기법 | 정의 |
---|---|
O(1) | 데이터 개수와 상관없이 스텝의 개수가 일정 |
O(n) | 데이터 개수가 n일때 스텝의 개수가 데이터 개수에 비례 |
O(log n) | 스탭의 개수가 2를 스텝의 개수만큼 제곱한 갑의 정수 배 |
O(n2) | 스탭의 개수가 데이터 개수의 제곱에 비례 |