다양한 주제에 대한 알고리즘 책


11

저는 소규모 회사 (약 15 명)를위한 알고리즘에 관한 책 라이브러리를 만드는 일을했습니다. 예산은 5k 이상이지만 확실히 10k 미만이므로 상당한 수의 책을 구입할 수 있습니다. 여기에있는 모든 사람들은 적어도 CS 또는 학사 학위 관련 학사 학위를 소지하고 있으므로 Cormen과 같은 기본 교과서를 받으면서 고급 주제에 관한 좋은 책에 더 관심이 있습니다. (Knuth의 4 권, BTW를받습니다.)

몇 가지 주제 목록은 다음과 같습니다.

  • 정렬 알고리즘

  • 그래프 알고리즘

  • 문자열 알고리즘

  • 무작위 알고리즘

  • 분산 알고리즘

  • 조합 알고리즘

  • 기타

본질적으로 나는 알고리즘 및 데이터 구조와 관련된 CS의 주요 주제에 관한 책에 대한 좋은 권장 사항을 찾고 있습니다. 특히 좋은 학교에서 학사 학위의 일환으로 알고리즘 및 데이터 구조 클래스에서 일반적으로 다루는 것을 넘어서는 것들. 나는 일반적으로 유용한 자료를 찾고 있기 때문에 질문이 매우 모호하다는 것을 알고 있습니다. 우리가 개발하는 소프트웨어는 대부분 대량의 데이터를 처리하는 시스템 수준의 물건입니다.

또한 가장 최근의 멋진 데이터 구조와 알고리즘을 다루는 대부분의 사람들이 듣지 못한 것을 찾는 것이 이상적입니다.


편집 : 여기 내가 받아야한다고 생각하는 예비 책이 있습니다.

  • Cormen et al.의 알고리즘 소개.

  • Kleinberg, Tardos의 알고리즘 설계

  • Knuth의 컴퓨터 프로그래밍 Vol 1-4의 기술

  • Vazirani에 의한 근사 알고리즘

  • Williamson, Shmoys의 근사 알고리즘 설계

  • Motwani, Raghavan의 무작위 알고리즘

  • Sipser의 계산 이론 소개

  • Arora, Barak의 계산 복잡성

  • Garey와 Johnson의 컴퓨터 및 다루기 힘든

  • Schrijver의 조합 최적화

동료들이 언어 디자인, 컴파일러 및 공식적인 방법에 대한 기술과 알고리즘을 다루기를 원하는 다른 책은 다음과 같습니다.

  • Pierce의 타입과 프로그래밍 언어

  • Baier, Katoen의 모델 검사 원칙

  • 컴파일러 : Aho, Lam, Sethi, Ullman의 원리, 기법 및 도구

  • 컴파일러 디자인 핸드북 : 최적화 및 기계 코드 생성, 제 2 판 (Srikant, Shankar)

  • 가비지 콜렉션 핸드북 : Jones, Hosking, Moss의 자동 메모리 관리 기술


모든 도서관에 소장해야 할 책들 : * Jon Kleinberg와 Éva Tardos의 알고리즘 디자인 * Michael Sipser의 계산 이론 소개 * 컴퓨터와 다루기 힘든 것 : MR Garey와 DS Johnson의 NP- 완전 이론에 대한 안내서
Pål GD

> * Michael Sipser의 계산 이론 소개이 책은 훌륭한 책이지만 오토마타와 언어, 문맥이없는 언어, 튜링 머신, 복잡성 이론 등에 관한 것입니다. 알고리즘에 대해서는 그리 중요하지 않습니다
Devid

1
와우, 이것은 광범위한 질문입니다. 선택의 품질과 범위를 어떻게 확인할 수 있습니까? 당신의 배경 은 무엇입니까 ? 귀사는 무엇을하고 있습니까? 당신은 석사 학위 또는 박사 학위를 가진 사람들이 있습니까?
Raphael

