Nguồn học thuật toán - Sách hay về thuật toán P1

Thuật toán là một khái niệm quan trọng trong lập trình. Bản chất thuật toán là tập hợp các bước để giải quyết một vấn đề, giúp lập trình viên tối ưu hóa hiệu suất, độ phức tạp và khả năng mở rộng của chương trình... Các loại thuật toán phổ biến thường có độ phức tạp thấp, hiệu quả cao và có thể giải quyết được nhiều bài toán khác nhau. Phổ biến nhất phải kể đến:

  • Sắp xếp: là những thuật toán dùng để sắp xếp các phần tử trong một cấu trúc dữ liệu theo một tiêu chí nào đó, như tăng dần, giảm dần, theo bảng chữ cái,... Có nhiều thuật toán sắp xếp khác nhau, như nhanh (Quick Sort), chèn (Insertion Sort), nổi bọt (Bubble Sort),... Mỗi thuật toán sắp xếp có ưu và nhược điểm riêng, tùy thuộc vào kích thước và tính chất của dữ liệu.
  • Tìm kiếm: là những thuật toán dùng để tìm kiếm các phần tử trong một cấu trúc dữ liệu, như mảng, danh sách liên kết, cây, đồ thị,... Có nhiều thuật toán tìm kiếm khác nhau, như tuần tự (Linear Search), nhị phân (Binary Search), tìm theo chiều sâu (Depth-First Search), tìm theo chiều rộng (Breadth-First Search),... Mỗi thuật toán tìm kiếm có độ phức tạp và hiệu quả, ưu nhược khác nhau, tùy thuộc vào cấu trúc và sắp xếp của dữ liệu.
  • Quy hoạch động: là những thuật toán dùng để giải quyết các bài toán có tính chất phân rã thành các bài toán con nhỏ hơn và có thể tái sử dụng kết quả đã tính. Thuật toán lập trình động giúp tiết kiệm thời gian và bộ nhớ khi giải quyết các bài toán có tính chất trùng lặp hoặc quy nạp. Một số ví dụ tiêu biểu là bài toán cái túi (Knapsack Problem), Fibonacci, đường đi ngắn nhất (Shortest Path Problem),...
  • Rất nhiều các thuật toán khác: Dijkstra, Hashing...
Thuật toán có đa dạng và đôi lúc khá phức tạp, việc hiểu cặn kẽ được một bài toán không phải vấn đề đơn giản. Đổi lại, việc luyện thuật toán sẽ giúp lập trình viên rèn luyện tư duy lập trình và giải quyết vấn đề rất nhiều. Chính vì vậy, xin chia sẻ tới mọi người list những cuốn eBook xịn mịn về thuật toán, vừa cung cấp cho bạn những kiến thức hay về thuật toán, vừa có bài tập để luyện tập thực hành nha...

1. SÁCH HAY VỀ THUẬT TOÁN (ENGLISH)

  • Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne: Không cần bàn về độ chuẩn, đây chính là cuốn sách giáo khoa cổ điển chứa các thuật toán và cấu trúc dữ liệu quan trọng nhất được sử dụng ngày nay. Nó gồm đầy đủ các chủ đề như sắp xếp, tìm kiếm, đồ thị, chuỗi và ngữ cảnh. Hơn thế nữa, còn có những nội dung trực tuyến như các đoạn trích dẫn, bài giảng, bài tập tư duy và lập trình giúp người học nâng cao trình độ...
  • Introduction to Algorithms: Một trong những cuốn sách kinh điển và toàn diện về thuật toán. Cuốn sách được viết bởi các chuyên gia hàng đầu trong lĩnh vực khoa học máy tính như Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest và Clifford Stein. Cuốn sách bao gồm các chủ đề như sắp xếp, tìm kiếm, đồ thị, chuỗi, mã hóa, song song hóa... được viết logic, rõ ràng, chi tiết... PDF: Introduction to Algorithms, Third Edition (edutechlearners.com)
  • Learning algorithm eBook (PDF) - Riptutorial.com: Đây là sách điện tử chứa các chương về các chủ đề thuật toán khác nhau, có kèm cả code và bài tập chi tiết.
  • Algorithms.pdf – (Free download books): Chiếc eBook miễn phí của Jeff Erickson, giáo sư khoa học máy tính tại Đại học Illinois, Urbana-Champaign. Quyển sách được soạn dựa trên các lớp thuật toán mà ông đã dạy từ năm 1998, bao gồm các chủ đề như đệ quy, chia để trị, sắp xếp và tìm kiếm, cấu trúc dữ liệu, thuật toán đồ thị, hình học tính toán (computational geometry ), và NP-completeness...
  • [Competitive Programmer’s Handbook]: book.pdf (cses.fi) Tài liệu dành cho những người muốn tham gia các cuộc thi lập trình, gồm có giới thiệu các kỹ năng và chiến lược cần thiết để giải quyết các bài toán hay, lạ, khó... rất đa dạng.
  • [The Algorithm Design Manual ]: Cuốn sách này là một nguồn tài liệu thực tế và hữu ích cho những người muốn học thuật toán vì nó giải thích các vấn đề thường gặp trong lập trình, cách phân tích và giải quyết chúng bằng thuật toán một cách chặt chẽ, logic...
  • 15+ Algorithms Books for Free! [PDF] | InfoBooks.org: Đây là trang web cung cấp tuyển tập sách điện tử miễn phí về thuật toán. Bạn có thể tìm thấy tại đây những cuốn sách về giới thiệu cơ bản, cấu trúc dữ liệu, thiết kế thuật toán... phù hợp với nhu cầu của bản thân. Mọi người có thể và nên xem thử trước khi tải về. Hai quyển sách mà mình đề cử nhất trong số 15 cuốn này: Problem Solving with Algorithms and Data Structures, Design and Analysis of Algorithms. Các quyển số 8 trở đi có phân hóa khá rõ đến các nhóm đối tượng cụ thể, khuyến khích mọi người xem và cân nhắc kĩ trước khi tải về.
📎Các cuốn sách trên thì đều được viết bằng tiếng Anh, mọi người học không chỉ tăng kiến thức mà còn được trau dồi khả năng ngoại ngữ nữa đó. Lần tới mình sẽ giới thiệu các trang học bằng tiếng Việt và các link bài luyện tập hay nha ~~ Nếu xuất hiện lỗi hay vấn đề ở bất kì link dẫn nào, hãy phản hồi lại ngay giúp mình nhé 💓
Đặng Quốc Huy

Tôi là Đặng Quốc Huy. Hiện tại, tôi là sinh viên Trường Đại học CNTT & Truyền thông Việt Hàn! Trong tương lai tôi muốn trở thành một lập trình viên giỏi. Đây là blog chia sẻ những gì mà tôi biết!