Mơ hình quan hệ thực thể

Một phần của tài liệu Xây dựng ứng dụng du lịch Danang Travel trên Samsung Smart TV. (Trang 57 - 60)

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 49

CHƢƠNG 3. THUẬT TỐN ÁP DỤNG

I. TÌM ĐƢỜNG

Nghiên cứu thuật tốn tìm đƣờng đi ngắn nhất trong chức năng tìm đƣờng. Ta đặt ra bài tốn tìm đƣờng đƣờng đi ngắn nhất từ một đỉnh đến các đỉnh cịn lại. Bài tốn này cịn đƣợc gọi là bài tốn tìm đƣờng ngắn nhất từ gốc duy nhất.

Các dạng của bài toán:

 Tìm đƣờng đi ngắn nhất đến đỉnh duy nhất.

 Tìm đƣờng đƣờng đi ngắn nhất từ các đỉnh cho trƣớc.  Tìm đƣờng đi ngắn nhát cho mọi cặp đỉnh.

I.1 Thuật toán Dijkstra

Giả thiết là các cạnh (cung) (l(u) ≥ 0). Giả sử G có n đính đánh số thứ tự từ 1 tới n. Bài tốn đặt ra là tìm đƣờng đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại trong đồ thị.

I.1.1. Ký hiệu:  = số phần tử chƣa chọn:  [ ] { ( ) ( ) ( )  Pr(p) = đỉnh trƣớc đỉnh p theo đƣờng đi ngắn nhất từ gốc đến đỉnh p.  d = khoảng các ngắn nhất từ gốc đến các đỉnh còn lịa trong dồ thị Quy ƣớc cho các đỉnh khơng có đƣờng đi từ gốc đến nó.

 Mark = Tập đỉnh đã đánh dấu, định nghĩa nhƣ sau:

Mark[i] {

I.1.2. Thực hiện

Khởi tạo: Xuất phả từ đỉnh 1; = n -1 ;

Pr = [1,1,1,…1]

D = a[1,j], j= 1..2( Dòng đầu của ma trận kề A) Mark = [1,0..0]

Ở mỗi bƣớc lặp: Chọn đỉnh đánh dấu là đỉnh có độ dài ngắn nhất trong những

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 50

 d[k] = Min {d[i] : Mark[i]= 0 } ;  Mark[k]=1.

 Cập nhật lại d[j], Pr[j] với những đỉnh j chƣa đánh dấu (Mark[j]=0) theo công thức:

o d[j] = d[k] + a[k,j] nếu d[j] > d[k] +a[k,j]. o Pr[j] = k.

 Nếu tất cả mọi đỉnh đã đƣợc chọn, nghĩa là = 0. Dừng, nếu không quay lại bƣớc 2.

I.1.3. Thủ tục Dijkstra

// giả sử đã nhập ma trận chiều dài l theo ma trận kề A // Gán ban đầu cho d, Pr, Mark,

For (int j= 1; j≤ n ; j++) { d[j] = a(1,j) ; pr[j]=1 ; Mark[j] = 0;}

Mark[1] =1 ; n0 = n-1 ; WHILE (n0 > 0)

{d[k] = Min {d[j] : Mark[j]= 0 } ;

// Cập nhật lại , d vào Pr, Mark Mark[k] =1 ; n0 = n0 - 1 ;

For (int j= 1; j≤ n ; j++) if (Mark [j] = 0) && (d[k]+ a[k,j] < d[j])

{ d[j] = d[k] +a[k,j] ; pr[j]=k} }

SVTH: Mai Thị Hồng My – Lớp 09CNTT1 51

I.1.4. Ví dụ

Một phần của tài liệu Xây dựng ứng dụng du lịch Danang Travel trên Samsung Smart TV. (Trang 57 - 60)

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

(85 trang)