1
중재자 고지 : 단일 책 답변을 게시하지 말고 왜 이러한 선택을하는지 설명하십시오. 여기에 $ 5k 예산이 있습니다 : 어떻게 지출 할 것인지 설명하십시오! 어떤 책을 반드시 소장해야하는지, 어떤 주제를 더 탐색해야하는지, 어떻게 선택해야하는지 알려주십시오.
Gilles 'SO-Stop

주로 디자인이나 알고리즘 분석에 관심이 있습니까? 그렇다면, 당신은 당신의 사람들이 이론적 분석에 능숙 해 지길 원합니까, 아니면 오히려 효율성을 평가하는보다 실용적인 수단에 능숙하십니까?
Raphael

답변:


13

나는 그 책의 가치가 $ 5000라는 책을 충분히 읽지 못했습니다. 그러므로, 나는 당신이 다루어야 할 일부 문헌 그룹을 제안하고 선택된 대표자들에게 당신을 지적 할 것입니다. 나는 대부분의 책을 스스로 읽었다 고 주장 할 수 없기 때문에 대부분 설명, 커서 인상 및 평판에 의존해야한다. 나는 그들 대부분을 어느 정도 살펴 보거나 함께 작업했거나 전문가의 추천을 받았다.

나는 당신이 할 수없는 것을 배우는 것이 아니라 당신의 사람들이 할 수있는 것과 배우는 법을 배우기를 원한다고 가정합니다. 특히, 나는 계산 가능성과 복잡성 이론에 관한 책들을 남길 것이다. 귀하의 직원이 학부 교육에서 관련 메시지를 삭제했을 것으로 기대합니다.

  • 기본 사항
    사람들이 특정 시점에서 학습했지만 기본 사항 을 찾아 보길 바랍니다. Wikipedia와 같은 소스는 종종 표준 이하이거나 잘못되어 있기 때문에 적절한 참조 텍스트를 원합니다.

    인기있는 선택은 다음과 같습니다.

    • Cormen, Leiserson 등의 알고리즘 소개 .
      기본 분석 기술뿐만 아니라 많은 기본 알고리즘 및 데이터 구조를 다루는 매우 광범위한 소개. 교육 목적으로 자주 사용되며 3 판에서 사용할 수있는 표준 텍스트 (대부분의 실수는 지금까지 제거 된 것임). 많은 운동.
    • Sedgewick과 Wayne의 알고리즘
      제 4 판의 또 다른 표준 텍스트. Cormen보다 덜 넓지 만 구현 세부 사항에 더주의를 기울입니다. Coursera무료 코스를 포함하여 많은 온라인 자료 . 많은 운동.
    • 알고리즘 소개-Udi Manber의 독창적 인 접근 방법
      또한 선택 주제를 슬림하게 만들었지 만 교훈에주의를 기울였습니다. 초점은 귀납적 전략에 있습니다. 일부 운동과 솔루션 (또는 적어도 힌트)이 많이 포함되어 있습니다. 특이한 스타일로 인해 권장 교과서를 좋아하지 않는 경우 이차 참고 자료로 사용하십시오.
    • Graham, Knuth 및 Patashnik의 콘크리트 수학
      알고리즘 분석과 관련된 이산 수학을 다룹니다. 컴퓨터 과학의 요구 엄격함 에 초점을 둔 경우는 드니다 . 매우 높은 품질. 솔루션에 대한 많은 연습.
  • O

  • 고급 설문 조사

    • 오카 사키
      클래식 ( Okasaki Classic)의 순수 기능 데이터 구조 와 기본 문헌은 종종 절차 적 패러다임에 중점을 둡니다. 기능적 패러다임에서 작업하려면 효율적인 데이터 구조를위한 새로운 기술이 필요합니다. 이 책은 해당 지역에 대한 자세한 개요입니다.
    • Brass의 고급 데이터 구조
      때로는 기본 기술로는 충분하지 않습니다. 이것은 코드와 많은 참조가있는 고급 데이터 구조에 대한 개요입니다.
    • Hromkovič
      Complexity 이론에 의한 어려운 문제 에 대한 알고리즘은 많은 자연 문제에 대한 정확하면서도 효율적인 알고리즘을 찾고자하지 않는다고 실무자로서 알려줍니다. 이러한 문제를 실제로 해결하기위한 많은 기술이 있습니다. 이 텍스트는 방법을 보여줍니다.
  • 전문 문학

    • 컴파일러 : 원칙, 기법 및 도구 일명 Aho 등의 Dragon Book
      컴파일러로 빌드하거나 땜질해야하는 경우이 영역 표준 텍스트입니다.
    • 네트워크 흐름 : Ahuja의 이론, 알고리즘 및 응용 프로그램
      많은 문제가 네트워크 흐름 문제로 모델링 될 수 있습니다. 이 책은 해당 분야에 대한 전체 내용을 제공합니다.
    • 콜러 (Koller)와 프리드먼 (Friedman)의 확률 적 그래픽 모델
      그래픽 모델은 기계 학습을위한 모델링 시나리오의 주요 도구입니다. 이것은 단지에 대한 포괄적 인 개요입니다. 관련 무료 온라인 코스가 있습니다.
    • Charras와 Lecrog 의 정확한 문자열 매칭 알고리즘 핸드북
      문자열 매칭은 데이터를 다룰 때 가장 중요한 작업입니다. 이 책은 구현뿐만 아니라 높은 수준의 설명을 포함하여 해당 작업과 관련된 대부분의 알고리즘을 나열합니다.
    • Sedgewick과 Flajolet
      분석 조합론 같은 저자에 의한 "알고리즘 분석에 대한 소개"이후의 심층적 인 수학적 다이빙. 모두를위한 것이 아니라 관심을 가진 금입니다.
    • Gusfield의 문자열, 트리 및 시퀀스에 대한 알고리즘
      대량의 문자열 데이터 (특히 생물학 컨텍스트에서)를 처리해야하는 경우 관련 데이터 구조 및 알고리즘에 대한 개요를 제공 하므로이 책을 참조하십시오.
  • 개업의를 위해

    • Mattson et al.의 병렬 프로그래밍 패턴
      실제로는 여러 시스템을 사용하여 큰 문제를 처리 할 수 ​​있습니다. 이 책은 데이터 및 컴퓨팅 에이전트를 구성하고 이동하는 방법에 대한 예제 중심의 개요입니다. 또한 기존 도구로이를 구현하는 방법도 다룹니다.
    • McGeoch의 실험 알고리즘 안내서
      이론적 분석이 너무 어렵거나 너무 거칠면 실험을 수행해야합니다. 알고리즘 실험을 올바르게 설계하는 방법을 소개합니다.
    • Parr 의 최종 ANTLR 4 참조
      구문 분석을 위해 도메인 별 언어 및 도구가 필요한 경우가 종종 있습니다. ANTLR은 성숙하고 편리한 컴파일러 생성기이며 사용법을 배우는 데 가장 적합한 책입니다. Parr은 DSL에 관한 다른 책을 가지고 있습니다.

