Skip to content

Bai Tap Thuat Toan Dijkstra Co Loi Giai Exclusive 【Full HD】

Dưới đây là bài viết chi tiết và đầy đủ về chủ đề thuật toán Dijkstra kèm bài tập có lời giải, được tối ưu hóa cho việc học tập và tham khảo.

Tổng Hợp Bài Tập Thuật Toán Dijkstra Có Lời Giải Chi Tiết Thuật toán Dijkstra là một trong những thuật toán nền tảng và quan trọng nhất trong lĩnh vực cấu trúc dữ liệu và giải thuật. Nó được dùng để tìm đường đi ngắn nhất từ một đỉnh nguồn (source) đến tất cả các đỉnh còn lại trong đồ thị có hướng hoặc vô hướng, với trọng số cạnh không âm. Bài viết này sẽ cung cấp cho bạn kiến thức lý thuyết cơ bản và đặc biệt là danh sách bài tập thuật toán Dijkstra có lời giải từ cơ bản đến nâng cao, giúp bạn nắm vững kiến thức để áp dụng vào các bài thi hoặc thực tế.

1. Ôn Tập Lý Thuyết Nhanh về Thuật Toán Dijkstra Trước khi đi vào các bài tập, chúng ta cần ôn lại cơ chế hoạt động của thuật toán. Ý tưởng chính: Thuật toán duyệt các đỉnh theo chiến lược tham lam (Greedy). Tại mỗi bước, nó chọn đỉnh có khoảng cách nhỏ nhất từ nguồn mà chưa được duyệt, sau đó cập nhật khoảng cách đến các đỉnh kề với nó (quá trình gọi là Relaxation - đơn giản hóa cạnh). Các bước thực hiện:

Khởi tạo khoảng cách từ nguồn đến tất cả các đỉnh là vô cùng ($\infty$), ngoại trừ nguồn là 0. Đưa đỉnh nguồn vào hàng đợi ưu tiên (Priority Queue) hoặc một tập hợp các đỉnh chưa duyệt. Lấy đỉnh $u$ có khoảng cách nhỏ nhất ra khỏi hàng đợi. Duyệt các đỉnh kề $v$ của $u$: bai tap thuat toan dijkstra co loi giai

Nếu $dist[u] + weight(u, v) < dist[v]$, thì cập nhật $dist[v] = dist[u] + weight(u, v)$ và đẩy $v$ vào hàng đợi (nếu dùng Priority Queue).

Lặp lại cho đến khi hàng đợi rỗng hoặc đã duyệt hết các đỉnh cần thiết.

2. Bài Tập Thuật Toán Dijkstra Có Lời Giải Dưới đây là các bài tập được phân loại theo mức độ khó. Bài 1: Tìm đường đi ngắn nhất trên đồ thị minh họa (Mức độ cơ bản) Đề bài: Cho một đồ thị có hướng với các trọng số dương như sau: Dưới đây là bài viết chi tiết và

Các đỉnh: A, B, C, D, E. Các cạnh và trọng số:

A $\to$ B: trọng số 4 A $\to$ C: trọng số 2 B $\to$ C: trọng số 5 B $\to$ D: trọng số 10 C $\to$ E: trọng số 3 E $\to$ D: trọng số 4 D $\to$ A: trọng số 7 (chú ý: có chu trình)

Yêu cầu: Hãy tìm đường đi ngắn nhất từ đỉnh A đến tất cả các đỉnh còn lại bằng thuật toán Dijkstra. Lời giải chi tiết (Mô phỏng từng bước): Bài viết này sẽ cung cấp cho bạn

Khởi tạo:

$dist[A] = 0$ $dist[B] = \infty$ $dist[C] = \infty$ $dist[D] = \infty$ $dist[E] = \infty$ Tập đỉnh chưa duyệt: ${A, B, C, D, E}$