Sách cho các thuật toán ngoài Cormen


21

Tôi đã hoàn thành hầu hết các tài liệu trong cuốn sách Giới thiệu về thuật toán của Cormen và tôi đang tìm một cuốn sách thuật toán bao gồm các tài liệu ngoài cuốn sách của Corman. Có bất kỳ khuyến nghị?

LƯU Ý: Tôi đã hỏi điều này trên stackoverflow nhưng không quá hài lòng với câu trả lời.

LƯU Ý: Nhìn vào hầu hết các ý kiến ​​tôi nghĩ lý tưởng nhất là tôi muốn tìm một cuốn sách bao gồm các tài liệu của khóa học 787 trong mô tả khóa học này .


1
xem cái này
Kaveh

1
@Kaveh Tôi đã đọc Tardos rồi.
Eugene

1
"Giới thiệu về thuật toán" bao gồm hầu hết mọi thứ trong phạm vi thiết kế và phân tích thuật toán, và là sách giáo khoa phổ biến nhất thế giới cho cả các khóa học đại học và sau đại học. Mỗi chương cung cấp một giới thiệu ngắn gọn về các tài liệu liên quan, và cũng có một danh sách rất dài các tài liệu tham khảo để nghiên cứu thêm vào cuối. Nếu bạn cảm thấy cần hiểu sâu hơn về một chủ đề nhất định, ví dụ thuật toán đồ thị, lý thuyết phức tạp, v.v., cách tốt nhất của bạn là xem thư mục của cuốn sách và nếu nó không hữu ích, bạn cũng có thể tìm kiếm lời khuyên từ các chuyên gia tên miền về điều đó khu vực cụ thể.
Ali

12
"Giới thiệu về thuật toán" bao gồm hầu hết mọi thứ trong phạm vi thiết kế và phân tích thuật toán - À, nếu điều đó là đúng.
JeffE

5
Một cuốn sách tôi thực sự thích là Giới thiệu về Thuật toán: Cách tiếp cận sáng tạo , của Udi Manber. Không giống như hầu hết các sách giáo khoa khác, ông dạy cách tự mình đưa ra các thuật toán. Đối với mỗi thuật toán được trình bày trong sách giáo khoa, ông cung cấp một phần tăng dần của các phần, phần đầu tiên mô tả cách tiếp cận rõ ràng nhất và mỗi lần thử liên tiếp khắc phục các lỗi của phần trước. Đó là một văn bản tuyệt vời theo ý kiến ​​của tôi.
Vinayak Pathak

Câu trả lời:


9
I am looking for an algorithms book that covers material beyond Corman's book.

Điều này có thể được trả lời theo nhiều cách khác nhau, tùy thuộc vào những gì bạn muốn "vượt quá". Tôi khuyên bạn nên hỏi các hướng cụ thể hơn nhiều, vì bạn có nhiều khả năng nhận được câu trả lời cụ thể hữu ích. Đối với một số hướng dẫn chung mặc dù:

  • Bạn có thể tìm thấy một số sách nói chung tìm hiểu các chủ đề thuật toán chung chuyên sâu hơn Corman, nhưng đối với hầu hết các phần, bạn cần bắt đầu chuyên môn nếu cuốn sách sẽ có chiều sâu hơn đáng kể . Nếu không, nó có khả năng bị cồng kềnh và thiếu hữu ích.
  • Vì vậy, thay vì tìm kiếm các chủ đề cụ thể. Có rất nhiều tài liệu nâng cao nếu bạn tập trung vào các chủ đề cụ thể. Bạn có xen vào:
    • thuật toán sắp xếp?
    • thuật toán chuỗi?
    • thuật toán lý thuyết số?
    • thuật toán ma trận?
    • thuật toán đồ thị?
    • thuật toán hình học?
    • thuật toán lượng tử?
    • thuật toán ngẫu nhiên / ngẫu nhiên?
    • lập trình tuyến tính?
    • mô hình tính toán?
    • lý thuyết phức tạp cơ bản và thuật toán?
  • Nếu bạn muốn hiểu làm thế nào để tìm ra thuật toán của riêng mình, hãy tập trung vào tìm hiểu các cấu trúc dữ liệu đã biết được sử dụng trong không gian vấn đề mà bạn đang nghiên cứu (vì vậy, hiểu sâu về kiến ​​thức hiện có) và tìm hiểu rõ về lý thuyết và mô hình phức tạp của tính toán. Những điều này sẽ mang lại cảm giác trực quan tốt về những gì có thể cho một vấn đề nhất định và những cách tiếp cận nào có thể sẽ thành công tốt hơn, ngay cả khi bạn gặp khó khăn trong việc chứng minh giới hạn chính thức.

