Top

알고리듬 세계에 뛰어들기 [용감한 초보를 위한 파이썬 어드벤처]

  • 원서명Dive Into Algorithms: A Pythonic Adventure for the Intrepid Beginner (ISBN 9781718500686)
  • 지은이브래드포드 턱필드(Bradford Tuckfield)
  • 옮긴이이재익
  • ISBN : 9791161757124
  • 28,000원
  • 2023년 02월 14일 펴냄
  • 페이퍼백 | 312쪽 | 188*235mm
  • 시리즈 : 프로그래밍 언어

책 소개

요약

알고리듬에 관한 파이썬 기반의 광범위한 입문서다. 야구공을 잡는 방법을 결정하는 데 도움이 되는 인간의 알고리듬, 머신 러닝과 인공 지능에 사용되는 것과 같은 고급 알고리듬, 숫자를 곱하고, 최대 공약수를 찾고, 마방진을 생성하는 데 사용하는 고대의 알고리듬 등 검색, 정렬 및 최적화를 위한 세상에서 가장 흥미로운 많은 알고리듬을 탐색하게 될 것이다. 또한 순수 수학에 유용한 알고리듬을 탐색하고 수학적 아이디어가 어떻게 알고리듬을 개선할 수 있는지 배운다.
이 책을 통해 작업하면서 파이썬 3에서 알고리듬을 코딩하고 구현하는 방법과 성능을 측정하고 최적화하는 방법을 포함해서 오늘날 가장 강력한 많은 알고리듬의 핵심 세부 사항을 배울 수 있을 것이다.

이 책에서 다루는 내용

◆기하학적 애플리케이션에 사용할 보로노이 다이어그램 생성하기
◆알고리듬을 사용해 간단한 챗봇을 구축하고, 보드 게임에서 승리하고, 스도쿠 퍼즐을 풀기
◆함수의 최대값과 최소값을 찾기 위한 경사 상승과 하강 알고리듬 코드 작성하기
◆모의 담금질(simulated annealing)을 사용해서 전역 최적화 수행하기
◆개인의 특성에 따라 행복을 예측하는 의사 결정 트리 구축하기
◆알고리듬을 사용해서 코드 디버깅, 수익 극대화, 난수 생성하기
◆알고리듬의 효율성과 속도 측정하기

이 책의 대상 독자

이 책은 고등학교나 학부 수준의 알고리듬, 컴퓨터 과학 또는 프로그래밍 입문 수업에 적합하다. 파이썬에 익숙해지길 원하는 개발자나 엔지니어, 컴퓨터 과학의 기초를 더 많이 배우고 알고리듬적으로 사고해서 코드를 개선하는 방법을 배우려는 개발자를 비롯한 여러 유형의 전문가들은 이 책에서 가치 있는 기술을 얻을 수 있을 것이다.
또한 관심을 가진 아마추어들이 읽기에도 적합하다. 알고리듬은 삶의 거의 모든 부분에 영향을 미치고 있다. 이 책을 읽는 사람이라면 주변 세계에 대한 감탄할 만한 최소한의 무언가를 찾을 수 있을 것이다.

이 책의 구성

이 책은 현존하는 모든 알고리듬의 모든 측면을 다루지는 않는다. 단지 소개할 뿐이다. 읽고 나면 알고리듬이 무엇인지 확실히 이해하고, 중요한 알고리듬을 구현하는 코드를 작성하는 방법을 알고, 알고리듬 성능을 판단하고 최적화하는 방법을 이해하게 될 것이다. 또한 현재 전문가들이 사용하는 가장 인기 있는 많은 알고리듬에 익숙해질 것이다. 각 장은 다음과 같이 구성된다.
1장, ‘알고리듬을 사용한 문제 해결’에서는 공을 잡는 방법에 대한 문제를 해결하고, 인간 행동을 지배하는 잠재의식 알고리듬의 증거를 찾고, 알고리듬의 유용성과 설계 방법을 논의한다.
2장, ‘역사 속의 알고리듬’에서는 고대 이집트인과 러시아 농부가 어떻게 숫자를 곱했는지, 고대 그리스인이 최대공약수를 어떻게 찾았는지, 중세 일본 학자들이 마방진을 어떻게 만들었는지 알아보기 위해 세계의 역사를 탐험해본다.
3장, ‘최대화와 최소화’에서는 경사 상승과 경사 하강을 소개한다. 함수의 최댓값과 최솟값을 찾는 이 간단한 방법은 많은 알고리듬의 중요한 목표인 최적화에 사용된다.
4장, ‘정렬과 검색’에서는 리스트를 정렬하고 리스트의 요소를 검색하기 위한 기본 알고리듬을 설명한다. 또한 알고리듬의 효율성과 속도를 측정하는 방법도 소개한다.
5장, ‘순수 수학’에서는 연분수의 생성, 제곱근 계산, 의사 난수 생성 등 순수한 수학적 알고리듬을 다룬다.
6장, ‘고급 최적화’에서는 최적의 솔루션을 찾기 위한 고급 방법인 모의 담금질을 다룬다. 또한 고급 컴퓨터 과학의 표준 문제인 여행하는 외판원 문제도 소개한다.
7장, ‘기하학’에서는 다양한 기하학 애플리케이션에 유용하게 사용할 수 있는 보로노이 다이어그램을 생성하는 방법을 살펴본다.
8장, ‘언어’에서는 공백이 누락된 텍스트에 지능적으로 공백을 추가하는 방법과 구문에서 다음 단어를 지능적으로 제안하는 방법을 논의한다.
9장, ‘머신러닝’에서는 기본적인 머신러닝 방법인 의사결정 트리에 대해 논의한다.
10장, ‘인공지능’에서는 우리와 게임해서 이길 수도 있는 알고리듬을 구현하는 야심 찬 프로젝트로 뛰어든다. <점과> 게임으로 시작해서 성능을 향상할 수 있는 방법을 논의한다.
11장, ‘이 책 이후...’에서는 알고리듬과 관련된 더 고급 작업으로 진행하는 방법을 설명한다. 챗봇을 구축하는 방법과 스도쿠 알고리듬을 생성해 백만 달러를 얻는 방법에 대해 논의한다.

저자/역자 소개

지은이의 말

알고리듬에 대해 더 많이 배우게 되면 어디에나 알고리듬이 있고, 얼마나 강력한지 이해할 수 있을 것이다. 1장에서는 공을 잡을 수 있는 인간의 놀라운 능력에 대해 논의하고, 이를 가능하게 하는 인간 잠재의식에서의 알고리듬에 대한 세부 사항을 알아본다. 이후에는 코드를 디버깅하고, 뷔페에서 얼마를 먹을지 결정하고, 수입을 극대화하고, 리스트를 정렬하고, 작업을 스케줄링하고, 텍스트를 교정하고, 메일을 전달하고, 체스나 스도쿠 같은 게임에서 이기기 위한 알고리듬에 대해 이야기할 것이다. 그 과정에서 전문가들이 중요하게 여기는 몇 가지 속성에 따라 알고리듬을 평가하는 방법을 배울 것이다. 또한 장인정신의 감각을 느끼거나 아니면 정확하고 양적인 노력으로 창의성과 개성의 범위를 제공하는 알고리듬의 기술조차도 감히 느낄 수 있을 것이다.
또한 알고리듬 공부를 통해 전 세계를 돌고 수 세기 전 역사 속으로 돌아갈 것이다. 고대 이집트, 바빌론, 페리클레스 시대의 아테네, 바그다드, 중세 유럽, 일본 에도 시대, 영국령 인도 제도에서 경이로운 오늘날까지의 혁신과 놀라운 기술을 탐구할 것이다. 처음에는 다루기가 불가능해 보이는 문제와 제약들을 풀어가기 위해 새로운 방법을 찾아야 한다는 압박을 받을 수도 있다.. 하지만 그렇게 함으로써 고대 과학의 선구자들뿐만 아니라 컴퓨터를 사용하거나 공을 잡는 오늘날의 누군가, 그리고 먼 훗날 우리가 남겨준 것들을 기반으로 할 아직 태어나지 않은 알고리듬 사용자 및 제작자 세대와도 연결될 것이다. 이 책은 알고리듬과 함께하는 모험의 시작이다.

