서문
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
이 책의 대상
이 책을 읽고 계신다면 이미 Python과 같은 프로그래밍 언어에 대한 실무 지식이 있다고 가정합니다. 프로그래밍을 해본 적이 없다면 먼저 프로그래밍 언어를 배운 다음 이 책을 다시 읽어보시길 권합니다! 이 책에서 Python을 사용한 이유는 프로그래머와 비프로그래머 모두 쉽게 접근할 수 있기 때문입니다.
알고리즘은 소프트웨어 애플리케이션에서 자주 발생하는 일반적인 문제를 해결하기 위해 고안된 것입니다. 학부생들에게 알고리즘을 가르칠 때 저는 학생들의 배경 지식과 제가 가르치는 알고리즘 개념 사이의 간극을 메우려고 노력합니다. 많은 교과서에는 알고리즘에 대한 설명이 세심하게 쓰여 있지만 항상 너무 간략합니다. 이러한 자료를 탐색하는 방법을 설명하는 가이드가 없으면 학생들은 스스로 알고리즘을 학습할 수 없는 경우가 많습니다.
한 단락과 그림 P-1에서 이 책의 목표를 보여드리겠습니다. 32비트 정수 값이나 64비트 부동 소수점 값과 같은 기본 고정 크기 유형을 사용하여 정보를 구성하는 방법을 설명하는 여러 데이터 구조를 소개합니다. 이진 배열 검색과 같은 일부 알고리즘은 데이터 구조에서 직접 작동합니다. 보다 복잡한 알고리즘, 특히 그래프 알고리즘은 스택이나 우선순위 큐와 같이 필요에 따라 소개하는 여러 가지 기본적인 추상 데이터 유형에 의존합니다. 이러한 데이터 유형은 올바른 데이터 구조를 선택함으로써 효율적으로 구현할 수 있는 기본적인 연산을 제공합니다. 이 책이 끝나면 다양한 알고리즘이 어떻게 성능을 달성하는지 이해하게 될 것입니다. 이러한 알고리즘에 대해서는 Python으로 전체 구현을 보여드리거나 효율적인 구현을 제공하는 타사 Python 패키지를 소개해 드리겠습니다.
책과 함께 제공되는 관련 코드 리소스를 검토하면 각 장마다 책에 있는 모든 표를 재현하기 위해 실행할 수 있는 book.py Python 파일이 있음을 알 수 있습니다. 업계에서 말하는 것처럼 "마일리지는 다를 수 있지만" 전체적인 추세는 여전히 나타납니다.
그림 P-1. 이 책의 기술 내용 요약
책의 모든 장의 마지막에는 새로운 지식을 시험해 볼 수 있는 챌린지 연습이 있습니다. 책의 코드 리포지토리에 있는 샘플 솔루션을 검토하기 전에 직접 시도해 보시기 바랍니다.
강령 정보
이 책의 모든 코드는 관련 GitHub 리포지토리(http://github.com/heineman/LearningAlgorithms)에서 찾을 수 있습니다. 코드는 Python 3.4 이상을 준수합니다. 해당하는 경우, 이중 밑줄 방법을 사용하는 Python 모범 사례( __str()__및 __len()__)를 준수합니다. 이 책의 코드 예제에서는 인쇄된 ...