TIẾP NỐI CHƯƠNG 2 CỦA SLISE MÔN TOÁN RỜI RẠC MÌNH XIN GỬI ĐẾN CÁC BẠN CHƯƠNG 3 MÌNH MONG RẰNG VỚI NHỮNG MẪU SLIDE NAFUY SẼ GIÚP MỌI NGƯỜI DỄ DÀNG HƠN KHI HỌC TẬP VÀ THỰC HÀNH MÔN NÀY .....
CHƯƠNG 3: LÝ THUYẾT ĐỒ THỊ GV: Đặng Hữu Nghị Sđt: 0989640319 Email: nghidanghuu@gmail.com NỘI DUNG 3.1 •Các khái niệm lý thuyết đồ thị 3.2 •Biểu diễn đồ thị máy tính 3.3 •Các thuật tốn tìm kiếm đồ thị 3.4 •Đồ thị Euler đồ thị Hamilton 3.5 •Cây khung đồ thị 3.6 •Bài tốn đường ngắn 3.7 •Bài tốn luồng cực đại mạng ĐỒ THỊ EULER 1736 Euler (1707-1783) công bố lời giải “bài tốn cầu Konigsberg” Bài tốn tìm đường qua tất cầu, cầu qua lần Bài tốn phát biểu lại mơ sau: Có tồn chu trình đơn đa đồ thị G chứa tất cạnh? ĐẶT VẤN ĐỀ Hãy vẽ hình sau nét bút (không nhấc bút lên vẽ) a b c ĐỒ THỊ EULER Đường qua cạnh đồ thị lần gọi đường Euler Chu trình qua cạnh đồ thị lần gọi chu trình Euler Đồ thị gọi đồ thị Euler có chu trình Euler, gọi đồ thị nửa Euler có đường Euler Nhận xét: đồ thị Euler nửa Euler, điều ngược lại không ln ĐỒ THỊ EULER Ví dụ : Xét đồ thị G1, G2, G3 bên dưới: Đồ thị G1 hình đồ thị Euler có chu trình Euler a, e, c, d, e, b, a Đồ thị G3 khơng có chu trình Euler có đường Euler a, c, d, e, b, d, a, b, G3 đồ thị nửa Euler Đồ thị G2 khơng có chu trình đường Euler ĐỒ THỊ EULER Ví dụ 2: Xét đồ thị H1, H2, H3 bên dưới: Đồ thị H2 hình đồ thị Euler có chu trình Euler a, b, c, d, e, a Đồ thị H3 khơng có chu trình Euler có đường Euler c, d, b, c, a, b, H3 đồ thị nửa Euler Đồ thị H1 khơng có chu trình đường Euler ĐỒ THỊ EULER Định lý (Euler): G đồ thị vô hướng liên thông G đồ thị Euler đỉnh G có bậc chẵn Bổ đề: Nếu bậc đỉnh đồ thị G khơng nhỏ G chứa chu trình Hệ quả: Đồ thị vô hướng liên thông G nửa Euler có khơng q đỉnh bậc lẻ ĐỒ THỊ EULER Thuật toán Flor cho phép xác định chu trình Euler: B1: Chọn đỉnh a làm đỉnh bắt đầu Xây dựng đường nét khép kín C’ B2: Loại bỏ cạnh C’ khỏi đồ thị Loại bỏ đỉnh lập (nếu có) B3: Lấy đỉnh chung C’ đồ thị lại để xây dựng đường nét C’’ Rồi ghép vào C’ quay lại bước Lặp cạnh đưa hết vào C’ 10 ĐỒ THỊ HAMILTON Định lý (Dirak 1952): Đơn đồ thị vơ hướng G với n>2 đỉnh, đỉnh có bậc không nhỏ n/2 đồ thị Hamilton Định lý 2: Giả sử G đồ thị có hướng liên thông mạnh với n đỉnh Nếu deg+(v)≥ n/2, deg–(v) ≥ n/2, v G Hamilton Đồ thị G có đỉnh, đỉnh có bậc 4, nên G đồ thị Hamilton Đồ thị phân đơi có bậc đỉnh (> 3/2), nên đồ thị Hamilton 22 ĐỒ THỊ HAMILTON Thuật toán liệt kê tất chu trình Hamilton đồ thị procedure Hamilton(k); (Liệt kê chu trình Hamilton thu việc phát triển dãy đỉnh (X[1], X [k-1]) đồ thị G=(V, E) cho hỏi danh sách ké: Ke(v),v ϵ V) Begin for y ϵ Ke(X[k-l]) if ( k = n+1 ) and ( y = v0 ) then Ghinhan(X[l], ,X[n], v0) else if Chuaxet[y] then begin X[k] := y; Chuaxet[y] := false; Hamilton(k+l); Chuaxet[y] := true; end; end; 23 ĐỒ THỊ HAMILTON (* Main Program *) BEGIN for v ϵ V Chuaxet[v] := true; x[l] := v0; (* v0 đỉnh đồ thị *) Chuaxet[v0] := false ; Hamilton(2); END 24 ĐỒ THỊ HAMILTON Ví dụ: Hình mơ tả tìm kiếm tất chu trình Hamilton đồ thị 25 ĐỒ THỊ HAMILTON Qui tắc tìm chu trình Hamilton Nếu tồn đỉnh G có bậc G khơng có chu trình Hamilton Nếu đỉnh x có bậc cạnh tới x phải thuộc chu trình Hamilton Chu trình Hamilton khơng chứa chu trình thực Trong trình xây dựng chu trình Hamilton, sau lấy cạnh tới đỉnh x đặt vào chu trình khơng thể lấy thêm cạnh tới x Do xóa cạnh cịn lại tới x G ĐỒ THỊ HAMILTON Xét đỉnh 1, chọn cạnh (1,2) (1,6) 27 ĐỒ THỊ HAMILTON Xóa cạnh (1,5), (1,4), (1,3), (1,7), (1,8), (1,9) (theo quy tắc 4) ĐỒ THỊ HAMILTON Xóa cạnh (1,5), (1,4), (1,3), (1,7), (1,8), (1,9) (theo quy tắc 4) ĐỒ THỊ HAMILTON Các đỉnh 3, 4, bậc 2, cạnh (2,3), (3,4), (4,5), (5,6) phải thuộc chu trình Hamilton (quy tắc 2) ĐỒ THỊ HAMILTON Chu trình con: 1,2,3,4,5,6,1 (khơng xóa cạnh chu trình này) ĐỒ THỊ HAMILTON •Chọn cạnh (1,2), (1,3) Xóa cạnh (1,4), (1,5), (1,6), (1,7), (1,8), (1,9) (quy tắc 4) •Xóa cạnh (2,3) để khơng tạo chu trình (quy tắc 3) ĐỒ THỊ HAMILTON • Các đỉnh 4, 5, 6, 7, 8, có bậc nên thuộc chu trình Hamilton (quy tắc 2) • Chu trình nhận được: 1,3,4,5,6,7,8,9,2,1 ĐỒ THỊ HAMILTON Bài tốn xếp chỗ ngồi: Có n đại biểu đến dự hội nghị Mỗi ngày họp lần ngồi quanh bàn trịn Hỏi phải bố trí ngày bố trí cho ngày, người có hai người kế bên bạn Lưu ý n người muốn làm quen với Xét đồ thị gồm n đỉnh, đỉnh ứng với người dự hội nghị, hai đỉnh kề hai đại biểu tương ứng muốn làm quen với Như vậy, ta có đồ thị đầy đủ Kn 34 ĐỒ THỊ HAMILTON Mỗi chu trình Hamilton cách xếp yêu cầu tốn Bái tốn trở thành tìm chu trình Hamilton phân biệt đồ thị đầy đủ Kn (hai chu trình Hamilton gọi phân biệt chúng khơng có cạnh chung) Định lý: Đồ thị đầy đủ Kn với n lẻ n ≥ có (n −1)/2 chu trình Hamilton phân biệt 35 ĐỒ THỊ HAMILTON Giải toán xếp chỗ ngồi với n=11 Có (11−1)/2=5 cách xếp chỗ ngồi phân biệt sau: 10 11 1 11 10 1 11 10 1 11 10 1 11 10 36 ... b c ĐỒ THỊ EULER Đường qua cạnh đồ thị lần gọi đường Euler Chu trình qua cạnh đồ thị lần gọi chu trình Euler Đồ thị gọi đồ thị Euler có chu trình Euler, gọi đồ thị nửa Euler có đường Euler. .. trình Euler có đường Euler a, c, d, e, b, d, a, b, G3 đồ thị nửa Euler Đồ thị G2 khơng có chu trình đường Euler ĐỒ THỊ EULER Ví dụ 2: Xét đồ thị H1, H2, H3 bên dưới: Đồ thị H2 hình đồ thị Euler. .. Nhận xét: đồ thị Euler nửa Euler, điều ngược lại không ĐỒ THỊ EULER Ví dụ : Xét đồ thị G1, G2, G3 bên dưới: Đồ thị G1 hình đồ thị Euler có chu trình Euler a, e, c, d, e, b, a Đồ thị G3 khơng