Đường đi Euler trong G là đường đi đơn chứa mọi cạnh của G.. • Chu trình đơn chứa tất cả các cạnh của đồ thị G được gọi là chu trình Euler... • Một đa đồ thị liên thông có chu trình Eu
Trang 1Chương 2
ĐƯỜNG ĐI VÀ CHU TRÌNH
• I ĐƯỜNG ĐI VÀ CHU TRÌNH EULER
• II ĐƯỜNG ĐI VÀ CHU TRÌNH HAMILTON
• III BÀI TOÁN ĐƯỜNG NGẮN NHẤT
Trang 2I ĐƯỜNG ĐI VÀ CHU TRÌNH EULER
• 1 Định nghĩa nh ngh a ĩa. Đường đi Euler trong G là đường đi
đơn chứa mọi cạnh của G
• Chu trình đơn chứa tất cả các cạnh của đồ thị G
được gọi là chu trình Euler.
• a b a b
• e
• c d e
• c d
Có chu trình Euler Có đường đi Euler
Trang 3I ĐƯỜNG ĐI VÀ CHU TRÌNH EULER
2 Điều kiện cần và đủ để tồn tại chu trình Euler.
• Định lý 1
• Một đa đồ thị liên thông có chu trình Euler mọi đỉnh đều có bậc chẵn
• Điều kiện cần G có CT Euler đỉnh có bậc chẵn
• Thật vậy, CT Euler bắt đầu tại a và tiếp tục là {a,b} Cạnh
{a,b} góp 1 vào deg(a)
• Mỗi lần khi CT đi qua một đỉnh, nó cộng 2 đơn vị cho bậc của đỉnh đó Cuối cùng chu trình kết thúc ở đỉnh a nó cộng thêm 1 vào deg(a).
• Vậy mọi đỉnh đều có bậc chẵn
Trang 4I ĐƯỜNG ĐI VÀ CHU TRÌNH EULER
• Điều kiện đủ G -liên thông và mọi đỉnh có bậc chẵn
Tồn tại chu trình Euler.
• Thật vậy, xây dựng CT đơn bắt đầu từ x0=a tùy ý Chọn tùy ý cạnh {x0, x1} liên thuộc a, tiếp tục xây dựng đ/đi
đơn {x0, x1}, {x1, x2}, , {xn-1, xn} càng dài càng tốt.
• đường đi sẽ kết thúc vì đồ thị có hữu hạn đỉnh
• Nó bắt đầu tại a với cạnh {a,x} và kết thúc tại a với cạnh {y,a} vì mỗi đỉnh có bậc chẵn
• Chu trình nhận được có thể chứa tất cả các cạnh hoặc
có thể không.
Trang 5I ĐƯỜNG ĐI VÀ CHU TRÌNH EULER
Trang 6I ĐƯỜNG ĐI VÀ CHU TRÌNH EULER
• Vì G là liên thông wH và w CT đã bị xóa
• Mỗi đỉnh của H có bậc chẵn Bắt đầu từ w ta xây dựng đường đi đơn trong H như đã làm đối với G Đường này phải kết thúc tại w
• Tạo một CT trong G bằng cách ghép CT trong H và CT ban đầu trong G
• Tiếp tục cho tới khi tất cả các cạnh được sử dụng Nhận được CT Euler.
• Vậy nếu các đỉnh của một đa đồ thị liên thông có bậc
chẵn thi đồ thị có CT Euler đpcm
Trang 7I ĐƯỜNG ĐI VÀ CHU TRÌNH EULER
• Định lý 2. G liên thông có đường đi Euler nhưng không có
• Các đỉnh trung gian đều có bậc chẵn, do mỗi lần đường đi
đến rồi lại rời nó nên thêm 2 đơn vị cho bậc của các đỉnh này
Trang 8I ĐƯỜNG ĐI VÀ CHU TRÌNH EULER
• Điều kiện đủ
• G có đúng hai đỉnh bậc lẻ, chẳng hạn a và b Nối
a với b
• Xét đồ thị G*= G + {(a,b)} tất cả các đỉnh của G* đều có bậc chẵn
• Theo định lý 1, G* có CT Euler
• Xóa cạnh mới vẽ thêm vào ta sẽ nhận được
đường đi Euler trong G
Trang 9I ĐƯỜNG ĐI VÀ CHU TRÌNH EULER
Ví dụ Đồ thị nào có đường đi Euler?
a b a g f e a b
f g c
d c b c d e d
G1 G2 G3
Trang 10
II ĐƯỜNG ĐI VÀ CHU TRINH HAMILTON
• ĐỊNH NGHĨA Đường đi x0, x1, ,xn-1,xn trong đồ thị G=(V,E), V={x0, x1, ,xn-1,xn }, là đường đi Hamilton nếu xi xj với 0 i <j n Chu trinh x0,x1, ,xn-1,
xn,x0 (n>1) trong đồ thị G=(V,E) được gọi là chu
trinh Hamilton nếu x0, x1, ,xn-1,xn là đường đi
Hamilton
a b a b a b g
e c d c d c e f d
Trang 11II.ĐƯỜNG ĐI VÀ CHU TRÌNH HAMINTON
• Định lý Gỉa sử G là một đơn đồ thị liên thông
với n đỉnh trong đó n3, khi đó G có
CTHamilton nếu bậc của mỗi đỉnh ít nhất bằng n/2 (điều kiện đủ)
• Chứng minh (Xem trong giáo trình)
• n= 5 n=6
Trang 12III BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT
• Trọng số đôi khi gọi là độ dài của một cạnh.
• Xác định đường đi ngắn nhất giữa hai đỉnh?
Trang 13III BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT
• 1.Thuật toán tìm đường đi ngắn nhất.
• Đường đi ngắn nhất giữa 2 đỉnh của một
đồ thị có thể tìm được bằng kiểm tra trực tiếp Dùng được khi có ít cạnh.
• Có một số thuật toán khác:
• Thuật toán do E Dijkstra (Hà-lan), 1959
• Ví dụ minh hoạ thuật toán Dijkstra : Tìm
đường đi ngắn nhất giữa 2 đỉnh a và z?
Trang 14a 0
B ước 0 c 1
3 1
Trang 15
5 1
8
10
10
1 2
8
3
B ước 3 c 3
B ước 3 c 2
Trang 168
5 1
2 4
10 2
Trang 17B ước 3 c 6
4
3
6 2
10 8
5 1
Trang 18III BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT
• THUẬT TOÁN DIJKSTRA (Thuật toán gán nhãn)
• S ={ các đỉnh đã gán nhãn}
• Bước 0: S 0 = : Gán nhãn: L 0 (a)=0 và L 0 (v)= ,
v≠ a Các nhãn = độ dài của ĐĐNN từ đỉnh a tới các đỉnh này, đường đi này chỉ chứa đỉnh a
• Bước 1: a -đỉnh có nhãn nhỏ nhất , S 1 =S 0 +{a} Sửa nhãn của các đỉnh vS 1 bằng ĐĐNN từ a đến v, ĐĐ có a là đỉnh trong.
• Cuối bước k-1 ta có S k-1 và các đỉnh vS k-1 đã
được gán: nhãn (v) = độ dài ĐĐNN từ a tới v và
ĐĐ này có các đỉnh trong thuộc S
Trang 19III BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT
Trang 20III BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT
• Chú ý: ĐĐ từ a tới v với các đỉnh trong thuộc S k
gồm hai loại: loại 1 là ĐĐ từ a tới v chỉ chứa các đỉnh trong thuộc S k-1 , loại 2 là ĐĐ từ a tới u ở
bước k-1 tiếp theo là cạnh (u,v) TL ta có
• Lk(a,v) = min { Lk-1(a,v), Lk-1(a,u)+w(u,v)}
Trang 21• Procedure Dijkstra (G: đơn, liên thông có trọng
Trang 22III BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT
đường đi ngắn nhất giữa hai đỉnh trong đồ thị đơn vô hướng liên thông có trọng số.
phép toán (cộng và so sánh) để tìm độ dài của đường đi ngắn nhất giữa hai đỉnh
trong đồ thị đơn vô hướng liên thông có
trọng số.
Trang 23HẾT CHƯƠNG 3