Tôi đã học về các thuật toán trong một khóa học đại học nhiều năm trước. Nhưng nếu bạn định làm một thuật toán bằng một cuốn sách, thì bạn cần một cuốn sách hay. Hai cuốn sách nổi bật với tôi là cách để đi vào thuật toán:
- Hướng dẫn thiết kế thuật toán của Steven S. Skiena
- Giới thiệu về thuật toán của T Cormen, C Leiserson, R Rivest và C Stein
Đầu tiên có lẽ là nhiều hơn một hướng dẫn thực hành, trong khi sau đó giống như kinh thánh, nhưng với bằng chứng.
Chiến lược bạn có thể làm theo sẽ bao gồm đọc, làm các bài tập lý thuyết và sau đó thực hiện càng nhiều càng tốt, tập trung vào các thuật toán / vấn đề bạn thấy thú vị hoặc thách thức hoặc cả hai. Vì vậy, hãy cố gắng bao gồm tất cả các khía cạnh của thuật toán, không chỉ thực hiện chúng. Điều này sẽ bao gồm nghiên cứu sự phức tạp về thời gian và không gian của họ và chứng minh tính đúng đắn của họ. Việc nghiên cứu các thuật toán không chỉ đơn thuần là thực hiện các thuật toán.
Sau khi bạn đã có đủ kinh nghiệm, hãy bắt đầu chuyên môn. Ví dụ, nếu bạn bắt đầu quan tâm đến Hình học tính toán hoặc các thuật toán không chặn, thì hãy bắt đầu khám phá sách và tài liệu nghiên cứu trong lĩnh vực này.
Chuyên môn hóa là tốt, nhưng cũng tốt khi lấy mẫu các kỹ thuật từ các lĩnh vực khác, vì vậy đọc rộng về các thuật toán (và thực hiện các thuật toán như vậy) là một cách tốt để duy trì một bộ kỹ năng rộng.
EDIT: Sau khi trải qua các thuật toán giới thiệu, bạn có thể tham khảo các cuốn sách như Thuật toán ngẫu nhiên của Motwani & Raghavan hoặc Thuật toán xấp xỉ của Vazirani . Những cuốn sách này là một cuộc khảo sát (và ở một mức độ nào đó, một bài tập học tập tốt về kỹ thuật toán học) trong các kỹ thuật thiết kế thuật toán tiên tiến hơn. Họ cũng mở rộng cái nhìn sâu sắc của bạn về nhiều lĩnh vực khác trong CS như Đồ thị và Mạng, Thiết kế cấu trúc dữ liệu và Tối ưu hóa.