01/10/2018, 00:18

Gợi ý 1 vài cuốn sách bằng tiếng Việt tốt về giải thuật?

Anh Đạt có thể gợi ý 1 vài cuốn sách bằng tiếng Việt tốt về giải thuật trước không ạ?

Mai Anh Dũng viết 02:25 ngày 01/10/2018

Sách giải thuật của thầy Lê Minh Hoàng

http://is.ptithcm.edu.vn/~tdhuy/Programming/Giai_thuat_va_Lap_trinh.pdf

Nhưng mà Đạt quên Pascal lâu rồi, đọc quyển này khô khan lắm. Đạt đang làm một khóa học về CTDL và GT.

Nội dung thế này, bạn có thể tìm hiểu các nội dung giống như outline bên dưới.

I. Giới thiệu chương trình
    1. Mục đích & mục tiêu của chương trình
    2. Giới hạn của chương trình
    3.
    
II. Đánh giá độ phức tạp của giải thuật
    1. Các bước phân tích thuật toán
    2. Sự phân lớp độ phức tạp của thuật toán
    3. Phân tích trường hợp trung bình
    4. Luyện tập & câu hỏi

III. Các thuật toán tìm kiếm
    1. Tìm kiếm tuyến tính (Linear search)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    2. Tìm kiếm nhị phân (Binary search)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    3. Ôn tập cuối chương
            Bài tập luyện tập
            Các câu hỏi thường gặp khi phỏng vấn

IV. Các thuật toán sắp xếp
    1. Chọn trực tiếp (Selection sort)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    2. Chèn trực tiếp (Insertion sort)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    3. Đổi chỗ trực tiếp (Interchange sort)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    4. Nổi bọt (Bubble sort)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    5. Shaker sort
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    6. Chèn nhị phân (Binary Insertion sort)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    7. Quick sort (Binary sort)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, , cách chọn phần tử trung vị (pivot), ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    8. Shell sort
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    9. Heap sort
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    10. Merge sort
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    11. Radix sort
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá: độ phức tạp, ưu điểm, khuyết điểm.
            Mức độ phổ biến: khi sử dụng & khi phỏng vấn
    9. Ôn tập cuối chương
            Bài tập luyện tập
            Các câu hỏi thường gặp khi phỏng vấn

V. Queue & Stack
    1. Hàng đợi (Queue)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá
    2. Ngăn xếp (Stack)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá
    3. Hàng đợi ưu tiên (Priority Queue)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá
    4. Hàng đợi hai đầu (Double-Ended Queue)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá
    5. Ngăn xếp xoay vòng (Circle stack)
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá
    6. Ôn tập cuối chương
            Bài tập luyện tập
            Các câu hỏi thường gặp khi phỏng vấn

VI. Danh sách liên kết
    1. Danh sách liên kết đơn
            Định nghĩa, Phân tích & Thuật toán
            Code C++: tổ chức dslk, search/insert/delete/
            Thuật toán sắp xếp trên dslk đơn
    2. Danh sách liên kết đôi
            Định nghĩa, Phân tích & Thuật toán
            Code C++: tổ chức dslk đôi, search/insert/delete
            Thuật toán sắp xếp trên dslk đôi
    3. Ôn tập cuối chương
            Bài tập luyện tập
            Các câu hỏi thường gặp khi phỏng vấn

VII. Cây nhị phân
    1. Cây nhị phân (Binrary Tree)
            Định nghĩa, Phân tích & Thuật toán
            Code C++: tổ chức cây nhị phân, tìm kiếm LNR/LRN/NLR, insert/delete node, duyệt cây theo chiều rộng, duyệt cây theo chiều sâu
            Đánh giá
    2. Cây nhị phân tìm kiếm (Binary Search Tree)
            Định nghĩa, Phân tích & Thuật toán
            Code C++: tổ chức BST, tìm kiếm LNR/LRN/NLR, insert/delete node, duyệt cây theo chiều rộng, duyệt cây theo chiều sâu
            Đánh giá
    3. Cây cân bằng (AVL Tree)
            Định nghĩa, Phân tích & Thuật toán
            Code C++: tổ chức BST, tìm kiếm LNR/LRN/NLR, insert/delete node, duyệt cây theo chiều rộng, duyệt cây theo chiều sâu, nhận biết và tái cân bằng cây nhị phân
            Đánh giá
    4. 2-3 Tree
            Định nghĩa, Phân tích & Thuật toán
            Code C++: tổ chức BST, tìm kiếm LNR/LRN/NLR, insert/delete node, duyệt cây theo chiều rộng, duyệt cây theo chiều sâu
            Đánh giá
    5. B-Tree
            Định nghĩa, Phân tích & Thuật toán
            Code C++: tổ chức BST, tìm kiếm LNR/LRN/NLR, insert/delete node, duyệt cây theo chiều rộng, duyệt cây theo chiều sâu
            Đánh giá
    6. Infix, Postfix & Prefix notations
            Định nghĩa, Phân tích & Thuật toán
            Code C++
            Đánh giá
    7. Ôn tập cuối chương
            Bài tập luyện tập
            Các câu hỏi thường gặp khi phỏng vấn