Những cuốn sách như Papadimitriou hay Arora / Barak về Lý thuyết phức tạp sẽ là gợi ý của tôi để theo dõi Corman để hiểu rõ hơn về thuật toán nào có thể và xây dựng một số trực giác, nhưng tôi sẽ chỉ tìm đến các bài báo tổng quan hiện đại về các lĩnh vực cụ thể và tìm cách tốt nghiệp và tìm kiếm sách cấp độ nghiên cứu về các chủ đề cụ thể hơn nếu bạn muốn làm quen với mức độ hiểu biết hiện đại.


1
Bạn hỏi một câu hỏi rất hay. Tôi quan tâm đến các thuật toán lý thuyết số vì vậy tôi đã xem xét Lý thuyết số thuật toán của Bach và Shallit. Tôi đang tìm kiếm những cuốn sách sẽ xây dựng các kỹ thuật phát triển thuật toán của tôi ngoài Cormen.
Eugene

1
Tôi không tìm kiếm chiều sâu, nhưng bề rộng. Không phải là lý thuyết phức tạp cơ bản, mà là giới thiệu về các thuật toán / cấu trúc dữ liệu mà tôi nghe thấy nhưng không có trong CLRS (hoặc chỉ xuất hiện dưới dạng các vấn đề) để thêm vào kho lập trình của những điều tôi đã nghe nói; những thứ như: A * search, Best First Search, bộ lọc Bloom, nén tệp / hình ảnh, Burstsort, Model Markov ẩn, phân loại Naive Bayes, thuật toán lượng tử, danh sách bỏ qua, TimSort, Treaps, Tries, thuật toán sơ đồ Voronoi, v.v. chỉ là một tập hợp các bài viết thú vị về nhiều chủ đề như Ngọc trai lập trình của Bentley.
dr jimbob

16

Như những người khác đã lưu ý, sách về thuật toán (nâng cao) được lựa chọn tốt nhất theo chủ đề. Một tài liệu tham khảo chung tốt nhưng nặng với phân tích nghiêm ngặt có lẽ là Nghệ thuật lập trình máy tính của Knuth.

Đối với các kỹ thuật phân tích, bạn có thể quan tâm đến Giới thiệu về Phân tích thuật toán của Sedgewick và Flajolet, và Kết hợp thuật toán của Flajolet và Sedgewick để có thêm lý thuyết theo cùng một hướng.

Để biết cách tiếp cận giải quyết các vấn đề khó, hãy xem Thuật toán cho các vấn đề khó của Hromkovič.


5

Bạn đã xem Sổ tay khoa học máy tính lý thuyết

Nếu bạn muốn vượt ra khỏi các thuật toán bắt buộc và chuyển sang lập trình chức năng, hãy xem Cấu trúc dữ liệu hoàn toàn chức năng . Tôi biết tiêu đề nói cấu trúc dữ liệu nhưng các thuật toán trong cuốn sách có thể mở ra cho bạn một cách lập trình khác.

CHỈNH SỬA

Tôi đã xem mô tả khóa học cho CS 787 và các lớp hiện tại

Nó ghi chú

Chúng tôi sẽ chủ yếu sử dụng các bài báo từ các tài liệu. Chúng sẽ được cung cấp dưới dạng bản phát hoặc qua web. Một số cuốn sách về thuật toán sẽ được đưa vào dự trữ tại thư viện Wendt.

Nếu là tôi, tôi sẽ liên lạc với thư mục của người hướng dẫn . :)


Không, tôi chưa thấy cuốn cẩm nang. Cám ơn vì sự gợi ý!
Eugene

Ồ Tôi không thể tìm thấy thông tin khóa học. Cảm ơn các liên kết.
Eugene

-2

Các thuật toán máy tính là chủ đề rất phức tạp và khó hiểu, vì vậy không có cuốn sách hay nhất, tức là chỉ có một cuốn sách sẽ giải thích cho bạn mọi thứ. Bạn cần phải đọc một vài trong số họ để có được chủ đề này.

đây là 2 xu của tôi dựa trên 10 năm lập trình của tôi và tham dự nhiều cuộc phỏng vấn:

  1. Hướng dẫn thiết kế thuật toán của Steven S. Skiena
  2. Các thuật toán ( http://algs4.cs.princeton.edu/home/ ) của Sedgwick
  3. Giới thiệu về thuật toán của Thomas Cormen
  4. Thuật toán cho các cuộc phỏng vấn của Adnan Aziz
  5. Thuật toán Python: Nắm vững các thuật toán cơ bản trong ngôn ngữ Python
  6. Các thuật toán được mở khóa bởi Thomas Cormen

Tài liệu tham khảo:


4
tại sao bạn đề nghị những điều này?
Raphael

3
Cụ thể, tại sao bạn lại đề xuất "Giới thiệu về thuật toán" của Cormen và cộng sự để trả lời câu hỏi yêu cầu những cuốn sách vượt ra ngoài cuốn sách đó.
David Richerby
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.