1. Trang chủ
  2. » Luận Văn - Báo Cáo

Một số bài toán tối ưu trên đồ thị

46 10 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 46
Dung lượng 481,44 KB

Nội dung

TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA TOÁN ĐÀO THỊ HỒI PHƯƠNG MỘT SỐ BÀI TỐN TỐI ƯU TRÊN ĐỒ THỊ KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Chuyên ngành: Toán ứng dụng Hà Nội – Năm 2019 TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA TOÁN ĐÀO THỊ HỒI PHƯƠNG MỘT SỐ BÀI TỐN TỐI ƯU TRÊN ĐỒ THỊ KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Chuyên ngành: Toán ứng dụng Người hướng dẫn khoa học TS TRẦN VĨNH ĐỨC Hà Nội – Năm 2019 LỜI CẢM ƠN Em xin bày tỏ kính trọng lời cảm ơn tới thầy khoa Tốn, Trường Đại học Sư phạm Hà Nội 2, thầy cô tổ Ứng dụng thầy cô tham gia giảng dạy tận tình truyền đạt tri thức quý báu tạo điều kiện thuận lợi để em hoàn thành tốt chương trình học suốt năm Đại học thời gian thực khóa luận Đặc biệt, em xin bày tỏ lòng biết ơn sâu sắc tới TS Trần Vĩnh Đức - Giảng viên Trường Đại học Bách Khoa Hà Nội, người trực tiếp hướng dẫn, bảo tận tình giúp đỡ để em hồn thành khóa luận Do thời gian, lực điều kiện thân hạn chế nên khóa luận khơng thể tránh khỏi sai sót Vì vậy, em mong nhận ý kiến góp ý quý báu thầy cô bạn Em xin chân thành cảm ơn Hà Nội, tháng 05 năm 2019 Sinh viên Đào Thị Hoài Phương LỜI CAM ĐOAN Em xin cam đoan khóa luận kết việc học tập, nghiên cứu độc lập thân hướng dẫn thầy giáo TS Trần Vĩnh Đức Trong trình thực đề tài “Một số toán tối ưu đồ thị” em tham khảo số tài liệu ghi phần "Tài liệu tham khảo" Nếu sai em xin chịu trách nhiệm Hà Nội, tháng 05 năm 2019 Sinh Viên Đào Thị Hồi Phương Mục lục LỜI NĨI ĐẦU 1 MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA ĐỒ THỊ 1.1 Đồ thị có hướng 1.2 Đồ thị vô hướng 1.3 Đồ thị có trọng số 1.4 Đồ thị liên thông 1.4.1 Hành trình, đường, chu trình 1.4.2 Liên thông 1.4.3 Cây 1.5 Biểu diễn đồ thị ma trận kề 1.6 Biểu diễn đồ thị ma trận liên thuộc 1.7 Biểu diễn đồ thị có trọng số ma trận BÀI TỐN TÌM CÂY BAO TRÙM CĨ TRỌNG LƯỢNG NHỎ NHẤT 11 2.1 Bài toán 11 2.2 Thuật toán Kruskal 11 2.3 Thuật toán Prim 16 BÀI TỐN TÌM ĐƯỜNG CĨ TRỌNG LƯỢNG NHỎ NHẤT 20 3.1 Bài toán 20 3.2 Thuật toán Dijkstra 20 3.3 Thuật toán Ford-Bellman 25 BÀI TỐN TÌM LUỒNG LỚN NHẤT TRONG MẠNG VẬN TẢI 28 4.1 Mạng vận tải Luồng mạng vận tải i 28 Khóa luận tốt nghiệp Đại học Đào Thị Hồi Phương 4.2 Bài tốn 4.3 Thuật tốn Ford-Fulkerson tìm luồng lớn mạng vận tải nguyên 30 MỘT SỐ BÀI TOÁN KHÁC VỀ LUỒNG 5.1 5.2 5.3 29 35 Bài tốn tìm luồng lớn mạng vận tải đỉnh 35 5.1.1 Mạng vận tải đỉnh 35 5.1.2 Luồng mạng vận tải đỉnh 35 5.1.3 Lát cắt mạng vận tải đỉnh 36 5.1.4 Bài toán 36 Bài tốn tìm luồng lớn mạng vận tải đỉnh - cung 37 5.2.1 Mạng vận tải đỉnh - cung 37 5.2.2 Luồng mạng vận tải đỉnh - cung 37 5.2.3 Bài toán 37 Bài tốn tìm luồng lớn mạng vận tải có nhiều điểm phát nhiều điểm thu TÀI LIỆU THAM KHẢO 38 39 ii Khóa luận tốt nghiệp Đại học Đào Thị Hồi Phương LỜI NĨI ĐẦU Các toán tối ưu đồ thị ứng dụng nhiều vào ngành khác khoa học kỹ thuật Nhiều tốn thực tế giải cách quy chúng toán tối ưu đồ thị Biểu diễn đồ thị cho ta cách nhìn trực quan quan hệ, ràng buộc tốn từ giải tốn cơng cụ tính tốn Đề tài “Một số toán tối ưu đồ thị” nhằm tìm hiểu số nội dung như: Bài tốn tìm bao trùm có trọng lượng nhỏ nhất, Bài tốn tìm đường có trọng lượng nhỏ nhất, Bài tốn tìm luồng lớn mạng vận tải Nội dung khóa luận gồm có năm chương: Chương 1: Chương trình bày khái niệm đồ thị cách biểu diễn đồ thị mà trận Chương 2: Chương trình bày tốn tìm bao trùm có trọng lượng nhỏ hướng dẫn sử dụng thuật toán Kruskal thuật toán P rim để giải toán Chương 3: Nội dung chương trình bày tốn tìm đường có trọng lượng nhỏ hướng dẫn sử dụng thuật toán Dijkstra thuật toán F ord − Bellman để giải tốn Chương 4: Chương trình bày tốn tìm luồng lớn mạng vận tải hướng dẫn sử dụng thuật toán F ord − F ulkerson để giải toán Chương 5: Chương trình bày số tốn khác luồng: tìm luồng lớn mạng vận tải đỉnh, tìm luồng lớn mạng vận tải đỉnh - cung, tìm luồng lớn mạng vận tải có nhiều điểm phát nhiều điểm thu Chương MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA ĐỒ THỊ Tất đinh nghĩa dùng chương sau 1.1 Đồ thị có hướng Định nghĩa 1.1 (Đồ thị có hướng) Một đồ thị có hướng G cặp có thứ tự G = (V, E), V tập E tập tích đề V × V Các phần tử V gọi đỉnh, phần tử E gọi cung đồ thị có hướng G Ví dụ, (a, b) ∈ E a, b gọi đỉnh ab gọi cung đồ thị có hướng G có đỉnh đầu a, đỉnh cuối b có hướng từ a tới b Giả sử G = (V, E) đồ thị có hướng Nếu (a, b) ∈ E đỉnh a, b gọi liên thuộc với cung (ab) Cung có dạng (a, a) với a ∈ V gọi khuyên Đồ thị có hướng biểu diễn mặt phẳng cách biểu diễn đỉnh vòng tròn nhỏ cung biểu diễn đường nối đỉnh đầu với đỉnh cuối có mũi tên hướng từ đỉnh đầu tới đỉnh cuối Ví dụ 1.1 Cho G = (V, E) có V = {v1 , v2 , v3 , v4 , v5 } E = {(v1 , v2 ), (v1 , v3 ), (v3 , v2 ), (v2 , v3 ), (v4 , v2 ), (v3 , v4 ), (v3 , v5 ), (v4 , v5 )} có đồ thị hình 1.1 1.2 Đồ thị vơ hướng Định nghĩa 1.2 (Đồ thị có hướng) Một đồ thị vơ hướng G cặp có thứ tự G = (V, E), V tập E tập với phần tử đa tập lực Khóa luận tốt nghiệp Đại học Đào Thị Hồi Phương Hình 1.1: Ví dụ đồ thị có hướng lượng V Các phần tử V gọi đỉnh, phần tử E gọi cạnh đồ thị vô hướng G Nếu e = {a, b} ∈ E a, b gọi đỉnh đầu mút cạnh e Ta kí hiệu cạnh a, b ab Đồ thị vô hướng biểu diễn mặt phẳng tương tự đồ thị có hướng Các đỉnh biểu diễn vòng tròn nhỏ cạnh biểu diễn đường nối hai đỉnh cạnh Đồ thị vô hướng mũi tên hướng đường nối đồ thị có hướng Ví dụ 1.2 Cho G = (V, E) có V = {v1 , v2 , v3 , v4 , v5 } E = {(v1 , v2 ), (v1 , v3 ), (v3 , v2 ), (v2 , v3 ), (v4 , v2 ), (v3 , v4 ), (v3 , v5 ), (v4 , v5 )} Khi đó, G có đồ thị hình 1.2 Hình 1.2: Ví dụ đồ thị vơ hướng 1.3 Đồ thị có trọng số Định nghĩa 1.3 (Đồ thị có trọng số) Một đồ thị G = (V, E) gọi đồ thị có trọng số hai hàm f : V −→ WV g : E −→ WE xác định Trong đó, WV , WE tập mà phần tử chúng liệu mang ý Khóa luận tốt nghiệp Đại học Đào Thị Hồi Phương nghĩa định lượng Giá trị f (v) với v ∈ V gọi trọng lượng đỉnh đỉnh v Giá trị g(e) với e ∈ E gọi trọng lượng cung cạnh e Tùy thuộc vào việc hàm xác định, người ta kí hiệu đồ thị có trọng lượng bằng: G = (V, E, f ) G = (V, E, g) G = (V, E, f, g) Ví dụ 1.3 Cho G = (V, E, g) có V = {v1 , v2 , v3 , v4 , v5 }, E = {(v1 , v2 ), (v1 , v3 ), (v2 , v3 ), (v3 , v2 ), (v4 , v2 ), (v3 , v4 ), (v3 , v5 ), (v4 , v5 )} hàm g : E −→ N xác định sau: g(v1 , v2 ) = 2, g(v1 , v3 ) = 1, g(v2 , v3 ) = 6, g(v3 , v2 ) = 4, g(v3 , v5 ) = g(v4 , v2 ) = 5, g(v3 , v4 ) = 7, g(v4 , v5 ) = Khi đó, G có đồ thị hình 1.3 Hình 1.3: Ví dụ đồ thị có trọng số 1.4 1.4.1 Đồ thị liên thơng Hành trình, đường, chu trình Định nghĩa 1.4 (Hành trình) Giả sử G = (V, E) đồ thị có hướng Một hành trình có hướng G dãy v0 e1 v1 e2 , en vi ∈ V với i = 0, 1, , n, ei ∈ E với i = 1, 2, , n ei = (vi−1 , vi ) Khi đó, v0 gọi đỉnh đầu, gọi đỉnh cuối n độ dài hành trình có hướng Tương tự, hành trình vô hướng đồ thị vô hướng G = (V, E) dãy v0 e1 v1 e2 , en vi ∈ V với i = 0, 1, , n, ei ∈ E với i = 1, 2, , n Khóa luận tốt nghiệp Đại học Đào Thị Hoài Phương d(b) = d(a) + w(ab)(2 = + 1) nên d(b) := d(b) = 2, d(d) > d(a) + w(ad)(∞ > + 2) nên d(d) := Bước 4: Giá trị d(vi ) thay đổi, ta gán Stop := F quay lại bước Lần lặp Bước 2: Gán: Stop := T , U:= ∅ Lấy đỉnh b xét Khi đó, U := {s, a, c, d, e, f } Bước 3: Đỉnh s, a xét nên d(s) := d(s) = 0, d(a) := 1, d(c) < d(b) + w(bc)(1 < + 2) nên d(c) := 1, d(d) = d(b) + w(bd)(3 = + 1) nên d(d) := 3, d(e) > d(b) + w(be)(∞ > + 3) nên d(e) := 5, d(f ) > d(b) + w(bf )(∞ > + 1) nên d(f ) := Bước 4: Giá trị d(vi ) thay đổi, ta gán Stop := F quay lại bước Lần lặp Bước 2: Gán: Stop := T , U := ∅ Lấy đỉnh c xét Khi đó, U := {s, b, f, g} Bước 3: Đỉnh s, b xét nên d(s) := d(s) = 0, d(b) := 2, d(f ) < d(c) + w(cf )(3 < + 4) nên d(f ) := 3, d(g) > d(c) + w(cg)(∞ > + 5) nên d(e) := Bước 4: Giá trị d(vi ) thay đổi, ta gán Stop := F quay lại bước Tiếp tục thực thuật toán tới lần lặp cuối cùng: Lần lặp 10 Bước 2: Gán: Stop := T ; U := ∅ Lấy đỉnh t xét Khi đó, U := {e, f, g, h} Bước 3: Các đỉnh e, f, g, h xét nên d(e) := 4, d(f ) := 3, d(g) := 4, d(h) := Bước 4: Giá trị d(vi ) khơng có thay đổi, ta gán Stop := T kết thúc thuật tốn Ta quan sát bước thuật tốn theo bảng sau đây: 26 Khóa luận tốt nghiệp Đại học Đào Thị Hoài Phương d(s) d(a) d(b) d(c) d(d) d(e) d(f ) d(g) d(h) d(t) Stop u Khởi tạo ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ T s v∈{a,b,c} — ∞ ∞ ∞ ∞ ∞ ∞ F a v∈{s,b,d} — — ∞ ∞ ∞ ∞ ∞ F b v∈{s,a,c,d,e,f} — — — ∞ ∞ ∞ F c v∈{s,b,f,g} — — — — ∞ ∞ F d v∈{a,b,e,h} — — — — — ∞ F e v∈{b,d,f,h,t} — — — — — — 6 F f v∈{b,c,e,g,t} — — — — — — — F g v∈{c,f,t} — — — — — — — — F h v∈{d,e,t} — — — — — — — — — F t v∈{e,f,h,g} — — — — — — — — — — F Giá trị {d(v)} 4 6 T Xác định đường có trọng lượng nhỏ từ s tới t: t: d(t) giảm từ ∞ xuống ta xét đỉnh e e: d(e) giảm từ xuống ta xét đỉnh d d: d(d) giảm từ ∞ xuống ta xét đỉnh a a: d(a) giảm từ ∞ xuống ta xét đỉnh s Từ đó, ta suy đường có trọng lượng nhỏ từ s tới t là: s −→ a −→ d −→ e −→ t Tổng quát:: Theo cách làm trên, dựa vào bảng ta tìm đường có trọng lượng nhỏ từ s đến đỉnh đồ thị (nếu chúng tồn tại) Ví dụ 3.3 Xác định đường có trọng lượng nhỏ từ s tới g: Dựa vào bảng ví dụ 3.3.1 ta có: g: d(g) giảm từ xuống ta xét đỉnh f f : d(f ) giảm từ ∞ xuống ta xét đỉnh b b: d(b) giảm từ ∞ xuống ta xét đỉnh s Từ đó, ta suy đường ngắn từ s tới g là: s −→ b −→ f −→ g 27 Chương BÀI TỐN TÌM LUỒNG LỚN NHẤT TRONG MẠNG VẬN TẢI 4.1 Mạng vận tải Luồng mạng vận tải Định nghĩa 4.1 (Mạng vận tải) Đồ thị G = (V, E) đồ thị có hướng, liên thơng khơng có khuyên Bộ G = (V, E, w, s, t) với hàm trọng lượng tập cung w : E → R+ ∪ {0}, s - đỉnh phát (s ∈ V ), t - đỉnh thu (t ∈ V )) gọi mạng vận tải Định nghĩa 4.2 (Luồng mạng vận tải) Cho mạng G = (V, E, w, s, t) Với đỉnh v ∈ V , ta ký hiệu: N + (v) = {x ∈ V |(v, x) ∈ E}, N − (v) = {y ∈ V |(y, v) ∈ E} Luồng mạng vận tải G = (V, E, w, s, t) hàm f : E → R+ ∪ {0} thỏa mãn điều kiện sau: (1) Giá trị luồng f qua cung (x, y) ∈ E không vượt khả thông qua ∀(x, y) ∈ E ta có: ≤ f (x, y) ≤ w(x, y), (2) Đỉnh s nơi sản sinh luồng f (s, x) − x∈N + (s) f (y, s) = c ≤ 0, y∈N − (s) 28 Khóa luận tốt nghiệp Đại học Đào Thị Hoài Phương (3) Đỉnh t nơi tiêu thụ nguồn f (t, x) − f (y, t) = −c, y∈N − (t) x∈N + (t) (4) Trừ đỉnh phát đỉnh thu, đỉnh, tổng giá trị luồng qua cung vào đỉnh tổng giá trị luồng qua cung từ (Luật bảo toàn luồng Kirchhoff) f (z, x) − f (y, z) = 0(∀z = s, t), y∈N − (z) x∈N + (z) Với (x, y) ∈ E ta có: w(x, y) gọi khả thơng qua cung (x, y), f (x, y) gọi giá trị luồng f cung (x, y), c gọi giá trị luồng f mang vận tải G Định nghĩa 4.3 (Lát cắt) Mạng vận tải G = (V, E, w, s, t) có X ⊆ V , Y ⊆ V Ta kí hiệu: (1) E(X, Y ) = {(x, y) ∈ E | x ∈ X, y ∈ Y }, (2) w(X, Y ) = w(x, y), (x,y)∈E(X,Y ) (3)X = V \X Ta gọi S tập đỉnh chứa đỉnh phát s khơng chứa đỉnh thu t tập cạnh E(S, S) gọi lát cắt G (tách đỉnh s đỉnh t) giá trị w(S, S) gọi khả thông qua lát cắt E(S, S) Lát cắt E(S, S) tách s t G với khả thông qua w(S, S) nhỏ tất khả thông qua lát cắt G gọi lát cắt nhỏ 4.2 Bài toán Cho G = (V, E, w, s, t) mạng vận tải với hàm trọng lượng tập cung w : E → R+ ∪ {0} Hãy tìm luồng f G cho giá trị f (G) lớn giá trị luồng G Bổ đề 4.1 Giá trị luồng lớn mạng vận tải G = (V, E, w, s, t) nhỏ khả thông qua lát cắt nhỏ tách điểm phát s điểm thu t G 29 Khóa luận tốt nghiệp Đại học Đào Thị Hoài Phương Định lý 4.1 (Định lý Ford-Fulkerson luồng lớn nhất) Trong mạng vận tải G = (V, E, w, s, t), giá trị luồng lớn mạng khả thông qua lát cắt nhỏ tách s t Định lý 4.2 Nếu mạng vận tải G = (V, E, w, s, t) mạng nguyên luồng lớn G luồng nguyên 4.3 Thuật tốn Ford-Fulkerson tìm luồng lớn mạng vận tải nguyên Thuật toán: Giả sử G = (V, E, w, s, t) mạng vận tải nguyên với hàm trọng lượng tập cung w : E → N Thuật toán việc thực luân phiên hai phần: gán nhãn cho đỉnh tăng luồng Bước 1: Khởi tạo: Chọn luồng nguyên xuất phát Ta lấy ln hàm f :E→N (u, v) → (do luồng luồng nguyên mạng vận tải G) PHẦN I: GÁN NHÃN CHO CÁC ĐỈNH Mỗi đỉnh mạng G ba trạng thái sau: chưa có nhãn, có nhãn chưa xét, có nhãn xét Nhãn đỉnh v ∈ V ba [α(v),β(v),σ(v)] với: α(v) ∈ {+, −} (cộng trừ), β(v) ∈ V (đỉnh G), σ(v) ∈ N (giá trị tăng), nhãn đỉnh v lưu giữ giá trị biến v Bước 2: Gán nhãn cho đỉnh s : s := [+, s, ∞] Khi đó, đỉnh s trạng thái có nhãn chưa xét, đỉnh lại trạng thái chưa có nhãn Bước 3: Chọn mạng đỉnh x có nhãn x chưa xét Thực xét đỉnh x theo quy trình sau: - Với y ∈ A+ (x) = {z ∈ N + (x)|f (xz) < w(xz)} (giá trị luồng nhỏ khả thông qua) mà y chưa có nhãn ta gán nhãn cho y: y := [+, x, σ(y)] với σ(y) = min(σ(x), w(x, y) − f (x, y) - Với y ∈ A− (x) = {z ∈ N − (x)|f (xz) > 0} mà y chưa có nhãn ta gán nhãn 30 Khóa luận tốt nghiệp Đại học Đào Thị Hoài Phương cho y: y := [−, x, σ(y)] với σ(y) = min(σ(x), f (x, y) Sau bước này, đỉnh x có nhãn xét, đỉnh y có nhãn chưa xét, đỉnh khác giữ nguyên trạng thái Bước 4: - Nếu đỉnh t (đỉnh kết thúc) chưa có nhãn mà cịn đỉnh có nhãn mà chưa xét ta quay lại bước - Nếu t chưa có nhãn khơng cịn đỉnh có nhãn chưa xét dừng thuật tốn - Nếu t có nhãn t ta có đường tăng luồng từ s tới t Khi đó, ta kết thúc phần chuyển sang phần PHẦN II: TĂNG LUỒNG Bước 5: Gán u := t Bước 6: - Nếu u có α(u) = + ta tăng giá trị luồng qua cung (β(u), u) từ f (β(u), u) lên f ((β(u), u) + σ(t)) - Nếu u có α(u) = − ta giảm giá trị luồng qua cung (β(u), u) từ f (β(u), u) lên f ((β(u), u) − σ(t)) Bước 7: Nếu βu = s ta gán u := β(u) quay lại bước Ngược lại, βu = s ta xóa nhãn tất đỉnh quay lại phần I thuật toán để gán lại nhãn cho đỉnh với luồng điều chỉnh bước Định lý 4.3 Với mạng vận tải nguyên G = (V, E, w, s, t), thuật toán FordFulkerson ln tìm luồng lớn lát cắt nhỏ G Hơn nữa, luồng lớn mạng vận tải nguyên G luồng ngun Ví dụ 4.1 Thực thuật tốn Ford-Fulkerson mạng vận tải sau: 31 Khóa luận tốt nghiệp Đại học Đào Thị Hoài Phương Bước 1: Khởi tạo: Chọn luồng nguyên xuất phát Ta chọn hàm f :E→N (u, v) → (do luồng luồng nguyên mạng vận tải G) Lần gán nhãn tăng luồng Bước 2: Gán nhãn cho đỉnh s : s := [+, s, ∞] Bước 3: Chọn x := s có nhãn Xét đỉnh x có: A+ (s) = A+ (x) = {z ∈ N + (x)|f (xz) < w(xz)} = {a, b, c} Mà a,b,c chưa có nhãn nên ta gán nhãn: a := [+, s, 9], b := [+, s, 4], c := [+, s, 8] Sau bước này, s xét xong, a, b, c có nhãn chưa xét, đỉnh cịn lại giữ nguyên trạng thái Bước 4: Đỉnh t chưa có nhãn mà cịn đỉnh có nhãn mà chưa xét nên ta quay lại bước Bước 3: Chọn x := a có nhãn Xét đỉnh x có: A+ (a) = A+ (x) = {z ∈ N + (x)|f (xz) < w(xz)} = {b, e} Mà b có nhãn, e chưa có nhãn nên ta gán nhãn: e := [+, a, 3] Sau bước này, s, a xét xong, b, c, e có nhãn chưa xét, đỉnh lại giữ nguyên trạng thái Bước 4: Đỉnh t chưa có nhãn mà cịn đỉnh có nhãn mà chưa xét nên ta quay 32 Khóa luận tốt nghiệp Đại học Đào Thị Hồi Phương lại bước Bước 3: Chọn x := b có nhãn Xét đỉnh x có: A+ (b) = A+ (x) = {z ∈ N + (x)|f (xz) < w(xz)} = {t} Mà t chưa có nhãn nên ta gán nhãn: t := [+, b, 4] Sau bước này, s, a, b xét xong, c, e, t có nhãn chưa xét, đỉnh lại giữ nguyên trạng thái Bước 4: Đỉnh t có nhãn Từ đó, ta tìm đường tăng luồng từ s tới t s→b→t Tiếp theo, ta tăng luồng Bước 5: Gán u := t Bước 6: u có α(u) = + nên ta tăng giá trị luồng qua cung (bt) từ f (bt) = thành f (bt) := Bước 7: β(u) = b = s ta gán u := b quay lại bước Bước 6: u có α(u) = + nên ta tăng giá trị luồng qua cung (sb) từ f (sb) = thành f (sb) := Bước 7: β(u) = s, ta xóa nhãn tất đỉnh quay lại phần I Thực tương tự phần gán nhãn tăng luồng 1, ta sử dụng thuật toán Ford-Fulkerson cho lần gán nhãn tăng luồng Tại lần gán nhãn thứ 5, ta gán nhãn cho đỉnh t nên thuật toán kết thúc Khi đó, luồng ta nhận luồng lớn G Tập đỉnh gán nhãn lần gán cuối s, a, b, c, d Do đó, tập lát cắt nhỏ G tách t s là: ae, bt, dt với khả thông qua là: 3+7+2 = 12 Mà theo định lý Ford-Fulkerson luồng lớn nhất, giá trị luồng lớn mạng vận tải khả thông qua lát cắt nhỏ tách s t Vì vậy, giá trị luồng lớn mạng vận tải G cho 12 Ta quan sát q trình thực thuật toán theo bảng sau: 33 (+, s, x) (+, s, x) (+, s, x) (+, s, x) (+, s, 9) (+, s, x) (+, s, 4) b (+, s, 8) c d (+, a, 3) e (+, s, 4) (+, s, 8) (+, a, 3) (+, a, 1) (+, s, 8) (+, c, 5) (+, a, 3) 34 (+, a, 1) (+, s, 6) (+, c, 3) (+, a, 3) (+, a, 1) (+, s, 6) (+, c, 3) có nhãn xét nên ta kết thúc thuật tốn Đỉnh t chưa có nhãn đỉnh cịn lại (+, s, 3) Tìm đường tăng luồng: s → a → e → t (+, s, 6) Tìm đường tăng luồng: s → c → d → t (+, s, 6) Tìm đường tăng luồng: s → a → b → t (+, s, 9) Tìm đường tăng luồng: s → b → t a s TT Phần gán nhãn - Tìm đường tăng luồng (+, e, 3) (+, d, 2) (+, b, 3) (+, b, 4) t 12 Giá trị luồng nhận f (G) = Không tăng luông u := (+, s, 6) → f (sa) := + (+, a, 3) → f (ae) := u := (+, e, 3) → f (et) := u := u := (+, s, 8) → f (sc) := (+, c, 5) → f (cd) := u := (+, d, 2) → f (dt) := u := u := (+, s, 9) → f (sa) := (+, a, 4) → f (ab) := u := (+, b, 3) → f (bt) := + u := u := (+, s, 4) → f (sb) := u := (+, b, 4) → f (bt) := Phần tăng luồng Khóa luận tốt nghiệp Đại học Đào Thị Hồi Phương Chương MỘT SỐ BÀI TOÁN KHÁC VỀ LUỒNG 5.1 Bài tốn tìm luồng lớn mạng vận tải đỉnh 5.1.1 Mạng vận tải đỉnh Định nghĩa 5.1 Đồ thị G = (V, E) đồ thị có hướng liên thơng khơng có khun với w : V \{s, t} → R+ ∪ {0} hàm trọng lượng, s đỉnh phát, t đỉnh thu Khi đó, G = (V, E, w, s, t) gọi mạng vận tải đỉnh 5.1.2 Luồng mạng vận tải đỉnh Cho mạng G = (V, E, w, s, t) Với đỉnh v ∈ V , luồng mạng vận tải G = (V, E, w, s, t) hàm f : E → R+ ∪ {0} thỏa mãn điều kiện sau: (1) Tổng giá trị luồng f qua tất cung vào đỉnh khác s t không vượt khả thông qua ∀v ∈ V \{s, t} ta có: f (y, v) ≤ w(v), y∈N − (v) (2) Đỉnh s nơi sản sinh luồng f (s, x) − x∈N + (s) f (y, s) = c ≤ 0, y∈N − (s) 35 Khóa luận tốt nghiệp Đại học Đào Thị Hoài Phương (3) Đỉnh t nơi tiêu thụ nguồn f (t, x) − x∈N + (t) f (y, t) = −c, y∈N − (t) (4) Trừ đỉnh phát đỉnh thu, đỉnh, tổng giá trị luồng qua cung vào đỉnh tổng giá trị luồng qua cung từ (Luật bảo tồn luồng Kirchhoff) f (z, x) − x∈N + (z) f (y, z) = 0(∀z = s, t) y∈N − (z) Với (x, y) ∈ E ta có: w(x, y) gọi khả thông qua cung (x, y), f (x, y) gọi giá trị luồng f cung (x, y), c gọi giá trị luồng f mang vận tải G 5.1.3 Lát cắt mạng vận tải đỉnh Cho G = (V, E, w, s, t) mạng vận tải đỉnh, tập C ⊆ V \{s, t} gọi lát cắt đỉnh tách s với t G không tồn luồng f mạng vận tải đỉnh G − C với f (G − C) = Khi đó, w(v) gọi khả thơng qua v∈C lát cắt đỉnh C 5.1.4 Bài toán Cho G = (V, E, w, s, t) mạng vận tải Hãy tìm luồng f G cho giá trị f (G) lớn giá trị luồng G Nhận xét 5.1 Ta thấy tốn tìm luồng lớn mạng vận tải đỉnh phát biểu giống toán tìm luồng lớn mạng vận tải cịn khái niệm lát cắt định nghĩa cách đối ngẫu với lát cắt mạng vận tải Vì thế, tốn tìm luồng lớn mạng vận tải đỉnh quy tốn tìm luồng lớn mạng vận tải 36 Khóa luận tốt nghiệp Đại học 5.2 Đào Thị Hồi Phương Bài tốn tìm luồng lớn mạng vận tải đỉnh cung 5.2.1 Mạng vận tải đỉnh - cung Định nghĩa 5.2 Đồ thị G = (V, E) đồ thị có hướng liên thơng khơng có khun với w1 : V \{s, t} → R+ ∪ {0} w2 : E → R+ ∪ {0} hàm trọng lượng đỉnh, cung; s đỉnh phát, t đỉnh thu Mạng vận tải đỉnh - cung G = (V, E, w1 , w2 , s, t) 5.2.2 Luồng mạng vận tải đỉnh - cung Cho mạng G = (V, E, w1 , w2 , s, t) Luồng mạng vận tải G hàm f : E → R+ ∪ {0} thỏa mãn điều kiện sau: (1) ∀v ∈ V \{s, t} ta có: f (y, v) ≤ w1 (v), y∈N − (v) (2) ∀(x, y) ∈ E ta có: ≤ f (x, y) ≤ w2 (x, y), f (y, s) = c ≥ 0, f (s, x) − (3) y∈N − (s) x∈N + (s) f (y, t) = −c f (t, x) − (4) x∈N + (t) y∈N − (t) f (z, x) − (5) x∈N + (z) f (y, z) = 0(∀z = s, t) y∈N − (z) Với (x, y) ∈ E, v ∈ V \{s, t} ta có: w1 (v) gọi khả thông qua đỉnh v, w2 (x, y) gọi khả thông qua cung (x, y), f (x, y) gọi giá trị luồng f cung (x, y), c gọi giá trị luồng f mang vận tải G 5.2.3 Bài toán Cho G = (V, E, w1 , w2 , s, t) mạng vận tải Hãy tìm luồng f G cho giá trị f (G) lớn giá trị luồng G Nhận xét 5.2 Ta thấy tốn tìm luồng lớn mạng vận tải đỉnh cung phát biểu giống tốn tìm luồng lớn mạng vận tải Vì thế, 37 Khóa luận tốt nghiệp Đại học Đào Thị Hồi Phương tốn tìm luồng lớn mạng vận tải đỉnh quy tốn tìm luồng lớn mạng vận tải 5.3 Bài tốn tìm luồng lớn mạng vận tải có nhiều điểm phát nhiều điểm thu Giả sử G mạng vận tải với m điểm phát: s1 , s2 , , sm n điểm thu: t1 , t2 , , tn Bây giờ, ta đưa vào đồ thị điểm phát giả s điểm thu giả t Khi đó, tốn tìm luồng lớn mạng vận tải có nhiều điểm phát nhiều điểm thu đưa tốn tìm luồng lớn mạng vận tải có điểm phát đểm thu 38 KẾT LUẬN Khóa luận trình bày số tốn tối ưu đồ thị Đó tốn tìm bao trùm có trọng lượng nhỏ nhất, tốn tìm đường có trọng lượng nhỏ nhất, tốn tìm luồng lớn mạng vận tải, số toán khác luồng thuật toán để giải toán Việc tổng hợp lý thyết giúp em hiểu rõ phần kiến thức đồ thị, giải nhiều toán thực tế liên quan 39 Tài liệu tham khảo [1] Ngô Đắc Tân, Lý thuyết tổ hợp đồ thị, Nhà xuất Đại học Quốc gia Hà Nội, 2004 [2] PGS.TS Bùi Minh Trí, Tối ưu hóa tổ hợp, Nhà xuất Khoa học Kỹ thuật [3] Nguyễn Đức Nghĩa - Nguyễn Tơ Thành, Tốn rời rạc, Nhà xuất quốc gia Hà Nội, 2003 40 ... , v5 )} Khi đó, G có đồ thị hình 1.2 Hình 1.2: Ví dụ đồ thị vơ hướng 1.3 Đồ thị có trọng số Định nghĩa 1.3 (Đồ thị có trọng số) Một đồ thị G = (V, E) gọi đồ thị có trọng số hai hàm f : V −→ WV... Đại học Đào Thị Hồi Phương LỜI NĨI ĐẦU Các toán tối ưu đồ thị ứng dụng nhiều vào ngành khác khoa học kỹ thuật Nhiều tốn thực tế giải cách quy chúng toán tối ưu đồ thị Biểu diễn đồ thị cho ta cách... cơng cụ tính tốn Đề tài ? ?Một số toán tối ưu đồ thị? ?? nhằm tìm hiểu số nội dung như: Bài tốn tìm bao trùm có trọng lượng nhỏ nhất, Bài tốn tìm đường có trọng lượng nhỏ nhất, Bài tốn tìm luồng lớn

Ngày đăng: 07/04/2021, 07:22

w