최신 자료를 원할 경우 대학 도서관과 협력하여 사람들이 저널 및 컨퍼런스 진행에 액세스하도록하는 것이 좋습니다. 실제로 그들과 관련된 주제에 관한 회의에 참석하게 할 수도 있습니다. 너의 회사.

또한 사람들에게 물어보십시오. 그들 자신의 연구 (웹이나 도서관의 무료 샘플 또는 사본 포함)를하도록하고 그들이 자신의 작업과 관련이 있다고 생각하는 책을 알려줄 것입니다. 아무도 읽지 않는 물건을 사는데는 쓸모가 없습니다.


물론 흥미로운 문제로 여기에 보내십시오. :)
Raphael


@Bartek : 들어 본 적이 없으므로 추천 할 수 없습니다.
Raphael

4

다음은 고급 알고리즘에 대한 훌륭한 책으로 간주하는 것을 기반으로 고급 알고리즘에 대한 임의의 서적 모음입니다. 물론 이것은 내 개인적인 의견 일 뿐이며 다른 좋은 책들이 많이 있습니다.

  • Vijay V. Vazirani의 근사 알고리즘
  • David P. Williamson, David B. Shmoys의 근사 알고리즘 설계
  • 전산 기하학 : Ketan Mulmuley의 무작위 알고리즘을 통한 소개
  • Rajeev Motwani, Prabhakar Raghavan의 무작위 알고리즘
  • Dan Gusfield의 문자열, 나무 및 시퀀스에 대한 알고리즘
  • William J. Cook, William H. Cunningham, William R. Pulleyblank, Alexander Schrijver의 조합 최적화

