Showing posts with label Cùng học AI. Show all posts
Showing posts with label Cùng học AI. Show all posts

Đừng Để Bị "Outdate": Top 3 Cuốn Sách AI Phải Đọc Ngay Trong Năm 2026

Chào các bạn, đặc biệt là các "đồng môn" sinh viên IT và những bạn trẻ đang loay hoay trước làn sóng AI càn quét khắp mọi mặt trận. Chúng ta nghe quá nhiều về ChatGPT, Gemini hay những con AI có khả năng viết code "thần sầu". Nhưng để thực sự hiểu và làm chủ được nó, thay vì chỉ là người dùng bề nổi, thì việc đọc sách vẫn là cách bền vững nhất.

Hôm nay, mình sẽ review cho các bạn 3 cuốn sách về AI cực chất trên Amazon. Đây là những "bí kíp" giúp bạn thay đổi tư duy từ một người sợ hãi bị AI thay thế thành người điều khiển cuộc chơi.

Đừng Để Bị "Outdate": Top 3 Cuốn Sách AI Phải Đọc Ngay Trong Năm 2026


1. Life 3.0: Being Human in the Age of Artificial Intelligence - Max Tegmark

Nếu bạn muốn một cái nhìn tổng quan về tương lai của nhân loại khi AI phát triển vượt bậc, đây là cuốn sách "gối đầu giường". Max Tegmark không chỉ nói về code, ông nói về triết học, đạo đức và những kịch bản có thể xảy ra: Liệu AI sẽ là người bạn đồng hành hay là dấu chấm hết cho loài người?

Life 3.0: Being Human in the Age of Artificial Intelligence - Max Tegmark


Tại sao sinh viên IT cần đọc? Để hiểu rằng công nghệ bạn đang học không chỉ là dòng lệnh, nó là tương lai của cả một nền văn minh.

Mua ngay Life 3.0 trên Amazon

2. Artificial Intelligence: A Modern Approach - Stuart Russell & Peter Norvig

Được mệnh danh là "cuốn kinh thánh" của ngành AI. Hầu hết các đại học danh tiếng trên thế giới đều dùng cuốn này làm giáo trình. Phiên bản mới nhất (4th Edition) cập nhật rất nhiều về Deep Learning và các xu hướng hiện đại.

Artificial Intelligence: A Modern Approach - Stuart Russell & Peter Norvig

Tại sao nên chọn cuốn này? Nếu bạn muốn đi sâu vào con đường nghiên cứu hoặc trở thành kỹ sư AI chuyên nghiệp, kiến thức nền tảng cực kỳ vững chắc trong này sẽ giúp bạn không bị hổng kiến thức khi chạy theo các công nghệ mới.

Sở hữu ngay "Kinh thánh AI" tại đây

3. Deep Learning

Deep Learning - Ian Goodfellow, Yoshua Bengio và Aaron Courville


Cuốn sách này dành cho những bạn "hardcore" thực sự. Được viết bởi những "ông trùm" trong làng Deep Learning, nó cung cấp đầy đủ từ toán học, xác suất đến các kiến trúc mạng thần kinh phức tạp nhất. Đây là cuốn sách giúp bạn hiểu rõ "bộ não" của AI hoạt động như thế nào.

Mua sách Deep Learning bản gốc

💡 Một chút lưu ý về việc đặt sách

Các link mình đính kèm bên trên là link Affiliate của Amazon. Khi các bạn click vào và mua sách, mình sẽ nhận được một khoản hoa hồng nhỏ xíu từ Amazon để duy trì blog và tiếp tục review thêm nhiều sách hay cho mọi người. Yên tâm là giá sách không hề thay đổi, thậm chí mua qua Amazon thường có ưu đãi tốt hơn mua lẻ bên ngoài nữa đó!

Mua sách gốc từ Amazon cũng là cách để chúng mình ủng hộ tác giả và nhận được những bản in chất lượng nhất, giấy xịn và đầy đủ sơ đồ màu sắc, rất cần thiết cho việc học kỹ thuật.

Lời kết