지은이 소개

브래드포드 턱필드(Bradford Tuckfield)

데이터 과학자이자 작가이며, Kmbara라는 데이터 과학 컨설팅 회사와 Dreamtigers라는 소설 웹사이트를 운영하고 있다.

옮긴이의 말

한 인터넷 서점에서 ‘알고리듬’이라는 단어를 검색하니 의외의 결과를 얻었다. 인기순으로 결과를 봤는데 ‘말의 알고리듬’, ‘독해 알고리듬’이 상위에 있었다. 해당 인터넷 서점의 검색 알고리듬이 얼마나 믿을 만한지는 차치하고, 우리 삶에서 ‘알고리듬’이라는 단어가 얼마나 일상화됐고 유행하고 있는지 보여주는 결과가 아닐까 생각이 든다.
이 책은 컴퓨터과학이나 수학적인 관점의 알고리듬을 일상과 연관 지어 설명하고 있다. 야구경기에서 선수가 공을 잡는 방법부터 알고리듬의 역사, 고대의 마방진 알고리듬 그리고 최신의 인공지능 알고리듬까지 다양한 관점에서 알고리듬을 논한다. 최근 출간되는 알고리듬 서적들은 취업을 위한 알고리듬이나 인공지능 알고리듬에 집중하는 경우가 많다. 그만큼 수요가 있기 때문이라고 생각한다. 이 책은 설명하는 범위가 광범위하여 특정한 목적을 위한 알고리듬 서적이라기보다는 ‘알고리듬이 뭐지?’라는 의문을 품은 독자들을 위한 책이다. 기술 기업들이 인터뷰에서 알고리듬을 묻는 이유가 짧은 시간 내에 문제 해결력을 확인하기 위한 것이라는 측면에서, 직접적이지는 않지만 이 책의 전체적인 서술 방식과 다루는 내용이 문제 해결력을 키우는 데 조금은 도움이 될 수도 있을 것이다.
이 책을 통해 독자들이 알고리듬의 원리나 근원, 그리고 일상에서의 알고리듬에 대해 고민해보는 시간을 갖길 바란다.

옮긴이 소개

이재익

네이버에서 머신러닝을 모니터링 플랫폼에 도입하는 업무를 하고 있다. 공역서로는 에이콘출판사에서 펴낸 『ElasticSearch in Action』(2016), 『일래스틱서치 모니터링』(2017), 『키바나 5.0 배우기』(2017), 『일래스틱서치 쿡북 3/e』(2019), 『Kafka Streams in Action』(2019)이 있다.

목차

