Thuọ̃t toán tìm chu trình Euler:

Một phần của tài liệu Báo cáo đồ án nghiên cứu, cài đặt thuật toán giải bài toán lập hành trình người đưa thư và ứng dụng (Trang 30 - 34)

Định nghĩa 1. Chu trình đi qua mụ̃i cạnh của đụ̀ thị mụ̣t lõ̀n được gọi là chu trình Euler.

Ví dụ 2. Đụ̀ thị H2 là đụ̀ thị Euler vì nú cú chu trình Euler a, b, c, d, e, a. Đụ̀ thị H3 khụng cú chu trình Euler nhưng nú cú đường đi Euler c, a, b, c, d, b vì thế H3 là nữa euler

31

6. Thuọ̃t toán tìm đường đi ngắn nhṍt giữa tṍt cả các căp đỉnh cả các căp đỉnh

6.1. Thuọ̃t toán Dijkstra:

Thuọ̃t toán:

- Với đỉnh xuṍt phát a, gán nhón l(a):=0.

- Nếu cú cạnh (i,j) mà đỉnh i đó được gán nhón và đỉnh j chưa được gán nhón hoặc đỉnh j đó được gán nhón nhưng l(i)

+c(i,j)<l(j) thì giảm nhón l(j):=l(i)+c(i,j).

- Lặp lại bước 2 cho đến khi khụng gán hoặc giảm nhón được nữa.

Thuọ̃t toán tìm đường đi ngắn nhṍt giữa tṍt cả các căp đỉnh các căp đỉnh

6.2. Thuọ̃t toán Floyd tìm đường đi ngắn nhṍt:

- Bài toán đặt ra là tính tṍt cả các D(i,j) là khoảng cách nhỏ nhṍt từ i đến j.

- Ta sử dụng ma trọ̃n Dn x n đờ̉ tính đụ̣ dài đường đi ngắn nhṍt

giữa tṍt cả các cặp đỉnh.

1. Bắt đõ̀u gán D := C _ ma trọ̃n trọng sụ́.

2. Thực hiợ̀n n lõ̀n lặp trờn D. Sau bước lặp thứ k, D[i,j] chứa đụ̣ dài đường đi ngắn nhṍt từ đỉnh i đến đỉnh j mà chỉ đi qua các đỉnh cú chỉ sụ́ khụng vượt quá k. Vọ̃y trong bước lặp thứ k

ta thực hiợ̀n theo cụng thức sau đõy:

D(k)[i,j] := min (D(k-1)[i,j] , D(k-1)[i,k] + D(k-1)[k,j]) , với k = 1, 2, ... , n.

33

GIỚI THIỆU VỀ CHƯƠNG TRèNH

Một phần của tài liệu Báo cáo đồ án nghiên cứu, cài đặt thuật toán giải bài toán lập hành trình người đưa thư và ứng dụng (Trang 30 - 34)