Thời đại AI không đáng sợ nếu chúng ta trang bị cho mình tư duy đúng đắn và kiến thức nền tảng tốt. Hy vọng 3 cuốn sách này sẽ là bệ phóng giúp các bạn tiến xa hơn trên con đường sự nghiệp của mình.

Đừng quên đăng ký nhận bản tin của Blog (link phía dưới sidebar) để không bỏ lỡ những bài review công nghệ và bí kíp nghề nghiệp dành riêng cho sinh viên IT Việt Nam nhé!

Happy reading and coding!

Tổng quan về bài toán tóm tắt dữ liệu bằng ngôn ngữ (Linguistic Summarization - LS) dựa trên các tài liệu đã cung cấp.

1. Mốc thời gian và các nhóm tác giả tiêu biểu

Bài toán tóm tắt dữ liệu bằng ngôn ngữ (Linguistic Summarization - LS) đã trải qua hơn 4 thập kỷ phát triển, đi từ những ý tưởng nền tảng đến các ứng dụng phức tạp:

  • Năm 1982: R.R. Yager lần đầu tiên đề xuất khái niệm tóm tắt dữ liệu bằng ngôn ngữ dựa trên lý thuyết tập mờ của L.A. Zadeh.
  • Thập niên 1990 - 2000: Nhóm tác giả J. Kacprzyk, R.R. Yager và S. Zadrożny đóng vai trò tiên phong trong việc đưa lý thuyết vào thực tiễn thông qua các "protoform" (dạng mẫu câu), ứng dụng hiệu quả trong cơ sở dữ liệu quan hệ và hỗ trợ quyết định kinh doanh.
  • Giai đoạn 2005 - 2008: LS mở rộng từ dữ liệu tĩnh sang chuỗi thời gian (time series) bởi nhóm J. Kacprzyk, A. Wilbik. Đồng thời, hệ thống SAINTETIQ (Bosc, Dubois, Prade) phát triển triết lý tóm tắt phân cấp.
  • 2008 - 2011: A. Niewiadomski, D. Wu và J.M. Mendel mở rộng mô hình sang tập mờ loại 2 (Type-2 FS) nhằm xử lý tốt hơn sự không chắc chắn của ngôn từ.
  • 2011 - Nay: Hướng tối ưu hóa phát triển mạnh mẽ với các thuật toán siêu heuristic (GA, ACO) bởi R. Castillo-Ortega và cộng sự.
  • 2015 - Nay: Nhóm tác giả Việt Nam (Nguyễn Cát Hồ, Phạm Thị Lan, Phạm Đình Phong) đề xuất sử dụng Đại số gia tử (Hedge Algebra), giải quyết các hạn chế về ngữ nghĩa chủ quan của tập mờ truyền thống.



2. Các phương pháp tiếp cận và nền tảng lý thuyết

Các nghiên cứu về LS hiện nay tập trung vào bốn nền tảng toán học và thuật toán chủ đạo:

  • Lý thuyết tập mờ và Protoform: Tính toán độ đúng đắn ($truth$ $degree$) của các câu chứa từ lượng hóa mờ và tính từ mờ.
  • Sinh ngôn ngữ tự nhiên (NLG): Kết hợp suy luận mờ với kỹ thuật NLG để tạo ra báo cáo tự nhiên hơn thay vì các khuôn mẫu cứng nhắc.
  • Tối ưu hóa và Siêu heuristic: Sử dụng Giải thuật di truyền (GA), Tối ưu hóa bầy đàn (PSO) để tìm kiếm câu tóm tắt tốt nhất trong không gian tìm kiếm khổng lồ.
  • Đại số gia tử (Hedge Algebra): Giải quyết vấn đề cấu trúc đa ngữ nghĩa, giảm sự phụ thuộc vào trực giác con người khi định nghĩa hàm liên thuộc.

3. Ứng dụng thực tiễn

Lĩnh vực Ứng dụng cụ thể
Kinh doanh & Tài chính Phân tích xu hướng giá cổ phiếu, tóm tắt dữ liệu bán hàng, đánh giá hiệu suất quỹ đầu tư.
Y tế Hệ thống BabyTalk (chăm sóc trẻ sơ sinh), theo dõi người cao tuổi qua cảm biến, phân tích nhịp tim.
Kỹ thuật & Khí tượng Phân tích log máy chủ, sinh báo cáo thời tiết tự động (SumTime-Mousam, GALIWeather).
Giáo dục Tóm tắt dữ liệu học tập hỗn hợp (blended learning) từ hệ thống LMS.

4. Những thành tựu đã được giải quyết

Hệ thống tóm tắt ngôn ngữ hiện nay đã đạt được những bước tiến quan trọng trong việc chuẩn hóa cấu trúc và tối ưu hiệu năng.
  • Định hình bộ khung toán học: Xây dựng thành công mô hình protoform chuẩn "Q y are S" và các biến thể điều kiện.
  • Mở rộng sang dữ liệu động: Xử lý tốt các đặc trưng của chuỗi thời gian như xu hướng và độ biến động.
  • Đề xuất tiêu chí đánh giá: Ngoài độ đúng, các độ đo như độ bao phủ, độ đặc tả và tính thông tin giúp chọn lọc câu tóm tắt chất lượng cao.
  • Giảm thiểu không gian tìm kiếm: Áp dụng hiệu quả thuật toán Apriori và chiến lược Greedy để loại bỏ các câu vô nghĩa, tăng tốc độ xử lý.

5. Những vấn đề tồn tại và hướng nghiên cứu mở

Bên cạnh những thành tựu, LS vẫn đối mặt với nhiều thách thức lớn:

  1. Hạn chế về tính diễn giải chủ quan: Sự phụ thuộc vào trực giác khi định nghĩa hàm liên thuộc vẫn là thách thức về tính phổ quát.
  2. Xử lý Big Data & Streaming Data: Chi phí tính toán cho việc sinh tóm tắt theo thời gian thực trên luồng dữ liệu cực lớn vẫn rất cao.
  3. Sự dư thừa thông tin (Redundancy): Vấn đề trích xuất tập hợp câu tóm tắt tối ưu nhất mà không bị trùng lặp ý nghĩa chưa được giải quyết triệt để.
  4. Rào cản đa ngôn ngữ: Thiếu hụt các hệ thống hỗ trợ đa ngôn ngữ hoặc thích ứng xuyên ngôn ngữ (Cross-lingual).
  5. Tích hợp XAI và Học sâu: Kết hợp khả năng của Deep Learning với cấu trúc diễn giải của LS để tạo ra hệ thống AI minh bạch.
  6. Quan hệ nhân quả (Causal relations): Khả năng dùng LS để trả lời câu hỏi "tại sao" trong dữ liệu quy trình vẫn còn đang bỏ ngỏ.

Lập trình viên: Làm chủ kỹ năng sáng tạo phần mềm trong kỷ nguyên AI

 1. Lập trình máy tính: Định nghĩa lại trong thời đại mới

  • Định nghĩa truyền thống: Sử dụng ngôn ngữ lập trình để ra lệnh cho máy tính.

  • Góc nhìn 2026: Lập trình không còn là "gõ code" (coding), mà là "giải quyết vấn đề bằng tư duy hệ thống". Lập trình viên đóng vai trò là kiến trúc sư và người giám sát, sử dụng AI làm cánh tay nối dài để biến ý tưởng thành sản phẩm.

Lập trình viên: Làm chủ kỹ năng sáng tạo phần mềm trong kỷ nguyên AI
Nguồn (CellPhonS)



2. Quy trình làm việc của một Lập trình viên hiện đại

AI đã thay đổi trọng tâm công việc. Thay vì dành 80% thời gian để sửa lỗi (debugging), quy trình giờ đây tập trung vào:

  1. Xác định bài toán: Hiểu sâu nỗi đau của người dùng (User Painpoints).
  2. Thiết kế hệ thống (System Design): Xây dựng cấu trúc tổng thể mà AI có thể hiểu và thực thi.
  3. Điều phối AI (Orchestration): Sử dụng các Prompt phức tạp để AI tạo ra các module code.
  4. Kiểm soát chất lượng (Quality Control): Kiểm thử, tối ưu hiệu suất và đảm bảo an ninh bảo mật (Security) — đây là khâu quan trọng nhất vì AI vẫn có thể tạo ra lỗi hoặc lỗ hổng.
  5. Bảo trì & Nâng cấp: Điều chỉnh hệ thống theo sự thay đổi của thị trường.

3. Ứng dụng AI: Từ "Công cụ" đến "Cộng sự"

  • Tư vấn giải pháp: Dùng AI để so sánh ưu nhược điểm của các Framework (ví dụ: React vs Vue).
  • Tạo mã nguồn: AI viết các đoạn mã lặp lại (Boilerplate code), SQL, hoặc CSS.
  • Kiểm thử tự động: AI tự viết các kịch bản Test (Unit tests) giúp giảm thiểu lỗi con người.
  • Chuyển đổi ngôn ngữ: Dịch nhanh một đoạn code từ Java sang Python hoặc ngược lại.

4. Phương pháp học lập trình "Thích nghi" (Adaptive Learning)

  • Học "Tư duy" trước "Cú pháp": Đừng quá chú trọng việc thuộc lòng hàm. Hãy học cách máy tính tư duy (logic, vòng lặp, dữ liệu).
  • AI làm "Gia sư 1-1": Sử dụng AI để giải thích code. Ví dụ: "Hãy giải thích đoạn code này cho một đứa trẻ 10 tuổi".
  • Dự án thực tế là kim chỉ nam: Thay vì học vẹt, hãy bắt tay vào xây dựng một ứng dụng cụ thể với sự trợ giúp của AI từ ngày đầu tiên.

5. Các công cụ AI "phải biết" năm 2026

Dưới đây là các công cụ hàng đầu theo báo cáo thị trường IT 2025-2026:

Công cụƯu điểm nổi bậtĐối tượng phù hợp
Cursor / WindsurfIDE (trình soạn thảo) tích hợp AI sâu nhất, hiểu toàn bộ dự án.Lập trình viên chuyên nghiệp
GitHub CopilotKhả năng gợi ý code theo thời gian thực (Auto-complete) cực nhanh.Sinh viên, Dev đi làm
Claude Code / AiderCLI tool mạnh mẽ trong việc xử lý các logic phức tạp và refactor code.Người thích dùng dòng lệnh
ChatGPT / Gemini"Bách khoa toàn thư" để hỏi đáp lý thuyết và lên ý tưởng sản phẩm.Mọi đối tượng

6. Thống kê và Nhận định từ Chuyên gia (Cập nhật 2026)

  • Thống kê: Khoảng 80-85% lập trình viên hiện nay sử dụng trợ lý AI hàng ngày. AI giúp tăng năng suất trung bình 26%, đặc biệt với nhân sự mới (Junior), mức tăng có thể lên tới 39%.
  • Nguy cơ: Các công việc "thợ gõ code" đơn giản đang biến mất nhanh chóng.
  • Cơ hội: Nhu cầu cho các kỹ sư có khả năng "Lập trình kết hợp" (Hybrid Engineering) và "Kỹ thuật tạo lệnh" (Prompt Engineering) tăng mạnh.
  • Lời khuyên từ chuyên gia: "AI không cướp việc của lập trình viên, nhưng lập trình viên biết dùng AI sẽ thay thế những người không biết."

7. Lời khuyên cho người mới bắt đầu

  • Đừng sợ AI làm thay: Hãy coi AI là một "Junior siêu cấp" phục vụ bạn.
  • Tập trung vào Kỹ năng mềm: Kỹ năng giao tiếp, tư duy phản biện và đạo đức nghề nghiệp là thứ AI không bao giờ thay thế được.
  • Xây dựng Portfolio sớm: Hãy cho nhà tuyển dụng thấy bạn có thể tạo ra sản phẩm thật sự bằng sự kết hợp giữa kiến thức nền tảng và công cụ AI.

Thuật toán A* tìm đường đi ngắn nhất trong đồ thị [ Cùng học AI ]

Thuật toán A* (A-star) là một thuật toán tìm đường sử dụng trong các lĩnh vực như trí tuệ nhân tạo, đồ họa máy tính, và robot học. Nó được sử dụng để tìm đường đi ngắn nhất từ điểm khởi đầu đến điểm đích trên một đồ thị. 

Thuật toán A* tìm đường đi ngắn nhất trong đồ thị [ Cùng học AI ]


Thuật toán A* kết hợp hai yếu tố chính:

1. Giá trị chi phí đi từ điểm khởi đầu đến điểm hiện tại (g(n)).

2. Ước lượng chi phí từ điểm hiện tại đến đích (h(n)), còn gọi là hàm heuristic.

Tổng chi phí của một nút n được tính bằng công thức: 

 f(n) = g(n) + h(n)

Trong đó:

-  g(n) là chi phí từ điểm khởi đầu đến nút n.

-  h(n) là chi phí ước lượng từ nút n đến đích (hàm heuristic).

Thuật toán A* hoạt động bằng cách khám phá các nút với giá trị f(n) nhỏ nhất trước, đảm bảo rằng nó tìm ra con đường ngắn nhất nếu hàm heuristic h(n) là admissible (không bao giờ đánh giá quá cao chi phí từ n đến đích).


* Có thể bản quan tâm: [MMO] Hướng Dẫn *Kiếm Tiền Tự Động* Với Các Ứng Dụng Treo Máy *CỰC KỲ ĐƠN GIẢN VÀ HIỆU QUẢ*


### Sơ đồ thuật toán A*

1. Khởi tạo:

   - Tạo danh sách mở (open list) và thêm nút bắt đầu vào danh sách này. Khởi tạo danh sách đóng (closed list) rỗng.

   - Đặt giá trị g(n) của nút bắt đầu là 0 và f(n) = g(n) + h(n).

2. Lặp lại các bước sau cho đến khi danh sách mở trống hoặc tìm thấy điểm đích:

   - Chọn nút có giá trị f(n) nhỏ nhất trong danh sách mở và gán nó là nút hiện tại.

   - Nếu nút hiện tại là đích, tái tạo đường đi từ điểm khởi đầu đến điểm đích và kết thúc.

   - Di chuyển nút hiện tại từ danh sách mở sang danh sách đóng.

   - Đối với mỗi hàng xóm của nút hiện tại:

     + Nếu hàng xóm nằm trong danh sách đóng, bỏ qua nó.

     + Nếu hàng xóm không nằm trong danh sách mở, thêm nó vào danh sách mở và tính các giá trị g(n), h(n), và f(n).

     + Nếu hàng xóm đã nằm trong danh sách mở, kiểm tra xem đường đi hiện tại đến hàng xóm có tốt hơn không. Nếu có, cập nhật giá trị g(n), h(n) và f(n) của hàng xóm và cập nhật nút cha.

3. Kết thúc:

   - Nếu danh sách mở trống và điểm đích không được tìm thấy, báo rằng không có đường đi.

### Mô tả step-by-step các bước

1. Initialization (Khởi tạo):

   - Đặt nút bắt đầu (start) vào danh sách mở (open list).

   - Thiết lập g_score của nút bắt đầu là 0.

   - Tính toán f_score của nút bắt đầu bằng cách cộng g_score và heuristic (h(n)).

2. Loop until the open list is empty or the destination is found (Lặp lại cho đến khi danh sách mở trống hoặc tìm thấy đích):

   - Step 1: Chọn nút có giá trị f(n) nhỏ nhất trong danh sách mở (gọi là nút hiện tại).

   - Step 2: Nếu nút hiện tại là điểm đích, tái tạo và trả về đường đi.

   - Step 3: Di chuyển nút hiện tại từ danh sách mở sang danh sách đóng.

   - Step 4: Đối với mỗi hàng xóm của nút hiện tại:

     + Step 4.1: Nếu hàng xóm nằm trong danh sách đóng, bỏ qua nó.

     + Step 4.2: Tính g_score tạm thời (tentative_g_score) cho hàng xóm.

     + Step 4.3: Nếu hàng xóm không nằm trong danh sách mở hoặc tentative_g_score nhỏ hơn g_score hiện tại của hàng xóm:

        Cập nhật nút cha của hàng xóm là nút hiện tại.

        Cập nhật g_score và f_score của hàng xóm.

        Nếu hàng xóm không nằm trong danh sách mở, thêm nó vào danh sách mở.

3. ermination (Kết thúc):

   - Nếu danh sách mở trống và điểm đích không được tìm thấy, báo rằng không có đường đi.