목차
  • 1장. 알고리듬을 사용한 문제 해결
    • 분석적 접근법
      • 갈릴레오 모델
      • x 값 구하기 전략
      • 내면 물리학자
    • 알고리듬적 접근법
      • 목으로 생각하기
      • 채프먼 알고리듬 적용하기
      • 알고리듬으로 문제 해결하기
    • 요약

  • 2장. 역사 속의 알고리듬
    • 러시아 농부의 곱셈법
      • 손으로 RPM 해보기
      • 파이썬으로 RPM 구현하기
    • 유클리드 알고리듬
      • 손으로 유클리드 알고리듬 수행하기
      • 파이썬으로 유클리드 알고리듬 구현하기
    • 일본 마방진
      • 파이썬으로 낙서 마방진 생성하기
      • 파이썬으로 쿠루시마 알고리듬 구현하기
    • 요약

  • 3장. 최대화와 최소화
    • 세율 설정
      • 올바른 방향으로 가는 단계
      • 단계를 알고리듬으로 전환하기
    • 경사 상승에 대한 반대 의견
    • 로컬 극값 문제
      • 교육과 평생 소득
      • 교육 언덕 등반 - 올바른 길
    • 최대화에서 최소화로
    • 일반적인 언덕 등반
    • 알고리듬을 사용하지 말아야 할 경우
    • 요약

  • 4장. 정렬과 검색
    • 삽입 정렬
      • 삽입 정렬에 삽입 기능 넣기
      • 삽입을 통한 정렬
    • 알고리듬 효율성 측정
      • 효율성을 목표로 하는 이유
      • 정확한 시간 측정
      • 단계 계산
      • 잘 알려진 함수와의 비교
      • 좀 더 이론적인 정밀도 추가
      • 빅 오 표기법 사용
    • 병합 정렬
      • 병합
      • 병합에서 정렬까지
    • 수면 정렬
    • 정렬에서 검색까지
      • 이진 검색
      • 이진 검색의 응용
    • 요약

  • 5장. 순수 수학
    • 연분수
      • 파이의 압축과 통신
      • 연분수에 대한 부연 설명
      • 연분수 생성 알고리듬
      • 소수에서 연분수로
      • 분수에서 거듭제곱근으로
    • 제곱근
      • 바빌론 알고리듬
      • 파이썬의 제곱근
    • 난수 생성기
      • 무작위성의 가능성
      • 선형 합동 생성기
      • PRNG 판정
      • 무작위성에 대한 다이하드 테스트
      • 선형 피드백 시프트 레지스터
    • 요약

  • 6장. 고급 최적화
    • 외판원의 삶
      • 문제 설정
      • 머리 vs 체력
      • 최근접 이웃 알고리듬
      • 최근접 이웃 검색 구현
      • 추가 개선사항 확인
      • 욕심 많은 사람을 위한 알고리듬
      • 온도 함수 소개
    • 모의 담금질
      • 알고리듬 튜닝
      • 주요 문제점 회피
      • 리셋 허용
      • 성능 테스트
    • 요약

  • 7장. 기하학
    • 우체국장 문제
    • 삼각형 101
    • 대학원 수준의 고급 삼각형 연구
      • 외심 찾기
      • 그리기 기능 향상
    • 델로네 삼각분할
      • 델로네 삼각분할의 점진적 생성
      • 델로네 삼각분할 구현
    • 델로네에서 보로노이까지
    • 요약

  • 8장. 언어
    • 언어 알고리듬이 어려운 이유
    • 공백 삽입
      • 단어 리스트 정의 및 단어 찾기
      • 합성어 처리
      • 잠재적인 단어의 기존 공백 확인
      • 가져온 말뭉치를 사용해 유효한 단어 확인
      • 잠재적인 단어의 전반부와 후반부 찾기
    • 구문 완성
      • 토큰화 및 n 그램 가져오기
      • 전략
      • n + 1그램 후보 찾기
      • 빈도에 따른 구절 선택
    • 요약

  • 9장. 머신러닝
    • 의사결정 트리
    • 의사결정 트리 구축
      • 데이터 세트 다운로드
      • 데이터 살펴보기
      • 데이터 분할
      • 더 똑똑한 분할
      • 분할 변수 선택
      • 깊이 추가
    • 의사결정 트리 평가
      • 과적합 문제
      • 개선
    • 랜덤 포레스트
    • 요약

  • 10장. 인공지능
    • 라 피포피펫
    • 보드 그리기
    • 대표 게임
    • 득점
    • 게임 트리와 게임에서 승리하는 방법
      • 트리 만들기
      • 게임 승리 전략
      • 개선사항 추가
    • 요약

  • 11장. 이 책 이후…
    • 알고리듬으로 더 많은 작업 수행하기
    • 챗봇 구축
      • 텍스트 벡터화
      • 벡터 유사도
    • 더 잘하고 빨라지기
    • 야심 찬 사람을 위한 알고리듬

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안