VIII. Cấu trúc dữ liệu nâng cao (optional)
    1. Kỹ thuật đánh số chỉ mục (Indexing)
            Định nghĩa, Phân tích & Thuật toán
            Thuật toán
            Code C++
    2. Bảng băm (Hash table)
            Định nghĩa, Phân tích & Thuật toán
            Thuật toán: kỹ thuật băm, giải quyết đụng độ (collision)
            Code C++: kỹ thuật băm, giải quyết collision, search/insert/delete
    3. Đồ thị (Graphs)
            Định nghĩa, Phân tích & Thuật toán
            Thuật toán: A-star, Prim, Kruskal, Dijsktra...
            Code C++: các thuật toán, duyệt đồ thị (theo chiều rộng, theo chiều sâu)
    4. Ôn tập cuối chương
            Bài tập luyện tập
            Các câu hỏi thường gặp khi phỏng vấn

IX. Luyện tập tổng hợp
    1. Bài toán thực tế và giải pháp
NamNH viết 02:33 ngày 01/10/2018

Cảm ơn anh Đạt, em sẽ bookmark và nghiên cứu.

Nguyễn Hồng Cường viết 02:31 ngày 01/10/2018

Khóa CTDL này nằm trong khóa C++ 2016 đúng k anh??

Mai Anh Dũng viết 02:22 ngày 01/10/2018

Nằm riêng ra em. Vì khóa C++ anh đã thêm vào OOP rồi. Nên sẽ bắt đầu rất dài, có thể lên tới 300 videos.

Nên khóa này anh chuẩn bị song song. Khi nào OOP xong anh sẽ làm

Nguyen Ca viết 02:20 ngày 01/10/2018

Sách cẩm nang giải thuật của Nguyễn Phúc Trường sinh cũng hay, sách dich và chuyển từ pascal ->C. sách này đang gối đầu đây

NamNH viết 02:20 ngày 01/10/2018

Em nhận thấy 1 điều, những người đã đi làm hay thầy giáo đều có chung 1 suy nghĩ, học tốt giỏi thuật, nắm vững căn bản thì học ngôn ngữ nào, công nghệ nào, làm dự án gì cũng ok hết.
Chắc đây là kinh nghiệm đúc kết từ những người đi trước.
Thay vì cày nhiều ngôn ngữ, tập trung cày căn bản C/C++ và giải thuật .
Sẽ sớm đăng ký khóa học C++ trên Ucademy của anh Đạt và sẽ tiếp tục ủng hộ khóa CTDL & GT của anh trong thời gian tới.

Tớ không giỏi Văn.... viết 02:28 ngày 01/10/2018

Chỗ mình còn quyển nào khác nữa không
Tốt nhất nên là GT dùng C/C++ để mô tả nhá

Nguyễn Xuân Phúc viết 02:34 ngày 01/10/2018
  • Giải Thuật và Lập Trình (DSAP Textbook) của thầy Lê Minh Hoàng

  • Bộ “Tài liệu giáo khoa chuyên tin” gồm 3 cuốn lý thuyết và các cuốn bài tập (không rõ số lượng) của các cây đại thụ trong lập trình thuật toán Việt nam (thầy Hồ Sĩ Đàm, thầy Lê Minh Hoàng, thầy Đỗ Đức Đông, thầy Nguyễn Thanh Hùng)

  • 150 bài toán tin (chỉ bài tập)

Huy Hoàng Phạm viết 02:30 ngày 01/10/2018

Đây là cái tư tưởng của những người học thuật toán nhiều nên thần thánh hoá nó quá lên thôi nhé ;).

Thuật toán chỉ là cái nền. Công nghệ/ngôn ngữ muốn giỏi là phải nắm vững các khái niệm cơ bản của nó, syntax, API, cần thời gian làm việc tiếp xúc. Không phải cứ rành về động cơ là đua xe giỏi, không phải cứ thuộc status skill tướng là đánh dota giỏi.

Vì cái suy nghĩ thần thánh hoá thuật toán quá nên Việt Nam thi ACM thì giải này giải nọ mà phần mềm nổi tiếng thì ko có, thư viện Open Source nổi tiếng ko có, Software Engineer mà có tầm ảnh hưởng cũng ko có nốt

Quân viết 02:26 ngày 01/10/2018

Mọi người cho mình hỏi, mình nhớ thầy Hoàng có 2 cuốn, 1 cuốn là giải thuật lập trình như ở trên, còn 1 cuốn nữa mình không nhớ rõ tên nó là thuật toán ứng dụng hay tin học thuật toán gì đó. Mình tìm mãi mà không thấy có. Mọi người có biết chỉ mình với. Cảm ơn mọi người.

HK boy viết 02:22 ngày 01/10/2018

còn 1 cuốn nữa mình không nhớ rõ tên nó là thuật toán ứng dụng hay tin học thuật toán gì đó

Có phải Tài liệu chuyên Tin (3 tập) không? Quyền này thầy Hoàng cùng với nhiều thấy khác viết.

Quân viết 02:32 ngày 01/10/2018

Ah, mình thấy rồi, nó là quyển 1 ở đây: Giáo trình Giải thuật & Lập trình - Lê Minh Hoàng [PDF]

Bài liên quan
0