Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 70 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
70
Dung lượng
667 KB
Nội dung
Chương MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ I MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ Định nghĩa đồ thị Đồ thị cấu trúc rời rạc bao gồm đỉnh cạnh nối đỉnh này, loại đồ thị khác phân biệt kiểu số lượng cạnh nối hai đỉnh đồ thị Giả sử V tập hữu hạn, không rỗng phần tử Bộ G = (V,E) gọi đồ thị hữu hạn Mỗi phần tử V gọi đỉnh phần tử u = (x,y) E gọi cạnh đồ thị G = (V,E) Xét cạnh u E tồn hai đỉnh x, y V cho u = (x,y), ta nói x nối với y x y phụ thuộc u - Nếu cạnh u = (x,y) mà x y hai đỉnh phân biệt ta nói x, y hai đỉnh kề - Nếu u = (x,x) u cạnh có hai đỉnh trùng ta gọi khuyên - Nếu u = (x,y) mà x, y cặp đỉnh có phân biệt thứ tự hay có hướng từ x đến y u cung, x gốc cịn y x đỉnh ra, y đỉnh vào - Khi cặp đỉnh (x,y) có nhiều cạnh ta nói cạnh cặp đỉnh cạnh song song cạnh bội b y a) x y b) y x c) Hình 1.1 Thí dụ hình 1.1 (a) đỉnh y có khuyên b (b) cung (x,y) có hướng (c) cặp đỉnh (x,y) tạo thành cạnh bội Trong thực tế ta gặp nhiều vấn đề mà dùng mơ hình đồ thị để biểu diễn, sơ đồ mạng máy tính, sơ đồ mạng lưới giao thơng, sơ đồ thi cơng cơng trình Thí dụ Xét mạng máy tính, biểu diễn mạng mơ hình đồ thị, máy tính đỉnh, máy nối với dây truyền, chúng tương ứng cạnh đồ thị Một mơ hình mạng máy tính hình 1.2 máy tính a, b , c, d tương ứng đỉnh, hai máy nối trực tiếp với tương ứng với cặp đỉnh kề a b c d Hình 1.2 Định nghĩa Đơn đồ thị vô hướng G = (V,E) bao gồm V tập đỉnh E tập cặp khơng có thứ tự gồm hai phần tử khác V gọi cạnh Thí dụ b a e g d h c l k i Hình Sơ đồ máy tính đơn đồ thị vơ hướng Trong trường hợp hai máy tính thường xun phải tải nhiều thơng tin người ta phải nối hai máy nhiều kênh thoại Mạng với đa kênh thoại máy cho hình b a e d c l g k h i Hình Sơ đồ mạng máy tính với đa kênh thoại Định nghĩa Đa đồ thị vô hướng G = (V,E) bao gồm V tập đỉnh, E họ cặp khơng có thứ tự gồm hai phần tử khác V gọi cạnh Hai cạnh e1 e2 gọi cạnh lặp chúng tương ứng với cặp đỉnh a e b g d c l h k i Hình Sơ đồ mạng máy tính với đa kênh thông báo Rõ ràng đơn đồ thị đa đồ thị, đa đồ thị đơn đồ thị, đa đồ thị có hai (hoặc có nhiều hơn) cạnh nối cặp đỉnh Trong mạng máy tính có kênh thoại nối máy với (chẳng hạn với mục đích thơng báo) Mạng cho hình Khi đa đồ thị khơng thể mơ tả mạng vậy, có khun(cạnh nối đỉnh với nó) Trong trường hợp cần sử dụng đến khái niệm giả đồ thị vô hướng, định nghĩa sau Định nghĩa Giả đồ thị vô hướng G = (V,E) bao gồm V tập đỉnh, E họ cặp khơng có thứ tự (khơng thiết phải khác nhau) V gọi cạnh Cạnh e gọi khuyên có dạng e = (u,u) Các kênh thoại mạng máy tính cho phép truyền tin theo chiều Chẳng hạn hình máy chủ a nhận tin từ máy máy khác, có số máy gửi tin đi, cịn kênh thoại cho phép truyền tin theo hai chiều thay hai cạnh có hướng ngược chiều b a e d c l g k h i Hình Mạng máy với kênh thoại chiều Ta đến định nghĩa sau Định nghĩa Đơn đồ thị có hướng G = (V,E) bao gồm V tập đỉnh E cặp có thứ tự gồm hai phần tử khác V gọi cung Nếu mạng có đa kênh thoại chiều, ta phải sử dụng đến khái niệm đa đồ thị có hướng: Định nghĩa Đa đồ thị có hướng G = (V,E) bao gồm V tập đỉnh E họ cặp có thứ tự gồm hai phần tử khác V gọi cung Hai cung e 1, e2 tương ứng với cặp đỉnh gọi cung lặp Trong phần tử chủ yếu làm việc với đơn đồ thị vơ hướng đơn đồ thị có hướng Vì vậy, để ngắn gọn, ta bỏ qua tính từ đơn nhắc đến chúng Các thuật ngữ Trong phần trình bày số thuật ngữ lý thuyết đồ thị Trước tiên, ta xét thuật ngữ mô tả đỉnh cạnh đồ thị vô hướng Định nghĩa Hai đỉnh u v đồ thị vô hướng G gọi kề (u,v) cạnh đồ thị G Nếu e = (u,v) cạnh đồ thị ta nói cạnh liên thuộc với hai đỉnh u v, nói cạnh e nối đỉnh u đỉnh v, đồng thời đỉnh u v gọi đỉnh đầu cạnh (u,v) Để biết có cạnh liên thuộc với cạnh, ta đưa vào định nghĩa sau Định nghĩa Ta gọi bậc đỉnh v đồ thị vô hướng số cạnh liên thuộc với ký hiệu deg(v) b a c d f e g Hình Đồ thị vơ hướng G Thí dụ Xét đồ thị hình ta có deg(a) = 1, deg(b) = 4, deg(c) = 4, deg(f) = 3, deg(d) = 1, deg(e) = 3, deg(g) = Đỉnh bậc gọi đỉnh cô lập Đỉnh bậc gọi đỉnh treo Trong ví dụ đỉnh g đỉnh cô lập, a d đỉnh treo Bậc đỉnh có tính chất sau: Định lý Giả sử G = (V,E) đồ thị vơ hướng với m cạnh Khi 2m = ∑ deg(v) v∈V Chứng minh Rõ ràng cạnh e = (u,v) tính lần deg(u) lần deg(v) Từ suy tổng tất bậc đỉnh hai lần số cạnh Hệ Trong đồ thị vô hướng, số đỉnh bậc lẻ (nghĩa đỉnh có bậc số lẻ) số chẵn Chứng minh Thực gọi V1 V2 tương ứng tập chứa đỉnh bậc lẻ tập chứa đỉnh bậc chẵn đồ thị Ta có 2m = ∑ deg(v) = ∑ deg(v) + ∑ deg(v) v∈V v∈V1 v∈V2 Do deg(v) chẵn với v đỉnh U nên tổng thứ hai vế phải số chẵn Từ suy tổng thứ (chính tổng bậc đỉnh lẻ) phải số chẵn, tất số hạng số lẻ nên tổng phải gồm số chẵn số hạng Vì số đỉnh bậc lẻ phải số chẵn Ta xét thuật ngữ tương tự cho đồ thị có hướng Định nghĩa Nếu e = (u,v) cung đồ thị có hướng G ta nói hai đỉnh u v kề nhau, nói cung (u,v) nối đỉnh u với đỉnh v nói cung khỏi đỉnh u vào đỉnh v Đỉnh u(v) gọi đỉnh đầu(cuối) cung (u,v) Định nghĩa Ta gọi bán bậc (bán bậc vào) đỉnh v đồ thị có hướng số cung đồ thị khỏi (đi vào nó) ký hiệu deg+(v)(deg-(v)) a b e c d Hình Đồ Thị có hướng G Thí dụ Xét đồ thị cho hình Ta có deg-(a) = 1, deg-(b) = 2, deg-(c) = 2, deg-(d) = 2, deg-(e) = deg+(a) = 3, deg+(b) = 1, deg+(c) = 1, deg+(d) = 2, deg+(e) = Do cung (u,v) tính lần bán bậc vào đỉnh v lần bán bậc đỉnh u nên ta có: Định lý Giả sử G = (V,E) đồ thị có hướng Khi ∑ deg + (v) = ∑ deg − (v) =| E | v∈V v∈V Rất nhiều tính chất đồ thị có hướng khơng phụ thuộc vào hướng cung Vì vậy, nhiều trường hợp thuận tiện ta bỏ qua hướng cung đồ thị Đồ thị vô hướng thu cách bỏ qua hướng cung gọi đồ thị vô hướng tương ứng với đồ thị có hướng cho Đường đi, chu trình Đồ thị liên thông Định nghĩa Đường độ dài n từ đỉnh u đến đỉnh v, n số nguyên dương, đồ thị vô hướng G = (V,E) dãy x0, x1,…, xn-1, xn Trong u = x0, v = xn, v = (xi, xi+1) ∈ E, i = 0,1,2,…, n-1 Đường nói cịn biểu diễn dạng dãy cạnh: (x0,x1), (x1,x2),…, (xn-1,xn) Đỉnh u gọi đỉnh đầu, đỉnh v gọi đỉnh cuối đường Đường có đỉnh đầu trùng với đỉnh cuối (tức u = v) gọi chu trình Đường hay chu trình gọi đơn khơng có cạnh bị lặp lại Thí dụ Trên đồ thị vơ hướng cho hình 1: a, d, c, f, e đường đơn độ dài Cịn d, e, c, a khơng đường đi, (e,c) cạnh đồ thị Dãy b, c, f, e, b chu trình độ dài Đường a, b, e, d, a, b có độ dài là đường đơn, cạnh (a,b) có mặt hai lần a b c a b c d e f d e f Hình Đường đồ thị Khái niệm đường chu trình đồ thị có hướng định nghĩa hoàn toàn tương tự trường hợp đồ thị vơ hướng, khác ta có ý đến hướng cung Định nghĩa Đường độ dài n từ đỉnh u đến đỉnh v, n số nguyên dương, đồ thị có hướng G = (V,A) dãy x0, x1,…, xn-1, xn u = x0, v = xn, (xi, xi+1) ∈ A, i = 0, 1, 2,…, n-1 Đường nói cịn biểu diễn dạng dãy cung: (x0, x1), (x1, x2), (xn-1, xn) Đỉnh u gọi đỉnh đầu, đỉnh v gọi đỉnh cuối đường Đường có đỉnh đầu trùng với đỉnh cuối (tức u = v) gọi chu trình Đường hay chu trình gọi đơn khơng có cạnh bị lặp lại Thí dụ Trên đồ thị có hướng cho hình 3: a → d → c → f → e đường đơn độ dài Cịn d → e → c → a khơng đường đi, (e,c) cạnh đồ thị Dãy b, c, f, e, b chu trình độ dài Đường a → b→ e→ d→ a→ b có độ dài khơng phải đường đơn, cạnh (a,b) có mặt hai lần Xét mạng máy tính Một câu hỏi đặt hai máy tính mạng trao đổi thơng tin với trực tiếp qua kênh nối chúng thông qua vài máy trung gian mạng? Nếu sử dụng đồ thị để biểu diễn mạng máy tính (trong đỉnh đồ thị tương ứng với máy tính, cịn cạnh tương ứng kênh nối) câu hỏi phát biểu ngôn ngữ đồ thị sau: Tồn hay đường cặp đỉnh đồ thị? Định nghĩa Đồ thị vô hướng G = (V,E) gọi liên thơng ln tìm đường hai đỉnh Như hai máy tính mạng trao đổi thông tin với đồ thị tương ứng với mạng đồ thị liên thơng Thí dụ Trong hình 2: Đồ thị G liên thơng, cịn đồ thị H khơng liên thông a b H1 c d e g H2 e G H H3 Hình Đồ thị liên thơng G đồ thị H gồm thành phần liên thông H1, H2, H3 II MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ Thuật tốn tìm kiếm đồ thị 1.1 Tìm kiếm theo chiều sâu đồ thị Ý tưởng thuật tốn trình bày sau Ta bắt đầu tìm kiếm từ đỉnh v0 đồ thị Sau chọn u đỉnh tuỳ ý kề với v0 lặp lại trình u Ở bước tổng quát, giả sử ta xét đỉnh v, Nếu nhử tổng số đỉnh kề với v tìm đỉnh w chưa xét ta xét đỉnh này( trở thành xét) ta tiếp tục q trình tìm kiếm Cịn khơng cịn đỉnh kề với v chưa xét ta nói đỉnh duyệt xong quay trở lại tiếp tục tìm kiếm từ đỉnh mà trước ta đến đỉnh v (nếu v = v0, kết thúc tìm kiếm) Có thể nói nơm na tìm kiếm theo chiều sâu đỉnh v thực sở tìm kiếm theo chiều sâu từ tất đỉnh chưa xét kề với v Quá trình mơ tả thủ tục đệ qui sau Procedure DFS(v); (* Tìm kiếm theo chiều sâu đỉnh v; Các biến Chuaxet, Ke, toàn cục *) Begin Thăm_đỉnh(v); Chuaxet[v] := false; for u ∈ Ke(v) if Chuaxet[u] then DFS(u); end; (* đỉnh v duyệt xong *) Khi đó, tìm kiếm theo chiều sâu đồ thị thực nhờ thuật toán sau: BEGIN (* Initialiation *) for v ∈ V Chuaxet[u] := true; for v ∈ V if Chuaxet[v] then DFS(v); END Rõ ràng lệnh gọi DFS(v) cho phép đến thăm tất đỉnh thuộc thành phần liên thơng với đỉnh v, sau thăm đỉnh lệnh gọi đến thủ tục DFS tất đỉnh kề với Mặt khác, thăm đỉnh v xong, biến Chuaxet[v] đặt lại giá trị false nên đỉnh thăm lần Thuật toán tiến hành tìm kiếm từ đỉnh chưa thăm, vậy, xét qua tất đỉnh đồ thị (không thiết phải liên thông) Để đánh giá độ phức tạp tính tốn thủ tục, trước hết nhận thấy số phép toán cần thực hai chu trình thuật tốn( hai vịng for chương trình chính) cỡ n Thủ tục DFS phải thực không n lần Tổng số phép toán cần phải thực thủ tục O(n+m), thủ tục ta phải xét qua tất cạnh đỉnh đồ thị Vậy độ phức tạp tính tốn thuật tốn O(n+m) Thí dụ Xét đồ thị cho Hình Các đỉnh đánh số lại theo thứ tự chúng thăm theo thủ tục tìm kiếm theo chiều sâu mơ tả Giả thiết đỉnh danh sách kề đỉnh v (Ke(v)) xếp theo thứ tự tăng dần số 3(9) 2(2) 5(5) 7(8) 8(6) 6(4) 1(1) 4(3) 9(7) 12(11) 10(12) 13(10) 11(13) Hình Chỉ số (trong ngoặc) đỉnh đánh lại theo thứ tự chúng thăm thuật tốn tìm kiếm theo chiều sâu Thuật tốn tìm kiếm theo chiều sâu đồ thị vơ hướng trình bày dễ dàng mơ tả lại cho đồ thị có hướng Trong trường hợp đồ thị có hướng, thủ tục DFS(v) cho phép thăm tất đỉnh u mà từ v có đường đến u Độ phức tạp tính tốn O(n+m) 1.2 Tìm kiếm theo chiều rộng đồ thị Để ý thuật tốn tìm kiếm theo chiều sâu đỉnh thăm muộn sớm trở thành duyệt xong Điều hệ tất yếu việc đỉnh thăm kết nạp vào ngăn xếp (STACK) Tìm kiếm theo chiều rộng đồ thị, nói cách ngắn gọn, xây dựng dựa sở thay ngăn xếp (STACK) hang đợi (QUEUE) Với cải biên vậy, đỉnh thăm sớm trở thành duyệt song (tức sớm dời khỏi hang đợi) Một đỉnh trở thành duyệt xong sau ta xét xong tất đỉnh kề (chưa thăm) với Thủ tục mơ tả sau: Procedure BFS(v); (* Tìm kiếm theo chiều rộng đỉnh v; Các biến Chuaxet, Ke biến toàn cục *) begin QUEUE:= ∅; QUEUE: