CÁC BÀI TOÁN ĐƯỜNG ĐI - LÝ THUYẾT THÔNG TIN

30 358 0
CÁC BÀI TOÁN ĐƯỜNG ĐI - LÝ THUYẾT THÔNG TIN

Đ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

CÁC BÀI TOÁN ĐƯỜNG ĐI Bài toán đường ngắn A 8 B 2 E C 3 D F Bài toán đường ngắn ̈ Phát biểu toán ̊ Cho G=(X, E) đồ thò có hướng Ta đònh nghóa ánh xạ trọng lượng sau: ̊ L: E ⎯⎯→ |R ̊ e |⎯→ L(e) ̊ Xét hai đỉnh i, j ∈X, gọi P đường từ đỉnh i đến đỉnh j, trọng lượng (hay giá) đường P đònh nghóa là: ̊ L(P) = ∑(e∈P) L(e) Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN Bài toán đường ngắn ̈ Mục đích toán đường ngắn tìm đường P từ i đến j có trọng lượng nhỏ số tất đường có A B E C D F Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN Bài toán đường ngắn ̈ Nhận xét: ̊ Mặc dù toán phát biểu cho đồ thò có hướng có trọng, thuật toán trình bày áp dụng cho đồ thò vô hướng có trọng cách xem cạnh đồ thò vô hướng hai cạnh có trọng lượng nối cặp đỉnh có chiều ngược Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN Bài toán đường ngắn ̈ Nhận xét: ̊ Khi làm toán tìm đường ngắn nhất, bỏ bớt cạnh song song chừa lại cạnh có trọng lượng nhỏ số cạnh song song ̊ Đối với khuyên có trọng lượng không âm bỏ mà không làm ảnh hưởng đến kết toán Đối với khuyên có trọng lượng âm đưa đến toán đường ngắn lời giải Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN Bài toán đường ngắn ̈ Nhận xét: ̊ Do nhận xét vừa nêu, xem liệu nhập toán đường ngắn ma trận L đònh nghóa sau: ̊ Lij = ̈ trọng lượng cạnh nhỏ nối i đến j có, ̈ cạnh nối i đến j Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN Bài toán đường ngắn ̈ Trong trình bày thuật toán, tổng quát, giá trò ma trận L thay +∞ Tuy nhiên cài đặt chương trình, dùng thay +∞ cách đưa thêm số lệnh kiểm tra thích hợp chương trình Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN Nguyên lý Bellman Nguyên lý Bellman ̈ Hầu hết thuật toán tìm đường ngắn đặt sở nguyên lý Bellman, nguyên lý tổng quát cho toán tối ưu hóa rời rạc, trường hợp toán đường ngắn trình bày nguyên lý sau P1 i P1’ j L(P1’) < L(P1) ⇒ L(P1’⊕P2) < L(P1⊕P2)=L(P) Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN 10 Nguyên lý Bellman ̈ Giả sử P đường ngắn từ đỉnh i đến đỉnh j k đỉnh nằm đường P Giả sử P=P1⊕P2 với P1 đường P từ i đến k P2 đường P từ k đến j Nguyên lý Bellman nói P1 đường ngắn từ i đến k, có đường khác P1’ từ i đến k có trọng lượng nhỏ hơn P1 P1’⊕P2 đường từ i đến j mà có trọng lượng nhỏ P, điều nầy mâu thuẫn với tính ngắn P Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN 11 Điều kiện tồn lời giải ̈ Gọi P đường từ i đến j, giả sử P có chứa mạch µ Có trường hợp sau ̊ Nếu L(µ)≥0 cải tiến đường P cách bỏ mạch µ ̊ Nếu L(µ)Dodai[v]+Lvk Dodai[k]= Dodai[v]+Lvk Nhan[k]=v Cuối với Trở bước Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN 15 Thuật toán Dijkstra ̈ Ghi chú: Khi thuật toán dừng, Dodai[j]= +∞ không tồn đường từ i đến j, ngược lại Dodai[j] độ dài đường ngắn ta lần ngược đường ngắn (đi ngược từ j trở lại i) sau: write(j); k:= Nhan[j]; while ki begin write('< -', k); k := Nhan[k]; end; write('< -', i); Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN 16 Ví dụ cho thuật toán Dijkstra ̈ 3 1 ̈ 12 17 Ta tìm đường ngắn từ đỉnh đến đỉnh cho đồ thò (G) hình vẽ Quá trình thực thuật toán mô tả bảng sau đây, chúng ghi lại giá trò biến T, Dodai, Nhan Đường ngắn từ đến có độ dài qua đỉnh 1,4,3,5 Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN 17 Ví dụ cho thuật toán Dijkstra Các đỉnh T 7 7 Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN 18 Ví dụ cho thuật toán Dijkstra Độ dài +∞ +∞ +∞ +∞ +∞ +∞ +∞ 6 +∞ +∞ +∞ +∞ +∞ +∞ +∞ Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN 19 Ví dụ cho thuật toán Dijkstra Các đỉnh Nhãn -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 4 -1 -1 4 -1 Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN 20 10 Thuật toán Floyd ̈ Thuật toán Floyd dùng để tìm đường ngắn tất cặp đỉnh đồ thò G với cạnh có trọng lượng dương Dữ liệu nhập cho thuật toán ma trận trọng lượng L (với qui ước Lij=0 cạnh nối từ đỉnh i đến đỉnh j) Thuật toán thuật vòng lặp lồng nhau, thuật toán kết thúc Lij độ dài đường ngắn từ đỉnh i đến đỉnh j Lij>0 đường không tồn Lij=0 Trong phần cài đặt, bổ sung thêm kỹ thuật để cụ thể đường ngắn Lý thuyết Đồ thò - Các toán đường - Khoa CNTT - Đại học KHTN 31 Thuật toán Floyd Lặ Lặppi=1, i=1,2, 2, , ,nnlà làm m Lặ p j=1, 2, , n Lặp j=1, 2, , n làm m Nế u L[j, i]>0 Nếu L[j, i]>0 Lặ Lặppk=1, k=1,2, 2, , ,nnlà làm m Nế u L[i, k]>0 Nếu L[i, k]>0 Nế NếuuL[j, L[j,k]=0 k]=0hay hayL[j, L[j,i]+L[i,k][...]... chiếc cầu Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 47 Bài toán 7 chiếc cầu ̈ Bài toán được phát biểu lại cho đồ thò trong hình vẽ bên dưới, hãy tìm một đường đi trong đồ thò qua tất cả các cạnh, mỗi cạnh chỉ một lần sau đó trờ về đỉnh xuất phát Việc giải bài toán đưa đến các đònh lý liên quan đến đồ thò Euler A D C B Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại... 4 (độ dài 2):4← 6← 5← 3; ̈ đường đi ngắn nhất từ 3 đến 5 (độ dài -1 ):5← 3; ̈ đường đi ngắn nhất từ 3 đến 6 (độ dài 1): 6← 5← 3 Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 44 22 Đồ thò Euler Bài toán 7 chiếc cầu ̈ 7 cây cầu trên sông Prégel, tại thành phố Konigsberg A D C B Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 46 23 Bài toán 7 chiếc cầu ̈ ̈ Đây là... lại Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 34 17 Cài đặt thuật toán Floyd ̈ Thủ tục Induongdi dùng để in ra đường đi ngắn nhất từ đỉnh i đến đỉnh j Chú ý rằng với mỗi đồ thò G thì chỉ cần gọi thủ tục Floyd một lần để tìm ra tất cả các đường đi, trong khi đó thủ tục Induongdi phải được gọi nhiều lần để in ra từng đường đi cụ thể Lý thuyết Đồ thò - Các bài toán đường đi - Khoa... mạch 1 âm 1 2 -2 2 8 5 3 4 4 -1 1 5 2 6 Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 41 Ví Dụ Cho Thuật Toán Bellman ̈ Trường hợp đường đi khởi đầu từ đỉnh 1, thuật toán dừng và phát hiện ra từ 1 có thể đến mạch âm, thực ra trường hợp nầy thì đỉnh 1 nằm ngay chính trên mạch âm Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 42 21 Ví Dụ Cho Thuật Toán Bellman... đường đi - Khoa CNTT - Đại học KHTN 39 Ví Dụ Cho Thuật Toán Bellman ̈ Xem đồ thò trong hình vẽ, chúng ta sẽ tính toán cho 2 trường hợp: các đường đi khởi đầu từ đỉnh 1 và các đường đi khởi đầu từ đỉnh 3 1 1 2 -2 2 8 5 3 4 4 -1 1 5 2 6 Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 40 20 Ví Dụ Cho Thuật Toán Bellman ̈ Trường hợp đường đi khởi đầu từ đỉnh 1, thuật toán dừng và phát... (G3) Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 52 26 Đònh lý Euler ̈ ̈ Đồ thò (G2) có dây chuyền Euler nhưng không có đường đi Euler Đồ thò vô hướng (G3) có mọi đỉnh đều bậc chẵn nên là a đồ thò Euler vô hướng e e a d b c (G1) c b d (G2) a d b c (G3) Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 53 Đồ thò Hamilton 27 Đồ thò Hamilton ̈ Khái niệm đường đi. .. -} { -} Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 28 14 Cài đặt thuật toán Dijkstra G.T := G.T-[v]; for k:=1 to G.n do if (G.L[v, k] > 0) and (k in G.T) then if (G.Dodai[k]=VOCUC) or (G.Dodai[k] > G.Dodai[v]+G.L[v,k]) then begin G.Dodai[k] := G.Dodai[v]+G.L[v,k]; G.Nhan[k] := v; end; end; end; Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT -. .. Toán Bellman ̈ Trường hợp đường đi khởi đầu từ đỉnh 3, thuật toán dừng và cho biết có đường đi ngắn nhất từ đỉnh 3 đến mỗi đỉnh còn lại hay không Các số trong ngoặc là các giá trò của trường truoc_nut2 Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 43 Ví Dụ Cho Thuật Toán Bellman Dựa vào bảng trên có thể suy ra: ̈ đường đi từ 3 đến 1 hay 2: không có; ̈ đường đi ngắn nhất từ 3 đến 4... lặppi.i Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 32 16 Cài đặt thuật toán Floyd ̈ Trong cài đặt thuật toán Floyd, ngoài trọng lượng đường đi nối từ đỉnh i (gọi là nút 1 trên đường đi) đến đỉnh j (gọi là nút 2 trên đường đi) , chúng ta bổ sung thêm một trường tên là sau_nut1 để lưu chỉ số của đỉnh ngay sau i trên đường đi từ i đến j Do đó mỗi phần tử L[i, j] là một mẫu tin gồm... phát từ bài toán: “Xuất phát từ một đỉnh của khối thập nhò diện đều, hãy đi dọc theo các cạnh của khối đó sao cho đi qua tất cả các đỉnh khác, mỗi đỉnh qua đúng một lần, sau đó trở về đỉnh xuất phát” Bài toán nầy được nhà toán học Hamilton đưa ra vào năm 1859 Lý thuyết Đồ thò - Các bài toán đường đi - Khoa CNTT - Đại học KHTN 55 Đònh nghóa ̈ ̈ ̈ (a) Dây chuyền Hamilton là dây chuyền đi qua tất cả các đỉnh

Ngày đăng: 21/04/2016, 18:23

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan