Bài giảng Toán rời rạc 2 - Chương 4: Đồ thị Euler và Đồ thị Hamilton - Ngô Xuân Bách

Học viện Công nghệ Bưu chính Viễn thông  
Khoa Công nghệ thông tin 1  
Toán rời rạc 2  
Đồ thị Euler và Đồ thị Hamilton  
Ngô Xuân Bách  
Nội dung  
Đồ thị Euler  
Đồ thị Hamilton  
2
Khái niệm và ví dụ  
Định nghĩa  
o Chu trình đơn trong đồ thị 퐺 đi qua tất cả các cạnh của nó được  
gọi là chu trình Euler  
o Đường đi đơn trong đồ thị G đi qua tất cả các cạnh của nó được  
gọi là đường đi Euler  
o Đồ thị được gọi là đồ thị Euler nếu nó có chu trình Euler  
o Đồ thị được gọi là đồ thị nửa Euler nếu nó có đường đi Euler  
Ví dụ 1  
(Phương ND, 2013)  
3
Khái niệm đồ thị Euler, đồ thị nửa Euler  
Ví dụ 2  
(Phương ND, 2013)  
4
Điều kiện cần và đủ để đồ thị là Euler  
Với đồ thị vô hướng  
o Đồ thị vô hướng liên thông 퐺 =< 푉, 퐸 > là đồ thị Euler khi và chỉ  
khi mọi đỉnh của 퐺 đều có bậc chẵn  
Với đồ thị có hướng  
o Đồ thị có hướng liên thông yếu 퐺 =< 푉, 퐸 > là đồ thị Euler khi và  
chỉ khi tất cả các đỉnh của nó đều có bán bậc ra bằng bán bậc vào  
(điều này làm cho đồ thị là liên thông mạnh)  
5
Chứng minh đồ thị là Euler  
Với đồ thị vô hướng  
o Kiểm tra đồ thị có liên thông hay không?  
. Kiểm tra 퐷퐹푆(푢) = 푉 hoặc 퐵퐹푆(푢) = 푉?  
o Kiểm tra bậc của tất cả cả đỉnh có phải số chẵn hay không?  
. Với ma trận kề, tổng các phần tử của hàng 푢 (cột 푢) là bậc của đỉnh 푢  
Với đồ thị có hướng  
o Kiểm tra đồ thị có liên thông yếu hay không?  
. Kiểm tra đồ thị vô hướng tương ứng là liên thông, hoặc  
. Kiểm tra nếu tồn tại đỉnh 푢 ∈ 푉 để 퐷퐹푆(푢) = 푉 hoặc 퐵퐹푆 푢 = 푉?  
o Kiểm tra tất cả các đỉnh có thỏa mãn bán bậc ra bằng bán bậc vào  
hay không?  
. Với ma trận kề, bán bậc ra của đỉnh 푢 là 푑푒ꢀ+(푢) là số các số 1 của  
hàng 푢, bán bậc vào của đỉnh 푢 là 푑푒ꢀ−(푢) là số các số 1 của cột 푢  
6
Bài tập 1  
Cho đồ thị vô  
hướng 퐺 được biểu  
diễn dưới dạng ma  
trận kề như hình  
bên. Chứng minh 퐺  
là đồ thị Euler.  
(Phương ND, 2013)  
7
Bài tập 2  
Cho đồ thị có  
hướng 퐺 được biểu  
diễn dưới dạng ma  
trận kề như hình  
bên. Chứng minh 퐺  
là đồ thị Euler.  
(Phương ND, 2013)  
8
Thuật toán tìm chu trình Euler  
Euler-Cycle(푢){  
Bước 1: Khởi tạo  
푠푡푎푐푘 = ∅; //khởi tạo 푠푡푎푐푘 là ∅  
퐶퐸 = ∅; //khởi tạo mảng 퐶퐸 là ∅  
p푢푠ℎ(푠푡푎푐푘, 푢); //đưa đỉnh 푢 vào ngăn xếp  
Bước 2: Lặp  
while(푠푡푎푐푘 ≠ ∅){  
푠 = 품풆풕(푠푡푎푐푘); //lấy đỉnh ở đầu ngăn xếp  
if(퐾푒(푠) ≠ ∅){  
푡=<đỉnh đầu tiên trong 퐾푒(푠)>;  
p푢푠ℎ(푠푡푎푐푘, 푡); //đưa đỉnh 푡 vào ngăn xếp  
퐸 = 퐸\*(푠, 푡)+; //loại bỏ cạnh (푠, 푡)  
}
else{  
푠 = p표푝(푠푡푎푐푘); //loại bỏ s khỏi ngăn xếp  
푠 ⇒ 퐶퐸; //đưa s sang 퐶퐸  
}
}
Bước 3: Trả lại kết quả  
<lật ngược lại các đỉnh trong 퐶퐸 ta được chu trình Euler>;  
}
9
Kiểm nghiệm thuật toán (1/3)  
Áp dụng thuật toán  
tìm chu trình Euler  
cho đồ thị vô  
hướng được biểu  
diễn bằng ma trận  
kề như hình bên.  
10  
Kiểm nghiệm thuật toán (2/3)  
#
Trạng thái Stack  
CE #  
Trạng thái Stack  
CE  
1 1  
∅
∅
∅
∅
∅
∅
∅
∅
∅
1
1
1
14 1,2,3,4,7,5,2,6,5,3,11,4  
1
1
1
1
2 1,2  
15 1,2,3,4,7,5,2,6,5,3,11,4,8  
3 1,2,3  
16 1,2,3,4,7,5,2,6,5,3,11,4,8,7  
17 1,2,3,4,7,5,2,6,5,3,11,4,8,7,6  
18 1,2,3,4,7,5,2,6,5,3,11,4,8,7  
19 1,2,3,4,7,5,2,6,5,3,11,4,8  
4 1,2,3,4  
5 1,2,3,4,7  
1,6  
6 1,2,3,4,7,5  
7 1,2,3,4,7,5,2  
8 1,2,3,4,7,5,2,6  
9 1,2,3,4,7,5,2,6,1  
10 1,2,3,4,7,5,2,6  
11 1,2,3,4,7,5,2,6,5  
12 1,2,3,4,7,5,2,6,5,3  
1,6,7  
1,6,7  
1,6,7  
1,6,7  
1,6,7,8  
1,6,7,8  
1,6,7,8  
20 1,2,3,4,7,5,2,6,5,3,11,4,8,9  
21 1,2,3,4,7,5,2,6,5,3,11,4,8,9,10  
22 1,2,3,4,7,5,2,6,5,3,11,4,8,9,10,8  
23 1,2,3,4,7,5,2,6,5,3,11,4,8,9,10  
24 1,2,3,4,7,5,2,6,5,3,11,4,8,9,10,11  
25 1,2,3,4,7,5,2,6,5,3,11,4,8,9,10,11,12  
13 1,2,3,4,7,5,2,6,5,3,11 1  
26 1,2,3,4,7,5,2,6,5,3,11,4,8,9,10,11,12,9 1,6,7,8  
11  
Kiểm nghiệm thuật toán (3/3)  
Bước  
27  
Trạng thái Stack  
1,2,3,4,7,5,2,6,5,3,11,4,8,9,10,11,12,9,13  
1,2,3,4,7,5,2,6,5,3,11,4,8,9,10,11,12,9,13,12  
1,2,3,4,7,5,2,6,5,3,11,4,8,9,10,11,12,9,13,12,10  
CE  
1,6,7,8  
1,6,7,8  
1,6,7,8  
28  
29  
Đưa lần lượt các đỉnh trong 푆푡푎푐푘 sang 퐶퐸 cho tới khi 푆푡푎푐푘 = ∅  
퐶퐸 = 1,6,7,8,10,12,13,9,12,11,10,9,8,4,11,3,5,6,2,5,7,4,3,2,1  
30-…  
Lật ngược lại các đỉnh trong 퐶퐸 ta được chu trình Euler  
1-2-3-4-7-5-2-6-5-3-11-4-8-9-10-11-12-9-13-12-10-8-7-6-1  
12  
Điều kiện cần và đủ để đồ thị là nửa Euler  
Với đồ thị vô hướng  
o Đồ thị vô hướng liên thông 퐺 =< 푉, 퐸 > là đồ thị nửa Euler khi và  
chỉ khi 퐺 có 0 hoặc 2 đỉnh bậc lẻ  
. 퐺 có 2 đỉnh bậc lẻ: đường đi Euler xuất phát tại một đỉnh bậc lẻ và kết  
thúc tại đỉnh bậc lẻ còn lại  
. 퐺 có 0 đỉnh bậc lẻ: G chính là đồ thị Euler  
Với đồ thị có hướng  
o Đồ thị có hướng liên thông yếu 퐺 =< 푉, 퐸 > là đồ thị nửa Euler  
khi và chỉ khi:  
. Tồn tại đúng hai đỉnh 푢, 푣 ∈ 푉 sao cho  
푑푒ꢀ+(푢) − 푑푒ꢀ−(푢) = 푑푒ꢀ−(푣) − 푑푒ꢀ+(푣) = 1  
. Các đỉnh 푠 ≠ 푢, 푠 ≠ 푣 còn lại có 푑푒ꢀ+(푠) = 푑푒ꢀ−(푠)  
. Đường đi Euler sẽ xuất phát tại đỉnh 푢 và kết thúc tại đỉnh 푣  
13  
Chứng minh đồ thị là nửa Euler  
Với đồ thị vô hướng  
o Chứng tỏ đồ thị đã cho liên thông  
. Sử dụng hai thủ tục 퐷퐹푆(푢) hoặc 퐵퐹푆(푢)  
o Có 0 hoặc 2 đỉnh bậc lẻ  
. Sử dụng tính chất của các phương pháp biểu diễn đồ thị để tìm ra bậc  
của mỗi đỉnh  
Với đồ thị có hướng  
o Chứng tỏ đồ thị đã cho liên thông yếu  
. Sử dụng hai thủ tục 퐷퐹푆(푢) hoặc 퐵퐹푆(푢)  
o Có hai đỉnh 푢, 푣 ∈ 푉 thỏa mãn  
푑푒ꢀ+(푢) − 푑푒ꢀ−(푢) = 푑푒ꢀ−(푣) − 푑푒ꢀ+(푣) = 1  
o Các đỉnh 푠 ≠ 푢, 푠 ≠ 푣 còn lại có 푑푒ꢀ+(푠) = 푑푒ꢀ−(푠)  
14  
Bài tập 3  
Cho đồ thị vô hướng  
퐺 =< 푉, 퐸 > được  
biểu diễn bằng ma  
trận kề như hình  
bênh. Chứng minh  
rằng 퐺 là đồ thị nửa  
Euler?  
(Phương ND, 2013)  
15  
Bài tập 4  
Cho đồ thị có hướng  
퐺 =< 푉, 퐸 > được  
biểu diễn bằng ma  
trận kề như hình  
bênh. Chứng minh  
rằng 퐺 là đồ thị nửa  
Euler?  
(Phương ND, 2013)  
16  
Thuật toán tìm đường đi Euler  
Thuật toán tìm đường đi Euler gần giống hệt thuật toán  
tìm chu trình Euler  
Tìm chu trình Euler  
o Đầu vào thuật toán là đỉnh 푢 ∈ 푉 bất kỳ  
Tìm đường đi Euler  
o Đồ thị vô hướng  
. Đầu vào thuật toán là đỉnh 푢 ∈ 푉 có bậc lẻ đầu tiên (trường hợp có 0  
bậc lẻ thì dùng đỉnh bất kỳ)  
o Đồ thị có hướng  
. Đầu vào thuật toán là đỉnh 푢 ∈ 푉 thỏa mãn 푑푒ꢀ+(푢) − 푑푒ꢀ−(푢) = 1  
17  
Kiểm nghiệm thuật toán  
Áp dụng thuật toán  
tìm đường đi Euler  
cho đồ thị vô hướng,  
nửa Euler sau?  
18  
Nội dung  
Đồ thị Euler  
Đồ thị Hamilton  
19  
Khái niệm và ví dụ  
Định nghĩa  
o Đường đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần  
được gọi là đường đi Hamilton  
o Chu trình bắt đầu tại một đỉnh 푣 nào đó, qua tất cả các đỉnh còn  
lại mỗi đỉnh đúng một lần, sau đó quay trở lại 푣, được gọi là chu  
trình Hamilton  
o Đồ thị được gọi là đồ thị Hamilton nếu có chu trình Hamilton  
o Đồ thị được gọi là đồ thị nửa Hamilton nếu có đường đi Hamilton  
Ví dụ  
20  
Tải về để xem bản đầy đủ
pdf 28 trang myanh 19680 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Toán rời rạc 2 - Chương 4: Đồ thị Euler và Đồ thị Hamilton - Ngô Xuân Bách", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_toan_roi_rac_2_chuong_4_do_thi_euler_va_do_thi_ham.pdf