Bài giảng Chương 7: Chu Trình Euler Và Chu Trình Hamilton
Bài toán 7 cây cầu
Định nghĩa chu trình Euler
Điều kiện tồn tại chu trình Euler vô hướng
Điều kiện tồn tại chu trình Euler có hướng
Thuật toán tìm chu trình Euler
CHƯƠNG 7CHU TRÌNH EULER VÀ CHU TRÌNH HAMILTON1NỘI DUNGChu trình EulerĐiều kiện tồn tại chu trình EulerChu trình Hamilton\Điều kiện tồn tại chu trình Hamilton27.1. CHU TRÌNH EULERBài toán 7 cây cầuĐịnh nghĩa chu trình EulerĐiều kiện tồn tại chu trình Euler vô hướngĐiều kiện tồn tại chu trình Euler có hướngThuật toán tìm chu trình Euler3BÀI TOÁN 7 CÂY CẦUSông Pregel và cù lao Kneiphof chia thành phố Konigsberg ở nước CH Litva thành 4 vùng đất.7 cây cầu nối giữa các vùng đất. B A D Pregel C 4BÀI TOÁN 7 CÂY CẦU (tiếp)Bài toán: Liệu có thể đi qua cả 7 cây cầu, mỗi cầu đúng một lần, rồi quay về chỗ xuất phát được hay không? Bài toán đã làm say mê cư dân của thành phố. Họ háo hức đi thử nhưng không thành công.5BÀI TOÁN 7 CÂY CẦU (tiếp) Năm 1736, L.Euler đã chứng minh rằng bài toán không giải được.Từ bài toán này đưa đến các khái niệm về đường và chu trình Euler.6BÀI TOÁN 7 CÂY CẦU (tiếp)Biểu diễn mỗi vùng đất bằng một đỉnh của một đa đồ thị vô hướng, hai đỉnh có cạnh nối nếu có cầu nối tương ứng.Bài toán trên đưa về việc tìm một chu trình của đồ thị đi qua mỗi cạnh của đồ thị đúng một lần. acdb7ĐƯỜNG VÀ CHU TRÌNH EULERĐịnh nghĩa 7.1Đường Euler của đa đồ thị là đường đi qua mỗi cạnh của đồ thị đúng một lần.Chu trình Euler của đa đồ thị là đường đi qua mỗi cạnh của đồ thị đúng một lần.8VÍ DỤ 7.1Chu trình Euler: E = [1, 2, 3, 4, 5, 8, 9, 10, 6, 7] abdce2134567891097.2. ĐIỀU KIỆN TỒN TẠI CHU TRÌNH EULER VÔ HƯỚNGĐịnh lý 7.1 Đa đồ thị G có chu trình vô hướng Euler khi và chỉ khi mọi đỉnh đều có bậc chẵn.134258769107.2. ĐIỀU KIỆN TỒN TẠI CHU TRÌNH EULER VÔ HƯỚNG (tiếp)Chứng minh định lý 1) Điều kiện cầnMỗi lần chu trình đi qua một đỉnh thì đỉnh đó bớt đi 2 cạnh kề.Cuối cùng, số cạnh kề của mỗi đỉnh bằng 0.Vì vậy, số cạnh kề của mỗi đỉnh phải là một số chẵn.117.2. ĐIỀU KIỆN TỒN TẠI CHU TRÌNH EULER VÔ HƯỚNG (tiếp)Chứng minh định lý:2) Điều kiện đủXuất phát từ đỉnh a bất kỳ, lập dãy cạnh kề liêntiếp cho đến khi hết khả năng đi tiếp.Khi dừng phải dừng ở đỉnh a vì bậc các đỉnh đềuchẵn, thu được chu trình C1.Nếu C1 vét hết các cạnh của đồ thị thì C1 là chutrình cần tìm.Nếu còn cạnh ngoài C1, thì cạnh đó phải kề vớiđỉnh a1 của C1, xuất phát từ a1 tìm chu trình C2 127.2. ĐIỀU KIỆN TỒN TẠI CHU TRÌNH EULER VÔ HƯỚNG (tiếp)Chứng minh định lý:Khi C1, C2, đã vét hết các cạnh của đồ thị, lậpchu trình Euler như sau:Từ đỉnh a đi theo nửa trên của C1 đến a1Từ a1 đi theo nửa trên của C2 đến a2Khi đã đến chu trình con cuối cùng thì đi ngược lại theo nửa dưới các chu trình để trở về a. 13VÍ DỤ 7.2Tìm chu trình Euler cho đồ thị:134258769C1 = [1, 3, 4, 5, 8, 2]C2 = [2, 3, 5, 6, 7]C3 = [6, 9, 7, 8]C = [ 1, 3, 4, 5, 8, 2, 3, 5, 6, 9, 7, 8, 6, 7, 2 ]147.2. ĐIỀU KIỆN TỒN TẠI CHU TRÌNH EULER VÔ HƯỚNG (tiếp)Hệ quả 7.1: Đa đồ thị G có đường đi Euler vô hướng khi và chỉ khi số đỉnh bậc lẻ bằng 2.Chứng minh:1. Điều kiện cần: Nếu có đường đi Euler vô hướng nối a với b thì a và b là 2 đỉnh duy nhất có bậc lẻ.2. Điều kiện đủ:Nếu a, b là 2 đỉnh duy nhất có bậc lẻ, xây dựng G’ từ G bằng cách thêm cạnh (a,b).G’ không có đỉnh bậc lẻ do đó có chu trình Euler C.Bỏ cạnh (a,b) khỏi chu trình C, thu được đường Euler trong G. 157.3. ĐIỀU KIỆN TỒN TẠI CHU TRÌNH EULER CÓ HƯỚNGĐịnh lý 7.2:Đa đồ thị có hướng liên thông G có chu trình Eulercó hướng khi và chỉ khi tại mỗi đỉnh số cạnh đi vàobằng số cạnh đi ra:x V , r-(x) = r+(x) , trong đó:- r-(x): số cạnh đi vào đỉnh x - r+(x): số cạnh đi ra khỏi đỉnh x. 16VÍ DỤ 7.3Chu trình Euler: E = [1, 2, 3, 4, 5, 8, 9, 10, 6, 7] abdce21345678910177.3. ĐIỀU KIỆN TỒN TẠI CHU TRÌNH EULER CÓ HƯỚNG (tiếp)Hệ quả 7.2Đa đồ thị có hướng liên thông G có đường Euler cóhướng khi và chỉ khi trong G có 2 đỉnh a, b thoảmãn:r-(a) = r+(a) - 1r-(b) = r+(b) + 1còn các đỉnh khác đều cân bằng.187.3. ĐIỀU KIỆN TỒN TẠI CHU TRÌNH EULER CÓ HƯỚNG (tiếp)Chứng minh hệ quảĐiều kiện cần:Giả sử đồ thị G có đường Euler có hướng đi quatất cả các cạnh của đồ thị.- Với đỉnh xuất phát a của , Trừ cạnh đầu tiên của đi ra từ a, cứ một cạnh đi vào a thì phải có một cạnh đi ra khỏi a vì kết thúc ở đỉnh khác. Do đó: r-(a) = r+(a) - 1.197.3. ĐIỀU KIỆN TỒN TẠI CHU TRÌNH EULER CÓ HƯỚNG (tiếp)Với đỉnh kết thúc b của ,Trừ cạnh cuối cùng của đi tới b, cứ một cạnh đira khỏi b thì phải có một cạnh đi vào b vì kết thúc ở b. Do đó: r-(b) = r+(b) + 1.207.3. ĐIỀU KIỆN TỒN TẠI CHU TRÌNH EULER CÓ HƯỚNG (tiếp) 2) Điều kiện đủ:Giả sử G có các đỉnh a, b thoả mãn: r-(a) = r+(a) - 1 và r-(b) = r+(b) + 1.Thêm vào cạnh mới (b,a), khi đó theo định lý 7.3 ta có chu trình Euler có hướng C.Bỏ cạnh (b,a) khỏi C ta được một đường Euler có hướng. 217.4. THUẬT TOÁN TÌM CHU TRÌNH EULER Thuật toán 7.1Dữ liệu: Đồ thị liên thông G = (V, E) không có đỉnhbậc lẻ được biểu diễn bởi mảng các danh sách kềDK.Kết quả: Chu trình vô hưóng Euler với danh sách cácđỉnh nằm trong stack CE.227.4. THUẬT TOÁN TÌM CHU TRÌNH EULER (tiếp)Thuật toán: 1 Begin2 S := ; CE := ;3 v := đỉnh tuỳ ý của đồ thị ; push v onto S ; while S do6 begin7 v := top(S) ;237.4. THUẬT TOÁN TÌM CHU TRÌNH EULER (tiếp)8 if DK(v) then 9 begin 10 u := đỉnh đầu tiên trong danh sách DK[v] ;11 push u onto S ;12 DK[v] := DK[v] \ {u} ; 13 DK[u] := DK[u] \ {v}; { Xoá cạnh (v,u) }14 v := u 15 end 247.4. THUẬT TOÁN TÌM CHU TRÌNH EULER (tiếp) 16 else 17 begin 18 v := top(S) ; 19 push v onto CE 20 end21 end22 End . 257.4. THUẬT TOÁN TÌM CHU TRÌNH EULER (tiếp)Độ phức tạp: Mỗi lần lặp của chu trình (5 - 20):- Hoặc là đặt đỉnh lên stack S và xoá cạnh, - Hoặc chuyển đỉnh từ stack S sang stack CE. Số lần lặp của chu trình không vượt quá số cạnh m. Độ phức tạp tổng thể của thuật toán là O(m). 26
File đính kèm:
- CHU TRINH EULER VA CHU TRINH HAMILTON.ppt