1. Trang chủ
  2. » Cao đẳng - Đại học

Slide toán rời rạc chương 6 bài toán đường đi ngắn nhất

12 24 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 482,04 KB

Nội dung

CHƢƠNG BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT Các khái niệm Xét đồ thị có hƣớng G =(V,E), |V|=n, |E|=m Mỗi cung (u,v) đặt tƣơng ứng với số thực a(u,v) gọi trọng số cung, a(u,v) = (u,v) E Nếu dãy v0, v1, , vp đƣờng G, độ dài đƣờng tổng trọng số cung: p a (v i i ,vi ) c om (nếu gán trọng số cho tất cung 1, độ dài đƣờng số cung đƣờng đi.) Đƣờng ngắn từ đỉnh s đến đỉnh t đƣờng có độ dài nhỏ từ s đến t, độ dài nhỏ (còn gọi khoảng cách) ký hiệu d(s,t) Nếu khơng có đƣờng từ s đến t đặt d(s,t)= ng Đường ngắn xuất phát từ đỉnh co Phần lớn thuật toán tìm khoảng cách hai đỉnh s t đƣợc xây dựng nhƣ sau: V Mỗi phát d[u] + a[u,v] < d[v] , cận an Tính cận d[v] khoảng cách từ s đến tất đỉnh v d[v] đƣợc làm tốt lên với giá trị mới: d[v]= d[u] + a[u,v] th Quá trình kết thúc không làm tốt thêm đƣợc cận d[v] Khi đó, giá trị d[v] cho ng khoảng cách từ đỉnh s đến đỉnh v du o Để tính khoảng cách từ s đến t, ta phải tính khoảng cách từ s đến tất đỉnh lại đồ thị Hiện chƣa biết thuật tốn tìm đƣờng ngắn hai đỉnh làm việc thực hiệu thuật cu u tốn tìm đƣờng ngắn từ đỉnh đến tất đỉnh cịn lại 2.1 Tht tốn Ford-Bellman Xét đồ thị với trọng số cung tuỳ ý chu trình âm Tìm đƣờng ngắn từ đỉnh s đến tất đỉnh lại *Ý tưởng Mỗi đỉnh v gán hai giá trị : d[v]: Khoảng cách ngắn từ s đến v Trƣớc[v] : đỉnh trƣớc v đƣờng ngắn từ s đến v Ban dầu gán ∀ v∈V; d[v] = trọng số cung (s,v), ∞ khơng có cung (s,v) truoc[v]=s; done=false; CuuDuongThanCong.com https://fb.com/tailieudientucntt Trong done = false thực lệnh sau: done=true; Lần lƣợt xét đỉnh v từ đến n (v ≠ s) Với đỉnh v, lần lƣợt cho đƣờng từ s đến v qua tất đình u (u ≠ v, u ≠ s) Nếu d[v]>d[u] + a[u,v] cập nhật: d[v]=d[u]+a[u,v]; Truoc[v]=u; done=false; *Cài đặt const int vc=1000; void FordBellman() { int d[max],truoc[max]; c om bool done=false; for(int v=1;v

Ngày đăng: 25/09/2021, 19:00

TỪ KHÓA LIÊN QUAN

w