Tìm đường đi ngắn nhất trong đồ thị có trọng số

Một phần của tài liệu Giáo án môn lý thuyết đồ thị (Trang 61)

Bài toán:

Cho đồ thị có trọng số G = (V,E) và hai đỉnh s, t ∈V. Tìm đường đi ngắn nhất từ đỉnh s đến đỉnh t, tức là đường đi từ s đến t có tổng trọng số của các cạnh (cung) là nhỏ nhất.

Phần lớn các thuật toán tìm đường đi ngắn nhất từ s đến t được xây dựn trên ý tưởng như sau: Từ ma trận trọng số c[u,v]; u,v∈V, ta tính cận trên d[v] của khoảng cách từ đỉnh s đến tất cả các đỉnh v ∈V, mỗi khi phát hiện d[u]+c[u,v]<d[v] thì cận trên d[v] sẽ được làm tốt lên:

d[v]:=d[u]+c[u,v]. Quá trình đó sẽ kết thúc khi tất cả các cận trên d[v] không thể làm tốt lên được nữa. Khi thực hiện cài đặt trên máy tính, cận trên d[v] được gọi là nhãn của đỉnh v (hay trọng số của đỉnh v), còn việc làm tốt các cận trên d[v] được gọi là phép gán nhãn cho các đỉnh của đồ thị. Thuật toán có thể được mô ta như sau:

Bước 1: Đánh trọng số các đỉnh.

Trọng số của đỉnh xuất phát s được đánh trọng số (gán nhãn) d[s] = 0

Tại các đỉnh còn lại ta ghi một số dương đủ lớn sao cho nó lớn hơn trọng số của các đỉnh từ a tới (có thể dùng ∞)

Bước 2: Thực hiện giảm trọng số các đỉnh

Giả sử tại đỉnh v đang được ghi trọng số d[v]. Nếu tồn tại đỉnh u có trọng số d[u], từ u sang v mà d[v]>d[u] +c[u,v] thì ta thay trọng số d[v] bởi d’[v]=d[u]+c[u,v]. Trường hợp ngược lại ta giữ nguyên là d[v]. Quá trình thực hiện cho tới khi trọng số của tất cả các đỉnh đã đạt cực tiểu, tức là

v V không tồn tại u∈V kề với v mà d[u]+c[u,v]<d[v] . Bước 3: Xác định đường đi từ s tới t có trọng số nhỏ nhất

Từ bước 2 ta xác định được trọng số của đỉnh t, xuất phát từ t ta đi về đỉnh kề với t, chẳng hạn đó là đỉnh x có tính chất d[t] = d[x] + c[x,t], nếu không có đỉnh x như vậy thì ta đi về đỉnh kề với t có trọng số nhỏ nhất, cứ tiếp tục như vậy ta sẽ đi về đến đỉnh y mà đỉnh kề là s sao cho d[y]=d[s]+c[ s,y], với d[s]=0.

Ví dụ

Tuy nhiên, trên thực tế việc tìm đường đi ngắn nhất giữa hai đỉnh lại có rất nhiều trường hợp riêng biệt mà chưa có một thuật toán nào thực sự tối ưu được tất cả, chẳng hạn đồ thị có trọng số của cạnh là một số âm, hay đồ thị có chứa chu trình có trọng số âm...Sau đây ta sẽ xét qua môt số trường hợp riêng.

Một phần của tài liệu Giáo án môn lý thuyết đồ thị (Trang 61)