이미 소장하고 있다면 판매해 보세요.
|
1. 개요
2. 기본적인 자료구조 3. 고급 자료구조 4. 정렬 5. 탐색 6. 집합 7. 행렬 8. 그래프 9. 문자열 10. 기하학 알고리즘 11. 수 체계 12. 정수론 13. 암호학 14. 확률 15. 통계 16. 수치 해석 |
|
탐색은 크게 두 가지 일반적인 범주로 나눈다. 첫번째는 룩업 탐색(lookup search)이다. 가지고 있는 자료를 이용하여 미리 준비하고 탐색하는 과정과 연관되어 있다. 두번째는 생성 탐색(generative search)이다. 찾아야 할 자료를 찾는 과정과 연관되어 있다. 생성 탐색은 종종 동적으로 계산하고, 항상 탐색의 결과를 이용하여 생성 과정을 제어한다. 좋은 예로 직장을 구하는 과정을 생각할 수 있다. 미리 많은 준비를 하지만 실제 면접을 하는 과정에서 회사에 대한 평가가 여러 면에서 바뀌게 되고 그 과정에서 많은 것을 배울 수 있다. 그리고 어떤 고용주를 찾을지도 알아낼 수 있게 된다.
이번 장에서는 주로 룩업 탐색에 대해 다룬다. 룩업 탐색이 가장 일반적인 탐색이기때문이다. 룩업 탐색은 특정한 자료의 내부 구조와 상관없이 대부분의 자료에 적용할 수 있다. 생성 탐색 알고리즘은 자료의 특성과 계산 과정에 밀접하게 관련되어 있다. 전화번호를 찾는 과정을 생각해 보자. 대부분 전화번호부를 탐색하여 매우 빠르게 원하는 전화번호를 찾는다. 여기서 전화번호부는 찾고자 하는 사람의 전화번호를 제공한다. 이러한 방법이 원시적인 룩업 탐색이다. 하지만 잘 모르는 사람보다는 아는 사람에게 전화를 걸게 되므로 큰 전화번호부 대신에 개인적으로 사용하는 작은 전화번호부를 이용하면 단 몇 초만에 원하는 전화번호를 찾을 수 있다. 이렇게 찾는 방법이 더 빠른 룩업 탐색법이다. 만약 자주 거는 전화번호라서 외우고 있다면 전화번호부를 들기도 전에 이미 뇌에서 탐색을 마치게 된다. --- p.204 |
|
이론과 실전 중에 어느 쪽에 비중을 두느냐는 프로그래머마다 취향에 따라 다르다. 하지만 이 책은 자연스럽게 이론과 실전을 섞어 중간 정도가 될 수 있도록 구성하였다. 특히 실전을 중시하는 펄 프로그래머에게 부족하기 마련인 실용 예제와 학문적인 전산학의 적절한 조화를 이루고 있다. 또한 게임처럼 재미있는 문제에 대한 설명과 함께 CPAN(펄 모듈을 비롯해 펄에 관련된 것을 무료로 구할 수 있는 사이트)에서 얻을 수 있는 이미 완성된 해결방법을 다루고 있다.
기본적인 펄 문법과 함수에 대해 어느 정도 지식을 갖춘 펄 프로그래머가 구현할 수 있는 전산학의 모든 분야와 알고리즘을 실용 예제를 통해 소개하고 있다. |