intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng lý thuyết đồ thị - Chương 4

Chia sẻ: Nguyễn Nhi | Ngày: | Loại File: PDF | Số trang:9

136
lượt xem
21
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

ĐỒ THị EULER VÀ ĐỒ THị HAMILTON Trong chương này chúng ta sẽ tập trung nghiên cứu hai dạng đồ thị đặc biệt là đồ thị Euler và đồ thị Hamilton. Trong quá trình trình bày nếu không có chú thích bổ xung gì thì ta hiểu thuật ngữ đồ thị dùng để chỉ đồ thị tổng quát (Đa đồ thị vô hướng hoặc có hướng), thuật ngữ cạnh dùng để chỉ cả cạnh lẫn cung cua đồ thị.

Chủ đề:
Lưu

Nội dung Text: Bài giảng lý thuyết đồ thị - Chương 4

  1. Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ Chương 4 ĐỒ THN EULER VÀ ĐỒ THN HAMILTON Trong chương này chúng ta sẽ tập trung nghiên cứu hai dạng đồ thị đặc biệt là đồ thị Euler và đồ thị Hamilton. Trong quá trình trình bày nếu không có chú thích bổ xung gì thì ta hiểu thuật ngữ đồ thị dùng để chỉ đồ thị tổng quát (Đa đồ thị vô hướng hoặc có hướng), thuật ngữ cạnh dùng để chỉ cả cạnh lẫn cung cua đồ thị. 4.1 Đồ thị Euler Định nghĩa 1 Cho đồ thị G=(V,E) Đường đi đơn trong đồ thị G đi qua mỗi cạnh của nó một lần được gọi là đường đi Euler. Chu trình đơn trong đồ thị G đi qua mỗi cạnh của nó một lần được gọi là chu trình Euler. Ví dụ 1 Xét dồ thị vô hướng cho bởi hình sau (Hình 4.1) f a b e d c Hình 4.1 Đường đi a, b, f, a, e, b, a, d, e, c, b là đường đi Euler Đường đi a, f, b, c, e, d, a, e, b, a là đường Euler và cũng là chu trình Euler. Đường đi a, b, c, e, d, a, e, b, a, f, b, a không phai là chu trình Euler và cũng không phải là đường Euler Ví dụ 2 Xét đồ thị có hướng cho bởi hình sau (Hình 4.2) v1 v2 v3 v5 v4 Hình 4.2 44 NguyÔn Minh §øc - §HQG Hµ Néi
  2. Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ Đường v4, v3, v2, v4, v1, v5, v2 là đường đi Euler Chu trình v1, v5, v2, v4, v3, v2, v4, v1 không phải là chu trình Euler và cũng không là đường đi Euler. Chú ý: Đường đi Euler và chu trình Euler cũng có thể được định nghĩa như sau: Đường đi(chu trình) trong đồ thị G là đường đi (chu trình) Euler nếu nó đi qua tất cả các cạnh của đồ thị và mỗi cạnh đi qua đúng một lần. Định nghĩa 2 Đồ thị G=(V,E) được gọi là đồ thị Euler nếu như nó có chu trình Euler và gọi là đồ thị nửa Euler nếu nó có đường đi Euler. Ví dụ 3: Đồ thị cho trong ví dụ 1 là đồ thị Euler còn đồ thị cho trong ví dụ 2 là đồ thị nữa Euler. Định lý 1(định lý Euler) Một đồ thị vô hướng liên thông có chu trình Euler khi và chỉ khi mỗi đỉnh của nó đều có bậc chẵn. (Điều kiện cần và đủ để một đồ thị liên thông có chu trình Euler là tất cả các đỉnh của nó đều có bậc chẵn). Chứng minh Điều kiện cần: Một đồ thị liên thông có chu trình Euler thì mỗi bậc của nó đều có bậc chẵn. Thật vậy, giả sử chu trình Euler của đồ thị bắt đầu từ đỉnh v1 và tiếp theo là cạnh liên luộc với v1, tức là cạnh (v1,v2). Cạnh (v1,v2) góp 1 vào deg(v1). Mỗi lần chu trình đi qua một đỉnh vk của đồ thị, nó tăng thêm 2 đơn vị cho deg(vk) vì chu trình đi vào một đỉnh bằng một cạnh liên thuộc với đỉnh đó và đi ra bằng một cạnh liên thuộc khác, điều đó có nghĩa các đỉnh vk (k ≠ 1) đều có bậc là một số chẵn. Cuối cùng chu trình kết thúc ở đỉnh mà nó xuất phát v1, vì vậy nó tăng thêm 1 vào deg(v1). Do đó deg(v1) cũng phải là một số chẵn. Vậy ta kết luận nếu đồ thị liên thông có chu trình Euler thì mỗi đỉnh của nó đều có bậc chẵn. Điều kiện đủ: Một đồ thị liên thông mà các đỉnh đều có bậc chẵn thì tồn tại chu trình Euler trong đồ thị đó. Thật vậy, giả sử G là một đồ thị liên thông với các đỉnh đều có bậc là một số chẵn. Ta đi xây dựng một chu trình đơn bắt đầu từ đỉnh v1 tuỳ ý của đồ thị G. Trước tiên ta chọn cạnh (v1, v2), sau đó là (v2, v3),.. càng chọn được nhiều càng tốt. Đến một lúc nào đó đi mà ta đang chọn phải kết thúc tại v1 với cạnh (vk,v1) vì đồ thị là hữu hạn và các đỉnh đều có bậc là một số chẵn. Điều này là chắc chắn xãy ra vì mỗi lần đường đi qua một đỉnh bậc chẵn nó chỉ đi vào bằng một cạnh nên ít nhất vẫn còn một cạnh để đi ra. Ví dụ trong đồ thị G cho bởi hình 4.3 ta bắt đầu ở đỉnh a và chọn tiếp các cạnh (a, b), (b, c), (c, h) và (h, a). b g g c e e a e G H h d d Hình 4.3 45 NguyÔn Minh §øc - §HQG Hµ Néi
  3. Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ Chu trình mà ta xây dựng như trên có thể dùng hết tất cả các cạnh hoặc không. Nếu tất cả các cạnh đã được dùng hết thì chu trình của ta là chu trình Euler. Trường hợp ngược lại, ta gọi H là đồ thị con nhân được từ đồ thị G bằng cách xoá các cạnh đã dùng và các đỉnh không liên thuộc với các đỉnh còn lại. Chẳng hạn trên hình 4.3 ta xoá đi chu trình đơn a, b, c, h, a khỏi đồ thị ta nhận được đồ thị con H. Vì G là liên thông nên H phải có ít nhất một đỉnh chung với chu trình mà ta đã xoá, ta gọi w là đỉnh chung đó (Trong hình 4.3 đỉnh chung là c). Mỗi đỉnh của H cũng có bậc chẵn bởi vì mỗi đỉnh nếu có xoá cạnh thì đều xoá từng cặp cạnh liên thuộc với nó. Lưu ý là H có thể không liên thông. Bắt đầu từ đỉnh w ta lại đi xây dựng đường đi đơn trong H như đã làm đối với G bằng cách chọn được càng nhiều cạnh càng tốt. Đường đi phải kết thúc tại w. chẳng hạn trong ví dụ của ta là c, d, e, g, c là một chu trình mới trong H. Tiếp theo ta tạo một chu trình mới trong G bằng cách ghép chu trình trong H với chu trình ban đầu trong G, điều này làm được vì hai chu trình này có đỉnh chung là w. Qúa trình cứ tiếp tục như vậy cho tới khi tất cả các cạnh của đồ thị đã được sử dụng (quá trình này đến một lúc nào đó phải kết thúc vì đồ thị là hữu hạn) Như vậy ta đã xây dựng được một chu trình Euler trong đồ thị. Trong ví dụ của ta chu trình Euler tìm được là a, b, c, d, e, g, c, h, a. Điều này chứng tỏ nếu đồ thị liên thông mà các đỉnh đều có bậc chẵn thì đồ thị có chu trình Euler. (định lý được chứng minh). Từ cách chứng minh thuật toán, giả sử G là đồ thị Euler ta có thuật toán xây dựng chu trình Euler như sau Procedure Euler(G: Đồ thị liên thông với tất cả các đỉnh có bậc chẵn); Begin Chu trình:=chu trình trong G bắt đầu tại một đỉnh tuỳ ý và các cạnh được thêm vào để xây dựng đường đi qua một số đỉnh và cuối cùng quay về đỉnh này; H:=G với các cạnh của G sau khi bỏ đi Chu trình; While H còn cạnh Begin Chu trình con:=chu trình trong H bắt đầu tại đỉnh trong H cũng là đỉnh đầu mút của một cạnh thuôc Chu trình; H:=H với các cạnh của Chu trình con và tất cả các đỉnh cô lập bị loại bỏ; Chu trình:=Chu trình với Chu trình con được chèn vào tại một đỉnh thích hợp; End; End; Ví dụ 4 Xét đồ thị vô hướng G cho bởi hình dưới đây (Hình 4.4) v3 v2 v4 v5 v1 Hình 4.4 đồ thị G v7 v6 Đây là đồ thị liên thông và có các đỉnh đều có bậc chẵn, ta sẽ đi xây dựng chu trình Euler như sau: Xuất phát từ đỉnh v1 ta có chu trình đơn P1: v1, v2, v7, v1. Bỏ đi chu trình này ta nhận được đồ thị G1 như sau: 46 NguyÔn Minh §øc - §HQG Hµ Néi
  4. Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ v3 v4 v5 v2 Đồ thị G1 v6 Xuất phát từ đỉnh v2 của đồ thị G1 ta xây dựng chu trình đơn P2: v2, v4, v3, v2, sau khi bỏ đi chu trình P2 ta nhân được đồ thị G2 như sau: v4 v5 Đồ thị G2 v6 Xuất phát từ đỉnh v4 của đồ thị G2 ta xây dựng chu trình đơn P3: v4, v6, v5, v4. Cuối cùng ghép các chu trình P1, P2, P3 ta được chu trình Euler cần tìm là: v1, v2, v4, v6, v5, v4, v3, v2, v7, v1 Từ thuật toán xây dựng chu trình Euler cho đồ thị Euler ở trên ta có thủ tục sau để tìm chu trình Euler trong đồ thị Procedure Euler_Circle(u); (* ST và EC là hai cấu trúc Stack *) Begin ST:= Φ ; EC:= Φ ; ST ⇐ u; (* Nạp u vào Stack ST *) While ST ≠ Φ do Begin x:=top(ST); (* x là phần tử ở đỉnh Stack ST *) If Ke(x) ≠ Φ then Begin y:= đỉnh đầu tiên trong danh sách Ke(x); ST ⇐ y; Ke(x):=Ke(x)\ {y}; Ke(y):=Ke(y)\ {x}; (* Loại cạnh (x,y) ra khỏi đồ thị *) End Else Begin x ⇐ ST; (* Lấy x ra khỏi Stack ST *) EC ⇐ x; (* Nạp x vào Stack CE *) End; End; End; Từ thuật toán xây dựng chu trình Euler cho đồ thị Euler ta xây dựng thuật toán tìm chu trình Euler cho một đồ thị G bất kỳ như sau: Thuật toán tìm chu trình Euler 47 NguyÔn Minh §øc - §HQG Hµ Néi
  5. Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ Bước 1: Kiểm tra xem đồ thị G có liên thông hay không. Nếu G là liên thông thì chuyển sang bước 2, ngược lại thì thuật toán dừng và kết luận đồ thị không có chu trình Euler. Bước 2: Kiểm tra xem tất cả các đỉnh của đồ thị G đều có bậc chẵn hay không, nếu co thì chuyển sang bước 3, ngược lại thì thuật toán dừng và kết luận đồ thị không có chu trình Euler. Bước 3: Xây dựng chu trình Euler theo thuật toán trên. (thuật toán xây dựng chu trình Euler của đồ thị Euler) Định lý 2 Đồ thị vô hướng liên thông G là đồ thị nữa Euler khi và chỉ khi nó có không quá hai đỉnh bậc lẻ. Chứng minh: Thật vậy, nếu đồ thị G có không quá hai đỉnh bậc lẻ thì số đỉnh bậc lẻ của nó chỉ có thể là 0 hoặc 2 (Số đỉnh bậc lẻ trong một đồ thị là một số chẵn). Nếu G không có đỉnh bậc lẻ thì theo Định lý 1 nó là đồ thị Euler do đó nó cũng là Đồ thị nữa Euler. Nếu G có hai đỉnh bậc lẻ, giả sử hai đỉnh đó là u và v. Ta gọi H là đồ thị nhận được từ đồ thị G bằng cách thêm vào G một đỉnh w và hai cạnh (u, w), (v, w). Khi đó H là đồ thị liên thông có các đỉnh đều có bậc chẵn do đó theo định lý 1 đồ thị H có chu trình Euler. Nếu xoá khỏi chu trình này đỉnh w và hai cạnh kề (w,u), (w,v) ta nhận được đường đi Euler trong đồ thị G. (Định lý được chứng minh). Ví dụ 5: Cho đồ thị G=(V,E) liên thông có hai đỉnh bậclẻ là v1 và v2 như hình sau (Hình 4.5) v3 v5 v4 v1 v2 Hình 4.5 Ta bổ sung thêm đỉnh mới v và hai cạnh (v,v1), (v,v2) vào đồ thị G ta thu được G’=(V’,E’) như hình 4.6 v5 v4 v3 . v1 v2 v Hình 4.5 Đồ thị G’ là đồ thị liên thông có các đỉnh đều bậc chẵn, do đó theo định lý 1 (Định lý Euler) tồn tại chu trình Euler: (v,v1),(v1,v5),(v5,v4),(v4,v3),(v3,v2),(v2,v4),(v4,v1),(v1,v2),(v2,v). Ta bỏ đi đỉnh v và hai cạnh (v,v1), (v2,v) Ta được đường đi Euler trong đồ thị G là: 48 NguyÔn Minh §øc - §HQG Hµ Néi
  6. Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ (v1,v5),(v5,v4),(v4,v3),(v3,v2),(v2,v4),(v4,v1),(v1,v2) Định lý 3: Đồ thị có hướng liên thông mạnh là đồ thị Euler khi và chỉ khi deg+(v)=deg-(v), ∀v ∈ V (Chứng minh tương tự như định lý 1) 4.2 Đồ thị Hamilton Định nghĩa 3 Cho đồ thị G=(V,E) Đường đi sơ cấp trong đồ thị G đi qua mỗi đỉnh của đồ thị một lần được gọi là đường đi Hamilton. Chu trình sơ cấp trong đồ thị G đi qua mỗi đỉnh của đồ thị một lần gọi là chu trình Hamilton. Ví dụ 6 Xét đồ thị vô hướng cho bởi hình sau (Hình 4.6) a b Hình 4.6 d c Đường đi d, c, a, b là đường đi Hamilton Chu trình a, b, c, d, a là chu trình Hamilton Chu trình d, a, c, b, a, d không phải là chu trình Hamilton Ví dụ 7 Xét đồ thị có hướng cho bởi hình sau (Hình 4.7) 3 1 2 Hình 4.7 4 Đường đi 3, 1, 4, 2 là đường đi Hamilton Đường đi 2, 1, 4 không phải là đường đi Hamilton Chu trình 2, 1, 4, 2 không phải chu trình Hamilton Chú ý Đường đi Hamilton và chu trình Hamilton cũng có thể được định nghĩa như sau: Đường đi(chu trình) trong đồ thị G là đường đi(chu trình) Hamilton nếu nó đi qua tất cả các đỉnh của đồ thị và mỗi đỉnh đi qua đúng một lần. Định nghĩa 4 Đồ thị G=(V,E) được gọi là đồ thị Hamilton nếu như nó có chu trình Hamilton và gọi là đồ thị nữa Hamilton nếu nó có đường đi Hamilton. Ví dụ 7 Đồ thị cho ở hình 4.6 là đồ thị Hamilton, còn đồ thị ho ở hình 4.7 là đồ thị nữa Hamilton. Định lý 4 Đơn đồ thị vô hướng liên thông G=(V,E) có bậc ở mỗi đỉnh không nhỏ hơn nữa số đỉnh của đồ thị (deg(v) ≥ |V|/2 với ∀v ∈ V ) thì đồ thị luôn tồn tại chu trình Hamilton. (là đồ thị Hamilton). Ở đây ta giả thiết |V|>2. 49 NguyÔn Minh §øc - §HQG Hµ Néi
  7. Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ Chứng minh Ta đi chứng minh định lý bằng phương pháp phản chứng như sau: Giả sử trong đồ thị G=(V,E) không tồn tại chu trình Hamilton. Ta tiến hành bổ sung thêm các đỉnh mới vào đồ thị G và các cạnh nối các đỉnh mới này với tất cả các đỉnh của đồ thị G cho tới khi ta nhận được đồ thị mới G’=(V’,E’) là đồ thị có chu trình Hamilton. Giả sử số đỉnh tối thiểu mà ta cần bổ xung vào đồ thị G để nhận được đồ thị G’ là k đỉnh. Khi đó |X’| = |X| + k. Trước tiên ta nhận thấy rằng các đỉnh mới phải đứng xen kẽ hai đỉnh cũ trong chu trình Hamilton. Thật vậy, nếu hai đỉnh mới u1, u2 là kề nhau trong chu trình Hamilton, chẳng hạn: vi u1 u2 vj Do u1, u2 đều có cạnh nối với các đỉnh cũ nên ta có thể bỏ đi một trong hai đỉnh u1, u2 mà vẫn được chu trình Hamilton. Điều này trái với giả thiết số đỉnh bổ sung vào là tối thiểu. Vậy đỉnh mới phải đứng xen kẽ hai đỉnh cũ (*). Từ khẳng định (*) ta thấy chu trình Hamilton co dạng: vi u vj (trong đó vi, vj là đỉnh cũ thuộc V, còn u là đỉnh mới thuộc V’-V) Trong trường hợp này ta cần chỉ ra số đỉnh kề của vi là không lớn hơn số đỉnh không kề của vj. Thật vậy, giả sử v1 là đỉnh kề của vi và v2 là đỉnh kề của v1. Nếu v2 là đỉnh kề của đỉnh vj, thì khi đó chu trình Hamilton có dạng vi u vj v1 v2 Tức là ta có thể bỏ đỉnh u bằng cách thay vi, u, vj bởi vi, v1, v2, vj. Điều này trái với giả thiết số đỉnh mà ta bổ sung là tối thiểu. Vậy v2 không thể kề với vj. Như vậy có nghĩa là với đỉnh v1 kề với vi thì sẽ có tương ứng một đỉnh v2 không kề với vj, tức số đỉnh kề với vi không lớn hơn số đỉnh không kề với vj (**). Từ khẳng định (**) ta có bất đẳng thức: S2 ≤ S1 ≤ |V|+p=|V’| (deg(v) ≥ |V|/2) (1) Trong đó S2 là tổng số đỉnh kề của vi và đỉnh kề của vj, S1 là tổng số đỉnh không kề của vi và đỉnh không kề của vj Ta có, số đỉnh kề của dỉnh vi = deg(vi) ≥ |V|/2 + p và số đỉnh kề của đỉnh vj = deg(vj) ≥ |V|/2 + p (2) Từ (1) và (2) ta có bất đẳng thức |V| + 2p ≤ |V| + p Sy ra p=0. điều này chứng tỏ không cần bổ sung đỉnh mới nào thì đồ thị G=(V,E) vẫn có chu trình Hamilton. (Đpcm) Ví dụ 8 Xét đồ thị vô hướng cho bởi hình sau (Hình 4.8) 50 NguyÔn Minh §øc - §HQG Hµ Néi
  8. Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ 2 1 3 Hình 4.8 4 5 6 Các đỉnh của đồ thị này đều có bậc lớn hơn hoặc bằng nữa số đỉnh do đó trong đồ thị có tồn tại chu trình Hamilton, chu trình đó là 1, 2, 3, 4, 5, 6, 1 Định lý 5 Giả sử G=(V,E) là đồ thị có hướng và đầy đủ. Khi đó trong đồ thị luôn tồn tại đường Hamilton. Chứng minh Giả sử w = vi1 vi2 ... vik vik+1....vim-1 vim là một đường sơ cấp bất kỳ trong đồ thị. Nếu trong đường sơ cấp w mà tất cả các đỉnh của đồ thị đều đã có mặt thì w chính là đường Hamilton. Ngựơc lại nếu còn có những đỉnh của đồ thị chưa có mặt trong w thì ta có thể bổ xung hết những đỉnh vào đường sơ cấp w để w trở thành đường Hamilton theo nguyên tắc sau: Giả sử v thuộc V mà v chưa có mặt trong đường sơ cấp w. Khi đó do tính đầy đủ của đồ thị, chỉ có thể sãy ra các trường hợp sau: 1) Nếu v có cung tới vi1 thì ta bổ sung v vào đầu w, và khi đó nó có dạng v vi1 vi2...vik vik+1...vim-1 vim 2) Nếu vik có cung tới v tà từ x có cung tới vik+1 thì ta bổ sung v vào giữa hai đỉnh vik và vik+1. Khi đó w có dạng vi1 vi2...vik v vik+1...vim-1 vim 3) Nếu từ vik và vik+1 có cung đi tới v và từ v lại có cong đi tới vk+2 thì ta bổ sung v vào giữa hai đỉnh vik+1 và vik+2, w khi đó có dạng vi1 vi2...vik vik+1 v vik+2...vim-1vim 4) Nếu với mọi k thuộc [1, m-1] và từ vik và vik+1 có cung sang v thì ta bổ sung v vào cuối w, khi đó nó có dạng vi1 vi2...vik vik+1...vim-1 vim v Bằng cách đó ta có thể bổ sung hết các đỉnh của đồ thị vào w nếu như nó chưa có mặt trong w để w trở thành đường Hamilton (Đpcm). Ví dụ 9 Xét đồ thị có hướng đầy đủ cho bởi hình sau (Hình 4.9) 2 1 3 4 6 5 51 NguyÔn Minh §øc - §HQG Hµ Néi
  9. Gi¸o ¸n m«n: Lý ThuyÕt §å ThÞ Hình 4.9 Với đồ thị này ta luôn xây dựng được đường Hamilton, thật vậy giả sử ta chọn một đường sơ cấp như sau: 2, 5, 4, bây giời ta sẽ lần lượt thêm các dỉnh 1, 3, 6 vào đường này để có đường Hamilton như sau: đỉnh 1 có cung nối với đỉnh 2 nên ta thêm 1 vào đầu đường đi sơ cấp trên và ta nhận được đường sơ cấp mới là 1, 2, 5, 4. với đỉnh 3 ta thấy từ đỉnh 1 có cung tới đỉnh 3, từ đỉnh 3 có cung đi tới đỉnh 2 nên ta sẽ bổ sung đỉnh 3 vào giữa đỉnh 1 và đỉnh 2 và ta được đường sơ cấp mới là: 1, 3, 2, 5, 4 Tiếp đến ta bổ sung đỉnh 6 vào sau đỉnh 4 và ta nhận được đường Hamilton 1, 3, 2, 5, 4, 6 Hệ quả (Không chứng minh) Đồ thị vô hướng đầy đủ G = (V,E) với |V|>2 luôn tồn tại chu trình Hamilton. điều ngược lại nói chung là không đúng. Ví dụ 10 Đồ thị vô hướng cho bởi hình sau (Hình 4.10) có chu trình Hamilton nhưng không đầy đủ v2 v1 v3 v4 Thuật toán liệt kê các chu trình Hamilton của đồ thị Bài tập chương 4 52 NguyÔn Minh §øc - §HQG Hµ Néi
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2