Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
1,35 MB
Nội dung
Bài giảng LÝ THUYẾT ĐỒ THỊ (GRAPH THEORY) Chương 2: ĐỒ THỊ EULER VÀ ĐỒ THỊ HAMILTON ĐƯỜNG ĐI VÀ CHU TRÌNH EULER ĐƯỜNG ĐI VÀ CHU TRÌNH HAMILTON Nhà tốn học Thụy sĩ Ví dụ :Bài toán cầu Konigsberg (Nga) - Xác định chu trình qua tất cầu, lần Ví dụ :Bài toán cầu Konigsberg (tt) Gọi 1, 2, vùng đất bị ngăn cách nhánh sông Biểu diễn vùng đất đỉnh đồ thị Một cạnh: cầu nối vùng đất Ví dụ :Bài toán cầu Konigsberg (tt) Bài tốn trở thành: Tìm chu trình đơn qua tất cạnh đồ thị Chu trình Euler? Đường Euler chu trình Euler Cho G đồ thị liên thơng, chu trình Euler (Eulerian circuit) G chu trình đơn qua tất cạnh (cung) G Ví dụ 1,2,5,3,4,5,1: chu trình Euler: Đường Euler chu trình Euler Cho G đồ thị liên thông, đường Euler (Eulerian path) G đường đơn qua tất cạnh (cung) G Ví dụ 2,1,5,2,3,4,5: đường Euler Định lý Euler Định lý Euler 1: Đồ thị vô hướng G=(V,E) liên thông |V|>1, G có chu trình Euler đỉnh G có bậc chẵn Ví dụ: Đồ thị sau có chu trình Euler, khơng có chu trình Uuler a b c e d G1 b G2 c e a f d g G3 Định lý Euler a h b e f g c 0 1 A 0 1 0 1 1 0 1 0 1 1 d G4 G5 (cho ma trận kề) Ví dụ tìm chu trình Euler Euler() { // Tim chu trinh Euler cua thi Euler G = (V, E) // PATH chua danh dinh cua chu trinh Euler // STACK ngan xep dieu khien viec tim kiem STACK = ; PATH = ; Chon u la mot dinh nao cua thi; STACK u; // dua u vao dua ngan xep While (STACK ) { x top(STACK); // gan x bang phan tu dau STACK If (Ke(x) ) { y dinh dau tien danh sach Ke(x); STACK y; // huy phan tu dau STACK va gan cho y // loai bo canh (x,y) khoi thi Ke(x) = Ke(x) \ {y}; Ke(y) = Ke(y) \ {x}; } Else { x STACK; // huy phan tu dau STACK va gan cho x PATH x; } 27 } } Bài tập thực hành Cài đặt thuật tốn kiểm tra đồ thị (vơ hướng có hướng) có Euler (hoặc Euler) hay khơng Cài đặt thuật tốn tìm đường chu trình Euler đồ thị vơ hướng (có hướng) 28 Đường chu trình Hamilton Cho G liên thơng, đường (tương tự chu trình) Hamilton G đường (tương tự chu trình) qua tất đỉnh G, đỉnh qua lần Một đồ thị có chu trình Hamilton gọi thị Hamilton Một đồ thị có đường Hamilton gọi Hamilton Ví dụ: 6 G Một đường Hamilton G 29 Đường chu trình Hamilton (tt) 1 2 H Một chu trình Hamilton H 30 Quy tắc tìm chu hình Hamilton Nếu tồn đỉnh G có bậc ≤1 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 Hamilton phải xóa cạnh cịn lại tới x 31 Ví dụ: 2 3 9 8 10 11 H 7 G -Đồ thị có chu trình Hamilton, đồ thị khơng có chu trình Hamilton? -Tìm chu trình Hamilton (nếu có) đồ thị 32 Đường chu trình Hamilton (tt) Định lý: Mọi đồ thị đủ có chu trình Hamilton 1 3 5 K5 12 5 3 Là chu trình Hamilton K5 33 Đường chu trình Hamilton (tt) Định lý: Cho đồ thị G, giả sử có k đỉnh cho xoá k đỉnh với cạnh liên kết với chúng ta nhiều k thành phần liên thơng Thì G khơng có chu trình Hamilton 6 7 5 3 H H có chu trình Hamilton khơng? Xóa đỉnh với cạnh liên kết thu thành phần liên thơng H khơng có chu trình Hamilton 34 Đường chu trình Hamilton (tt) Cho đồ thị G hình G có chu trình Hamilton khơng? Giải: Nếu xóa đỉnh 3,4 ta thành phần liên thông Vậy G không Hamilton 5 10 10 35 Đường chu trình Hamilton (tt) Định lý (Dirac): Cho G đơn đồ thị có n đỉnh (n≥3) Nếu đỉnh G có bậc ≥ n/2 G có chu trình Hamilton Định lý: Mọi đồ thị có hướng, có n đỉnh, liên thông mạnh Nếu đỉnh v thuộc đồ thị thỏa: deg-(v)≥n/2 deg+(v)≥n/2 Thì G có chu trình hamilton Ví dụ: Vậy G có chu trình Hamilton n=5 (>3) deg(1)=4 (≥5/2) deg(2)=4 (≥5/2) Deg(3)=4 (≥5/2) Deg(4)=3 (≥5/2) Deg(5)=3 (≥5/2) 36 Đường chu trình Hamilton (tt) Bao đóng đồ thị: Cho đơn đồ thị G có n đỉnh, bao đóng c(G) tạo từ G cách bổ sung cho cặp đỉnh không kề u v với deg(v) + deg(u) ≥ n cạnh uv Ví dụ: Cho G, tìm bao đóng G 37 Đường chu trình Hamilton (tt) Định lý: Một đồ thị Hamilton bao đóng Hamilton Ví dụ: Cho đồ thị G có phải hamilton khơng? 38 Đường chu trình Hamilton (tt) Đồ thị đấu loại: Là đồ thị có hướng có đỉnh luôn nối với cung Định lý: Mọi đồ thị đấu loại có đường Hamilton Mọi đồ thị đấu loại liên thơng mạnh có chu trình Hamilton 39 Đường chu trình Hamilton (tt) Định lý (Ore, 1960): Một đơn đồ thị vô hướng G gồm n đỉnh với n≥3 Nếu deg(u)+deg(v)≥n với cặp đỉnh u,v khơng kề G G đồ thị Hamilton Ví dụ: Mọi cặp đỉnh khác u, v G thỏa: deg(u)+deg(v)≥n=6 Nên G có chu trình Hamilton G 40 Thuật tốn tìm tất chu trình Hamilton G (Thuật tốn quay lui) FindHamiltonCycles(int[][] A) // A ma trận kề G // G có n đỉnh // hc[0 n-1] chứa chu trình tìm //visited[0…n-1] đánh dấu đỉnh xét int[] hc= new int[n]; visited = new boolean[n]; for (j=0; j