### Ví dụ cụ thể

Giả sử chúng ta có một đồ thị đơn giản:



- Bắt đầu tại A, cần tìm đường ngắn nhất đến F.

- Hàm heuristic sử dụng khoảng cách Manhattan.

**Step-by-step:**

1. Initialization:

   - Đặt A vào danh sách mở. g(A) = 0, h(A) = heuristic(A, F), f(A) = g(A) + h(A).

2. Loop:

   Iteration 1:

   - Chọn A (f(A) = 0 + h(A)).

   - Di chuyển A từ danh sách mở sang danh sách đóng.

   - Xem xét các hàng xóm của A: B, C.

     + Với B: tentative_g(B) = g(A) + 1 = 1. Đặt g(B) = 1, h(B), f(B) = g(B) + h(B).

     + Với C: tentative_g(C) = g(A) + 4 = 4. Đặt g(C) = 4, h(C), f(C) = g(C) + h(C).

   - Thêm B và C vào danh sách mở.

   Iteration 2:

   - Chọn B (vì f(B) nhỏ hơn f(C)).

   - Di chuyển B từ danh sách mở sang danh sách đóng.

   - Xem xét các hàng xóm của B: A, D, E.

     + Với D: tentative_g(D) = g(B) + 2 = 3. Đặt g(D) = 3, h(D), f(D) = g(D) + h(D).

     + Với E: tentative_g(E) = g(B) + 5 = 6. Đặt g(E) = 6, h(E), f(E) = g(E) + h(E).

   - Thêm D và E vào danh sách mở.

   Iteration 3:

   - Chọn D (f(D) nhỏ hơn f(C) và f(E)).

   - Di chuyển D từ danh sách mở sang danh sách đóng.

   - Xem xét các hàng xóm của D: B, E, F.

     + Với F: tentative_g(F) = g(D) + 1 = 4. Đặt g(F) = 4, h(F) = 0, f(F) = g(F) + h(F).

   - Thêm F vào danh sách mở.

   Iteration 4:

   - Chọn F (f(F) nhỏ nhất).

   - F là điểm đích, tái tạo và trả về đường đi: A -> B -> D -> F.

Vậy, đường đi ngắn nhất từ A đến F là A -> B -> D -> F.


Dưới đây là một ví dụ chương trình ứng dụng của thuật toán A* với Python:

'''python'''

import heapq

def heuristic(a, b):

    return abs(a[0] - b[0]) + abs(a[1] - b[1])

def a_star(graph, start, end):

    open_list = []

    heapq.heappush(open_list, (0, start))

    came_from = {}

    g_score = {node: float('inf') for node in graph}

    g_score[start] = 0

    f_score = {node: float('inf') for node in graph}

    f_score[start] = heuristic(start, end)


    while open_list:

        current = heapq.heappop(open_list)[1]


        if current == end:

            path = []

            while current in came_from:

                path.append(current)

                current = came_from[current]

            path.append(start)

            return path[::-1]

        for neighbor in graph[current]:

            tentative_g_score = g_score[current] + graph[current][neighbor]

            if tentative_g_score < g_score[neighbor]:

                came_from[neighbor] = current

                g_score[neighbor] = tentative_g_score

                f_score[neighbor] = g_score[neighbor] + heuristic(neighbor, end)

                heapq.heappush(open_list, (f_score[neighbor], neighbor))

    return None


# Ví dụ đồ thị (graph) với chi phí giữa các điểm

graph = {

    'A': {'B': 1, 'C': 4},

    'B': {'A': 1, 'D': 2, 'E': 5},

    'C': {'A': 4, 'F': 3},

    'D': {'B': 2, 'E': 1},

    'E': {'B': 5, 'D': 1, 'F': 1},

    'F': {'C': 3, 'E': 1}

}


start = 'A'

end = 'F'

path = a_star(graph, start, end)

print(f"Đường đi ngắn nhất từ {start} đến {end} là: {path}")