훌륭한 교과서 인 Kleinberg / Tardos 책을 반드시 고려해야합니다.

또한 특정 주제에는 필드에 대한 백과 사전 개요를 제공하는 "핸드북"이 있습니다 (예 : 계산 기하학 핸드북). JR Sack, J. Urrutia에 의해 편집 됨. 이 핸드북은 비싸다. 따라서 구매하면 5k를 소비하는 데 도움이 될 수 있습니다.


1
당신은 이것이 "무작위"모음이라고 말합니다. 그 책을 추천 할 특별한 이유가 있습니까? 나머지 $ 4.5k로 OP는 어떻게해야합니까?
Raphael

4

회사의 전문 분야를 지정하지 않았으므로 일반적인 권장 사항 이상을 제공하는 것은 쉽지 않습니다. 전체적으로, 나는 당신이 모은 목록이 꽤 좋다고 생각하며, 아무것도 제거하지 않을 것입니다. 몇 가지 추가 사항 및 의견 :

1) 코멘은 표준 텍스트입니다. Sedgewick은 또 다른 표준 텍스트입니다. 나는 항상 Sedgewick보다 YMMV를 더 많이 얻었습니다. 예산이있는 것 같습니다. 둘 다 사십시오.

2) "가비지 수집 핸드북"사본이 없지만 가비지 수집에 대한 Jones & Lin의 초기 설문 조사 사본이 있습니다. 어떤 종류의 자동화 된 메모리 관리를하고자한다면 반드시 이것을 구입해야합니다.

3) 파싱 및 오토마타 이론에 대한 유용한 책이 몇 권 있지만, 가장 유용한 것으로 밝혀진 Sippu & Soisalon-Soisinen의 파싱 ​​이론 및 Dick Grune의 파싱 ​​기술, 실용 가이드 . 첫 번째는 이론에 대한 훌륭한 개요이고, 두 번째는 실습에 대한 철저한 개요입니다. (반드시 드래곤 북도 받으십시오. 그러나 Grune을 더 사용하게 될 것입니다.)

4) 데이터 구조의 모든 라이브러리에는 오카 사키의 "순수한 기능적 데이터 구조"의 사본이 필요합니다. 나는이 흥미로운 책이 너무 많은 책을 읽지 않았다고 생각한다.

5) Maxime Crochemore의 "Strings on Strings"사본을 소유하고 있지는 않지만, 원합니다. 실용적이고 유용한 아이디어가 많이 있습니다.

  • Robert Sedgewick의 C ++ / Java / C 알고리즘 (하나만 선택), Third Edition. 두 권. 애디슨-웨슬리, 2001.

  • Richard Jones, Antony Hosking 및 Eliot Moss의 가비지 콜렉션 핸드북.

  • Seppo Sippu와 Eljas Soisalon-Soininen의 파싱 이론. 두 권 : Vol. 1 언어와 파싱; Vol. 2 LR (k) 및 LL (k) 구문 분석. 1988 년 스프링거.

  • 파싱 ​​기법, 실용 가이드, Dick Grune 및 Ceriel JH Jacobs의 제 2 판. 2008 년 스프링거.

  • Chris Okasaki의 순전히 기능적인 데이터 구조 1998 년 케임브리지

  • Maxime Crochemore, Christophe Hancart, Thierry Lecroq의 현악기 알고리즘 캠브리지, 2007.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.