Thuật toán Dijkstra cổ điển

Một phần của tài liệu Khảo sát thực nghiệm các thuật toán tìm đường đi ngắn nhất và ứng dụng (Trang 43 - 44)

Thuật toán đƣợc xây dựng trên cơ sở gán cho mỗi điểm các nhãn tạm thời. Nhãn tạm thời của các điểm cho biết cận trên của chiều dài đƣờng đi ngắn nhất từ nguồn s đến điểm đó. Nhãn của các điểm sẽ biến đổi trong các bƣớc lặp, mà ở mỗi bƣớc lặp sẽ có một nhãn tạm thời trở thành chính thức. Nếu nhãn của một điểm nào đó trở thành chính thức thì đó cũng chính là chiều dài ngắn nhất của đƣờng đi từ s đến đỉnh đó. Giải thuật của Dijkstra duy trì tập hợp các đỉnh S đã đƣợc thăm mà từ quan điểm mô hình hóa, nó tƣơng ứng chính xác với vị trí trong mạng.

Vì vậy, tại bất kỳ đỉnh nào trong giải thuật Dijkstra, tại thời điểm max v

S - d(s,v). Giải thuật của Dijkstra duy trì khoảng cách tạm thời D(v) với mỗi v

V, thỏa mãn bất biến sau đây. Bất biến 1 (Bất biến của Dijkstra): Với vS, D(v) = d(s,v) là khoảng cách từ s tới v trong tiểu đồ thị suy ra bởi S⋃{v}.

Giải thuật của Dijkstra Function Dijkstra(Graph, source):

D[s] = 0 prev[s] =undefined

for every vertex v ∈ V do

if vs

D(v) = ∞

prev[v] = undefined

end if

add v to Q// Tất cả các đỉnh v đều được đánh dấu là chưa thăm

end for

while Q is not empty:

u ← vertex in Q with min D[u] // Đỉnh s sẽ nằm đầu tiên trong tập Q

remove u from Q // u trở thành có nhãn cố định

for each neighbor v of u:

44

if alt<D[v]: // Đường đi ngắn hơn tới v được tìm thấy

D[v] =alt prev[v] =u end if end for end while returnD[], prev[] end function

Thời gian chạy thuật toán Dijkstra trên đồ thị có m cạnh và m đỉnh là O(n2). Do để tìm đƣờng đi nhỏ nhất tất cả các đỉnh v V phải đƣợc kiểm tra và dẫn đến thời gian chạy là O(n). Hoạt động này lặp đi lặp lại tại mỗi bƣớc của thuật toán, cho đến khi tất cả các đỉnh có nhãn cố định.

Tuy nhiên, sau mỗi bƣớc các cạnh đƣợc nới lỏng một lần, bƣớc này sẽ có thêm O(m) độ phức tạp và dẫn đến độ phức tạp cho đến khi kết thúc là O(n2 + m). Dù vậy, trong trƣờng hợp tồi nhất O(m) = O(n2), thời gian chạy vẫn là O(n2).

Một phần của tài liệu Khảo sát thực nghiệm các thuật toán tìm đường đi ngắn nhất và ứng dụng (Trang 43 - 44)

Tải bản đầy đủ (PDF)

(98 trang)