```


### Giải thích chương trình:

1. Heuristic function: Hàm heuristic được định nghĩa để tính khoảng cách Manhattan giữa hai điểm.

2. A* function: Hàm `a_star` thực hiện thuật toán A*.

   - open_list: Danh sách mở chứa các nút cần được khám phá. Các nút được sắp xếp theo giá trị `f(n)`.

   - came_from: Từ điển lưu trữ các nút và nút cha của chúng để tái tạo đường đi ngắn nhất.

   - g_score: Từ điển lưu trữ chi phí từ điểm khởi đầu đến mỗi nút.

   - f_score: Từ điển lưu trữ giá trị `f(n)` cho mỗi nút.

3. Main loop: Vòng lặp chính khám phá các nút với giá trị `f(n)` nhỏ nhất trước.

4. Reconstruction: Khi điểm đích được tìm thấy, hàm sẽ tái tạo lại đường đi ngắn nhất bằng cách đi ngược từ điểm đích đến điểm khởi đầu thông qua `came_from`.


Chương trình này sẽ in ra đường đi ngắn nhất từ điểm bắt đầu 'A' đến điểm kết thúc 'F'.

Categories

AI (13) AI programming (1) ASP (1) Android (32) App Honeygain (4) Assembly (17) Biểu diễn thuật toán (1) Bubble-Sort (1) Bài giảng (2) Bài giảng lập trình C và Cpp (21) Bài viết hay (108) Bản đồ tư duy (1) C Plus Plus (103) C/C++ (16) CDSL phân tán (1) CSS (2) Cơ sở dữ liệu (11) Danh ngôn lập trình (1) Datamining (4) Genetic Algorithm (1) Giáo trình (2) Giải thuật tiến hóa - thuật toán di truyền (2) Google App Engine (2) Góc học tập (34) HTML (1) Hướng dẫn kiếm tiền online tại nhà (6) Hướng dẫn sử dụng Emu8086 (1) Học lập trình (131) Học lập trình C và CPP qua ví dụ (17) Java (54) Java Căn bản (6) JavaScript (5) Kỹ năng đọc hiệu quả (1) Kỹ thuật lập trình (16) Kỹ thuật đồ họa máy tính (10) Lý thuyết Cơ sở dữ liệu (2) Lý thuyết đồ thị (11) Lập trình Cơ sở dữ liệu (2) Lập trình Python (2) Lập trình căn bản (8) Lập trình hướng đối tượng với Java (7) Lập trình mobile (9) Lập trình mạng (6) Lập trình nhúng (1) Lập trình trí tuệ nhân tạo (2) ML (1) MMO (6) MS Access (1) Machine learning (2) Mạng máy tính (1) Mẹo tìm kiếm trên Google (1) Nghiên cứu khoa học (3) Ngôn ngữ lập trình (2) Những cuốn sách hay mà bạn nên đọc khi còn trẻ (1) Pascal (3) Phương pháp tính toán tối ưu (2) Phương pháp tối ưu (2) Quản lý dự án CNTT (1) SEO (1) SQL (5) Swift (9) Sách hay (4) Thiết kế Web (2) Thuật toán (51) Thuật toán Sắp Xếp -Sort (9) Thuật toán Tìm kiếm - Search (5) Thuật toán di truyền (4) Thực hành Android (2) Tin học văn phòng (5) Tiện ích máy tính (3) Toán rời rạc (13) Treo máy kiếm tiền (3) Trí tuệ nhân tạo (18) Tài liệu tham khảo (5) Tìm hiểu Blockchain (2) Tự học Android (3) Tự học Android qua ví dụ (1) Tự học JavaScript (1) Tự học lập trình (9) Tự học lập trình Android (17) Tự học lập trình C và CPP (14) Tự học lập trình java qua các ví dụ (8) XML (1) blockchain (2) bài giảng quản lý dự án CNTT (1) bài tập java (3) bài tập lập trình (4) cấu trúc dữ liệu giải thuật (15) hướng dẫn viết báo (1) học lập trình Java (11) học máy (5) hợp ngữ (8) lập trình viên (3) phưng pháp đơn hình (2) thuật toán AI (2) tài liệu CNTT miễn phí (4) tính toán tối ưu (1) tự học lập trình iOS (8) tự học lập trình python (1) ví dụ Assembly (1) Đại số gia tử và ứng dụng (1) Đồ họa (4)