Giáo trình thuật toán và thuật giải của hoàng kiếm năm 2024

Nếu bạn là người đam mê tin học, nếu bạn là người muốn khám phá về lập trình, hẳn bạn phải biết đến một cuốn sách tin học rất nổi tiếng ở Việt Nam trong nhiều năm trở lại đây. Từ những học sinh không chuyên đến những thành viên đội tuyển thi quốc tế tin học, có lẽ không một ai chưa từng học qua cuốn sách được biên soạn bởi thầy Lê Minh Hoàng. Bạn sẽ được đọc về các giải thuật trong lập trình như giải thuật sắp xếp, tìm kiếm, liệt kê, quy hoạch động, các giải thuật trên đồ thị…

Mục lục:

PHẦN 1 – BÀI TOÁN LIỆT KÊ

  • 1-Nhắc lại một số kiến thức đại số tổ hợp
  • 2-Phương pháp sinh
  • 3-Thuật toán quay lui
  • 4-Kỹ thuật nhánh cận

PHẦN 2 – CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

  • 1-Các bước cơ bản khi tiến hành giải các bài toán tin học
  • 2-Phân tích thời gian thực hiện giải thuật
  • 3-Đệ quy và giải thuật đệ quy
  • 4-Cấu trúc dữ liệu biểu diễn danh sách
  • 5-Ngăn xếp và hàng đợi
  • 6-Cây
  • 7-Ký pháp tiền tố, trung tố và hậu tố
  • 8-Sắp xếp
  • 9-Tìm kiếm

PHẦN 3 – QUY HOẠCH ĐỘNG

  • 1-Công thức truy hồi
  • 2-Phương pháp quy hoạch động
  • 3-Một số bài toán quy hoạch động

PHẦN 4 – CÁC THUẬN TOÁN TRÊN ĐỒ THỊ

  • 1-Các khái niệm cơ bản
  • 2-Biểu diễn đồ thị trên máy tính
  • 3-Các thuật toán tìm kiếm trên đồ thị
  • 4-Tính liên thông của đồ thị
  • 5-Vài ứng dụng của các thuật toán tìm kiếm trên đồ thị
  • 6-Chu trình Euler, đường euler, đồ thị euler
  • 7-Chu trình Hamilton, đường đi Hamilton, Đồ thị Hamilton
  • 8-Bài toán đường đi ngắn nhất
  • 9-Bài toán cây khung nhỏ nhất
  • 10-Bài toán luồng cực đại trên mạng
  • 11-Bài toán tìm bộ ghép cực đại trên đồ thị hai phía
  • 12-Bài toán tìm bộ ghép cực đại với trọng số cực tiểu trên đồ thị hai phía – thuật toán Hungari
  • 13-Bài toán tìm bộ ghép cực đại trên đồ thị

Link tải: <//drive.google.com/open?id=1sCNMKBN%5FbywmqOgAvI6pHRcnz9wHoy0->

  • Giải thuật

Chắc hẳn những bạn học chuyên tin đều biết đến cuốn sách này, bởi nó như là một cuốn sách giáo khoa cho chuyên tin với các kiến thức cơ bản từ quay lui, sắp xếp đến quy hoạch động, đồ thị.

Link Download

2. Tài liệu giáo khoa chuyên tin

Về cơ bản, phần một và phần hai giống với giải thuật và lập trình, tuy nhiên được bổ sung thêm một số kiến thức như: số Catalan, xử lý số lớn bằng xâu,... Kèm theo đó là những bài tập vô cùng hấp dẫn để các bạn luyện tập.

Phần ba chứa các kiến thức nâng cao hơn, đó là hình học và lý thuyết trò chơi.

Link Download:

  • Tập 1
  • Tập 2
  • Tập 3 - phần 1
  • Tập 3 - phần 2

3. Một số vấn đề đáng chú ý trong môn tin học

Cuốn sách này được viết bởi các cựu học sinh trường chuyên Phan Bội Châu - Nghệ An. Nó chứa các kiến thức tuyệt hay mà tài liệu giáo khoa chuyên tin hay giải thuật và lập trình đều không có như: duyệt ưu tiên, thuật toán tìm kiếm chuỗi KMP, quy hoạch động trạng thái, quy hoạch động vị trí cấu hình, quy hoạch động trên cây, tô màu đồ thị, thuật toán Dijkstra với đỉnh ảo, Interval Tree, Binary Index Tree, ...

Link Download

4. Bản dịch Introduction to Algorithm

Link download

(Cảm ơn bạn Nguyễn Văn Khởi đã chia sẻ link).

5. KC Book

  • Quyển 1
  • Quyển 3

6. Guide To Competitive Programming

Nếu bạn có thể đọc tiếng Anh trôi chảy, bạn có thể tham khảo quyển "Guide To Competitive Programming" được viết năm 2017. Sách sử dụng ngôn ngữ C++ và có nhiều kiến thức mới.

Cấu trúc dữ liệu và thuật toán là điều bắt buộc mà bất kì lập trình viên nào cũng đều phải biết. Quản lý dữ liệu có cấu trúc sẽ giúp giảm thời gian tính toán đi rất nhiều, còn thuật toán thì không phải nói tới nó quan trọng như nào, tuy rằng với thời đại mà máy tính rất mạnh mẽ thì việc một thuật toán chạy với O(n) hay O(n^2) có thể không quan trọng lắm nhưng khi dữ liệu lớn lên thì mọi thứ đều cần phải tối ưu để có được những kết quả tốt trong thời gian cho phép.

Tại Bách Khoa, môn Cấu trúc dữ liệu và thuật toán khá là nhàm chán, không có thực hành, học lý thuyết xuông và đi thi cũng thi trên giấy ( là thi code trên giấy hoặc là viết mã giả). Môn này đề cập tới những gì sâu xa nhất, giới thiệu tới những cấu trúc dữ liệu cơ bản, cách cài đặt những cấu trúc dữ liệu cơ bản này, các thao tác trên cấu trúc dữ liệu ( như chèn, xóa, sửa, ...). Về phần thuật toán các bạn sẽ được giới thiệu tới những thuật toán như sắp xếp, tìm kiếm,... và một số thuật toán trên đồ thị ( phần này toán rời rạc sẽ học sâu hơn, và nhiều khi Toán rời rạc với Cấu trúc dữ liệu học cùng kì thì các thầy dạy cấu trúc dữ liệu thường bàn với nhau việc lược bỏ phần này).

Tuy là học lý thuyết xuống nhưng các bạn cũng không nên quá nản vì môn này mới là khởi đầu thôi. Ngày trước môn này 3 tín và có thực hành, tuy nhiên bây giờ đã giảm xuống 2 tín và hoàn toàn không có thực hành. Phần thực hành đã được tách ra hẳn 1 môn khác là thuật toán ứng dụng mà các thầy vẫn hay gọi là cấu trúc dữ liệu 2, khi học môn này các bạn thao hồ code mỏi tay, code tới chán không muốn code nữa cơ nên không cần thắc mắc là môn này chỉ học lý thuyết rất nhàm chán nha. Nó sẽ cung cấp cho bạn kiến thức nền vững chắc nhất để học các môn học sau này.

Chủ đề