Trong những năm 70 của thế kỷ 20, thế giới được chứng kiến sự pháttriển hết sức nhanh chóng và rộng lớn của lý thuyết đồ thị, trong số đó có một số lượng đáng kể các công trình nghiên cứ
Trang 2Tôi xin cam đoan những kết quả nêu trong luận văn là những kết quả tìm hiểu,nghiên cứu của tôi dưới sự hướng dẫn của GS.TS: Đặng Quang Á.
Mọi trích dẫn sử dụng trong báo cáo này đều được ghi rõ nguồn tài liệu thamkhảo theo đúng quy định
Tác giả
Nguyễn Văn Thái
Trang 3Trước tiên, tôi xin được gửi lời cảm ơn đến tất cả quý thầy cô đã giảngdạy trong chương trình đào tạo Cao học chuyên ngành Khoa học máy tính K11
do trường Đại học Công nghệ thông tin và truyền thông – Đại học Thái Nguyên
tổ chức đào tạo, những người đã truyền đạt cho tôi những kiến thức hữu ích làm
cơ sở cho tôi thực hiện tốt luận văn này
Tác giả xin chân thành cảm ơn các thầy cô, những người đã tận tìnhhướng dẫn và truyền đạt những kinh nghiệm quý báu trong học tập và nghiêncứu và tận tình giúp đỡ tôi
Đặc biệt tôi xin bày tỏ lòng cảm ơn xâu sắc tới GS.TS Đặng Quang Á,người đã tận tình hướng dẫn, quan tâm, đóng góp ý kiến cho tôi trong xuất thờigian thực hiện luận văn Mặc dù trong quá trình thực hiện luận văn có giai đoạnkhông được thuận lợi nhưng những gì Thầy đã hướng dẫn, chỉ bảo đã cho tôinhiều kinh nghiệm trong thời gian thực hiện luận văn
Sau cùng tôi xin gửi lời biết ơn sâu sắc đến gia đình đã luôn tạo điều kiệntốt nhất cho tôi trong suốt quá trình học cũng như thực hiện luận văn
Do thời gian có hạn và kinh nghiệm nghiên cứu khoa học chưa nhiều nênluận văn còn nhiều thiếu sót, rất mong nhận được ý kiến góp ý của Thầy/Cô vàcác anh chị học viên
Thái Nguyên, tháng 9 năm 2014
Nguyễn Văn Thái
Trang 4deg(v), degG(v) Bậc của đỉnh v của đồ thị G
δ, δ(G) Bậc nhỏ nhất của các đỉnh trong G
W(G) Số thành phần liên thông của G
k-liên thông Đồ thị có chỉ số liên thông bằng k
k(G) Chỉ số liên thông của đồ thị G
NTM Nondeterministic Turing Machine
K1, K2, K3, K4, K5 Các đồ thị đặc biệt K1, K2, K3, K4, K5
Hợp của s đồ thị đầy đủ lạ nhau
Hợp của s đồ thị đầy đủ lạ nhau Kn
Trang 5Trang
Trang 6MỞ ĐẦU
1 Đặt vấn đề:
Lý thuyết đồ thị là một lĩnh vực đã được nghiên cứu từ những năm đầucủa thế kỷ 18 bởi nhà toán học Leonhard Euler người Thụy sĩ Đồ thị được sửdụng để giải nhiều bài toán trong nhiều lĩnh vực khác nhau, trong tin học làmột trường hợp cụ thể
Trong những năm 70 của thế kỷ 20, thế giới được chứng kiến sự pháttriển hết sức nhanh chóng và rộng lớn của lý thuyết đồ thị, trong số đó có một
số lượng đáng kể các công trình nghiên cứu cấu trúc của các chu trình trong
đồ thị, đặc biệt là chu trình Hamilton và còn nhiều vấn đề mở
Nghiên cứu về cấu trúc chu trình trong đồ thị giúp chúng ta giải quyếttốt các bài toán tối ưu trong đời sống Chẳng hạn, trong lĩnh vực chế tạo robotthám hiểm, chuyển gửi tín hiệu hình ảnh qua vệ tinh, bài toán phân tích hệthống tương tác và tiện ích các website,
Trong số các cấu trúc đồ thị thì chu trình Hamilton đóng vai trò đặc biệtquan trọng Đó là chu trình đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúngmột lần Bài toán về chu trình Hamilton là bài toán xác định xem liệu đồ thị
có chứa chu trình Hamilton không và tìm ra các chu trình đó Bài toán này đãđược chứng minh là NP-C (NP- đầy đủ) Chính vì thế không tồn tại các thuậttoán đa thức giải nó, và để giải quyết bài toán này nhiều thuật toán gần đúng
đã được nghiên cứu
Một sự mở rộng của chu trình Hamilton là chu trình trội (Dominatingcycle) Bài toán này cũng đã được chứng minh là NP-C
Trang 7Việc tìm hiểu về các chu trình Hamilton và chu trình trội, các dấu hiệunhận biết chúng cùng thuật toán xác định, cải tiến và phát triển chúng là việclàm có ý nghĩa khoa học và thực tiễn Đây chính là mục đích của luận văn này.
2 Mục tiêu của luận văn:
Đối tượng nghiên cứu của luận văn là các vấn đề về cấu trúc chu trìnhliên quan đến chu trình Hamilton và chu trình trội trong đồ thị
3 Phạm vi nghiên cứu
Luận văn tập trung nghiên cứu các kiến thức có liên quan, các cơ sở lýthuyết như: Lý thuyết về đồ thị và lý thuyết các bài toán NP-C, chu trìnhHamilton và chu trình trội
4 Nhiệm vụ nghiên cứu
- Tìm hiểu những kiến thức tổng quan về đồ thị và lý thuyết các bàitoán NP-C
- Tìm hiểu về đồ thị Hamilton và các mở rộng
- Tìm hiểu các thuật toán tìm chu trình Hamilton
- Xây dựng thuật toán đa thức xác định sự tồn tại của chu trình trội trên
Trang 8Phần đầu tìm hiểu về chu trình Hamilton, một số thuật toán xác địnhchu trình Hamilton.
Phần cuối tìm hiểu về chu trình Hamilton tối đại, cách xây dựng đồ thị
Hamilton tối đại n đỉnh.
Chương III: Chu trình trội
Phần đầu trình bày những hiểu biết về chu trình trội trong đồ thị vô
hướng, chứng minh bài toán xác định có tồn tại chu trình trội trong đồ thị G
cho trước là NP-C
Phần sau trình trình bày thuật toán đa thức xác định sự tồn tại của chutrình trội trên đồ thị vô hướng trong lớp đồ thị 2-liên thông có δ(G) ≥ n/3 Tìm
hiểu về lớp đồ thị 2-liên thông Một số hình ảnh thể hiện trên chương trình demo
Phần kết luận: Tóm tắt các kết quả đã đạt được của luận văn.
Trang 9Chương I: MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG LÝ THUYẾT ĐỒ
THỊ VÀ LÝ THUYẾT CÁC BÀI TOÁN NP-C 1.1 Lý thuyết đồ thị
Trong toán học và tin học, đồ thị là đối tượng nghiên cứu cơ bản của lýthuyết đồ thị Một cách không chính thức, đồ thị là một tập các đối tượng gọi
là đỉnh nối với nhau bởi các cạnh Thông thường, đồ thị được vẽ dưới dạngmột tập các điểm (đỉnh, nút) nối với nhau bởi các đoạn thẳng (cạnh) Tùy theoứng dụng mà một số cạnh có thể có hướng Chúng ta phân biệt các loại đồ thịkhác nhau bởi kiểu và số lượng cạnh nối hai đỉnh nào đó của đồ thị
Trong phạm vi của luận văn chỉ xét đến đơn đồ thị hữu hạn, vô hướng
và gọi tắt là đồ thị Các kiến thức trong mục này tham khảo từ [2], [3]
1.1.1 Các thuật ngữ cơ bản
1.1.1.1 Một số khái niệm
Định nghĩa 1.1 Đơn đồ thị vô hướng G=(V, E) bao gồm V là tập các
đỉnh, và E là tập các cặp không có thứ tự gồm hai phần tử khác nhau của V
gọi là các cạnh
Đồ thị vô hướng G là một cặp G = (V,E)
Trong đó: V ≠φ là tập hợp các phần tử nào đó gọi là đỉnh của đồ thị.
E: Là tập các cặp (u,v) nào đó (gọi là cạnh của đồ thị) với u,v ∈ V, (u,v) ∈ E ⇒ (v,u) ∈ E và coi (u,v) ≡ (v,u);
Nếu e = (u,v) là một cạnh của đồ thị G thì u, v được coi là các đỉnh đầu mút của cạnh e hay các đỉnh liên thuộc với e, hay có thể nói u,v là kề nhau
hay láng giềng của nhau
Định nghĩa 1.2 Đồ thị G gọi là vô hướng nếu ∀ u,v ∈ V:(u,v)≡(v,u)∈ E
Trang 10Hình 1.1 Đồ thị vô hướng
Định nghĩa 1.3 Đồ thị G gọi là có hướng nếu ∃ u,v∈ V: (u,v) ≠ (v,u)
Định nghĩa 1.4 Đơn đồ thị vô hướng G = (V,E) bao gồm V là tập các
đỉnh, và E là tập các cặp không có thứ tự gồm hai phần tử khác nhau của V
gọi là các cạnh
+ Đồ thị G = (V,E) với đỉnh v ∈ V, e = (u,v) ∈ E
Khi đó: u,v là hai đỉnh đầu, cuối của cạnh e; e _ cạnh liên thuộc u,v
Định nghĩa 1.5 Hai đỉnh u và v trong đồ thị vô hướng được gọi là liền
kề (hay láng giềng) nếu (u,v) là một cạnh của đồ thị G Nếu e=(u,v) thì e gọi
là cạnh liên thuộc với hai đỉnh u và v, hoặc cũng nói là cạnh e là nối đỉnh u và đỉnh v, đồng thời các đỉnh u và v sẽ được gọi là các đỉnh đầu mút của cạnh
(u,v)
Định nghĩa 1.6 Bậc của đỉnh u ∈ V kí hiệu deg(u) trong đồ thị vô hướng là số cạnh liên thuộc với u (hay tập các láng giềng của u), riêng khuyên
tại một đỉnh được tính hai lần cho bậc của nó
Đỉnh có bậc bằng không gọi là đỉnh cô lập (Không kề với bất kỳ đỉnh
nào) Đỉnh v gọi là đỉnh treo nếu deg(v)=1.
Hình 1.2 Đồ thị vô hướng và các bậc của đỉnh
Trang 11deg (i) =2 deg(j) = 2 deg(k) = 0
Định lý 1.1 Ký hiệu E là số cạnh của đồ thị G = (V,E) khi đó
) (
deg(
) ( deg
U v O
v V
Định nghĩa 1.7 (Đồ thị đầy đủ) Đồ thị đầy đủ n đỉnh, ký hiệu là K n là
đơn đồ thị mà hai đỉnh phân biệt bất kỳ của nó luôn liền kề Như vậy, K n có
Trang 12Định nghĩa 1.10 (Đồ thị hai phía): Đồ thị G = (V,E) là đồ thị hai phía
(hay đồ thị phân đôi) nếu tập các đỉnh V có thể phân thành hai tập con khác rỗng rời nhau X và Y sao cho mỗi cạnh của đồ thị được kết nối từ một đỉnh thuộc X với một đỉnh thuộc Y:
Nói dưới dạng toán học:
- Có thể tìm được X, Y ∈ V sao cho
- Và mọi
Trang 1311 12
Định nghĩa 1.11 [5]
Cho trước hai đồ thị G 1 = (V 1 ,E 1 ) và G 2 = (V 2 ,E 2 ) Ta nói G 1 và G 2 là
đẳng cấu với nhau nếu có một song ánh f: V 1 V 2 sao cho hai đỉnh u và v kề nhau trong G 1 khi và chỉ khi f(u) kề với f(v) trong G 2 (hay nói cách khác (u,v)
∈ E1 khi và chỉ khi (f(u),f(v)) ∈ E 2)
Ví dụ: Cho hai đồ thị, hỏi chứng có đẳng cấu với nhau hay không?
Hình 1.7 Đồ thị G1 đẳng cấu với G2
Theo ví dụ ta thấy, nếu chọn phép ánh xạ biến đỉnh u của đồ thị G 1
thành f(u+10) của đồ thị G 2 (đỉnh 1 biến thành đỉnh 11, đinh 2 thành đỉnh
Trang 14ae
12 , đỉnh 10 thành đỉnh 20), ta thấy đây là phép ánh xạ mà với hai đỉnh (u,v)
∈ E 1 thì (10+u, 10+v) ∈ E 2 Vậy hai đồ thị G 1 và G 2 là đẳng cấu với nhau
1.1.1.4 Các đồ thị mới từ đồ thị cũ
Định nghĩa 1.12 Đồ thị con của đồ thị G = (V,E) là đồ thị G’ = (V’,E’)
trong đó V’ ⊆ V và E’ ⊆ E Ký hiệu G’ ⊆ G
Định nghĩa 1.14 Cho đồ thị G = (V,E) và G’ = (V’,E’) Khi đó G và G’
được gọi là lạ nhau khi V ∩ V’ = ∅.
Định nghĩa 1.15 Hợp của hai đồ thị lạ nhau G = (V,E) và G’ = (V’,E’)
trong đó V ∩ V’= ∅ là đồ thị thu được khi ta nối tất cả các đỉnh của G với tất
cả các đỉnh của G’ (ký hiệu G*G’).
G= G 1 ∪ G 2
G 2
G 1
Trang 151 3 5
64
2
1.1.2 Đường đi, chu trình, đồ thị liên thông
Xét đơn đồ thị vô hướng G = (V,E)
1.1.2.1 Đường đi
Định nghĩa 1.16 Một đường đi độ dài n từ đỉnh u tới tới đỉnh v, trong
đó n là số nguyên dương, trên đồ thị vô hướng G=(V,E) là một dãy các đỉnh
x
v x u x
i i
n
Trong đó: Đỉnh u gọi là đỉnh đầu, đỉnh v gọi là đỉnh cuối Đường đi trên
gọi là đơn nếu không có cạnh nào lặp lại Số cạnh của đường đi được gọi là
độ dài của đường đi đã cho
Ví dụ: Đường đi có độ dài 4 đi từ đỉnh 1 đến đỉnh 6
Hình 1.10 Đường đi trên đồ thị có độ dài 41.1.2.2 Chu trình
Định nghĩa 1.17 Chu trình là một đường đi có đỉnh đầu và đỉnh cuối
trùng nhau
Định nghĩa 1.18 Chu trình đơn: là một chu trình mà đường đi của nó
không có cạnh nào lặp lại
Định nghĩa 1.19 Trong một đồ thị G, chu trình có độ dài lớn nhất gọi
là chu trình dài nhất
Trang 16G G’
1.1.2.3 Đồ thị liên thông – chỉ số liên thông
Định nghĩa 1.20 (Đồ thị liên thông) Một đồ thị vô hướng được gọi là
liên thông nếu có đường đi giữa mọi cặp đỉnh phân biệt của đồ thị
- Đồ thị vô hướng G = (V,E) được gọi là liên thông nếu với bất kỳ hai đỉnh u,v E luôn tìm được đường đi từ đỉnh u tới đỉnh v.
Hình 1.11 Đồ thị G liên thông, đồ thị G’ không liên thông
Định lý 1.2 Giữa mọi cặp đỉnh phân biệt của một đồ thị vô hướng liên
thông luôn có đường đi đơn
Định nghĩa 1.21 (Thành phần liên thông)
Một đồ thị G = (V,E) không liên thông bao gồm các đồ thị con liên thông với nhau và được gọi là thành phần liên thông của G Số thành phần liên thông của G được ký hiệu w(G).
Hình 1.12 Đồ thị liên thông G và đồ thị H gồm 3 thành phần liên thông
H1 , H2, H3
Định nghĩa 1.22[ 5 ] [19] ( Đồ thị k-liên thông)
Trang 17Cho trước đồ thị G và một số tự nhiên k > 0 G là đồ thị k-liên thông nếu G là đồ thị liên thông và nếu như bỏ đi một số t < k đỉnh tùy ý và các cạnh
liên thuộc với các đỉnh đó ta vẫn thu được đồ thị liên thông
Nhận xét:
- Mọi đồ thị liên thông đều là 1-liên thông
- Đồ thị đầy đủ K n là (n-1)-liên thông
- Một đồ thị là k-liên thông thì cũng là h-liên thông với mọi 0 < h < k
Hình 1.13 Đồ thị 4-liên thông
Ví dụ: Đồ thị trong hình 1.12 là đồ thị 4-liên thông vì chỉ khi bỏ đi tới
4 đỉnh bất kì của đồ thị và các cạnh liên thuộc với chúng ta mới thu được đồthị không liên thông Còn khi bỏ đi 1 hoặc 2 hoặc 3 đỉnh tùy ý thì đồ thị vẫncòn liên thông
Định nghĩa 1.23.[ 5 ] ( Chỉ số liên thông)
Trong đồ thị liên thông G, số đỉnh tối thiểu có thể vứt bỏ để G trở nên không còn liên thông nữa gọi là chỉ số liên thông của G Đồ thị có chỉ số liên thông bằng k được gọi là k-liên thông Chỉ số liên thông của G được ký hiệu
k(G)
Trang 18Hình 1.14 Đồ thị có k(G) = 2 và k(H) = 3 1.1.3 Biểu diễn đồ thị trên máy tính
Để lưu trữ đồ thị và thực hiện các thuật toán khác nhau với đồ thị trênmáy tính cần phải tìm những cấu trúc dữ liệu thích hợp để mô tả đồ thị Việcchọn cấu trúc dữ liệu nào để biểu diễn đồ thị có tác động rất lớn đến hiệu quảcủa thuật toán Vì vậy, việc chọn lựa cấu trúc dữ liệu để biểu diễn đồ thị phụthuộc vào từng tình huống cụ thể (bài toán và thuật toán cụ thể)
Tại sao phải biểu diễn đồ thị trên máy tính?
- Lý thuyết đồ thị ngày càng được ứng dụng rộng rãi
- Để xây dựng được các ứng dụng của đồ thị trên máy tính thì cần phảitìm cách biểu diễn đồ thị trên máy tính thích hợp
- Máy tính không thể hiểu được các đồ thị dưới dạng hình vẽ thôngthường
Tiêu chuẩn để lựa chọn cách thức biểu diễn đồ thị trên máy tính?
- Cấu trúc dữ liệu phải đơn giản, phù hợp với từng bài toán ứng dụng
- Dễ biểu diễn, dễ cài đặt các ứng dụng trên đó
Dưới đây ta sẽ xét một số phương pháp cơ bản được sử dụng để biểudiễn đồ thị trên máy tính, đồng thời cũng phân tích một cách ngắn gọn những
ưu điểm cũng như những nhược điểm của chúng
Trang 19Ma trận kề của đơn đồ thị G là một ma trận vuông A[n.n] Với các phần
tử được xác định theo quy tắc như sau:
với i,j = 1,2, ,n là các đỉnh của đồ thị
Quy ước A[i,i] = 0 với ∀ i;
Ví dụ: Cho đồ thị vô hướng như hình vẽ
Ưu điểm của ma trận kề:
- Đơn giản, trực quan, dễ cài đặt trên máy tính
- Đễ kiểm tra xem hai đỉnh (u,v) của đồ thị có kề nhau hay không.
Nhược điểm của ma trận liền kề:
Trang 20Bất kể số cạnh của đồ thị là nhiều hay ít, ma trận liền kề luôn luôn đòi
hỏi n2 ô nhớ để lưu các phần tử ma trận, điều đó gây lãng phí bộ nhớ dẫn tớiviệc không thể biểu diễn được đồ thị với số đỉnh lớn
Ma trận trọng số:
Định nghĩa 1.25 Đồ thị có trọng số là đồ thị ứng với mỗi cạnh (u,v) ∈
E gán một giá trị C(u,v) nào đó gọi là trọng số của (u,v)
Ma trận trọng số là ma trận vuông A[n,n] trong đó giá trị được xác định
Dùng trong trường hợp đồ thị có ít cạnh, số cạnh m < 6n, với n là số
Trang 21Mảng Dau sẽ lưu các đỉnh đầu của các cạnh
Mảng Cuoi sẽ lưu đỉnh cuối của các cạnh
Ví dụ:
Dau
11122233444455Hình 1.17 Đồ thị và danh sách cạnh1.1.3.3 Biểu diễn đồ thị bằng danh sách kề
Cho đồ thị G = (V,E) có n đỉnh Đồ thị G có thể được biểu diễn bằng n danh sách liên kết Với mỗi đỉnh u, tạo ra một danh sách các đỉnh kề với đỉnh u.
Ví dụ với đồ thị sau:
1 2 3 4 5
Trang 221.2.1 Khái niệm các loại thời gian tính
Thời gian tính tốt nhất: là thời gian tính tối thiểu cần thiết để thực hiện
thuật toán với mọi bộ dữ liệu đầu vào kích thước n.
Thời gian tính tồi nhất: là thời gian tính tối đa cần thiết để thực hiện
thuật toán với mọi bộ dữ liệu đầu vào có kích thước n.
Thời gian tính trung bình: là thời gian tính cần thiết để thực hiện thuật
toán trên một tập hữu hạn các bộ dữ liệu đầu vào có kích thước n Thời gian
tính trung bình được tính theo công thức sau:
Thời gian tính trung bình = (Tổng thời gian tính tất cả các bộ dữ liệu cóthể)/ Số bộ dữ liệu
Định nghĩa 1.26 Bài toán quyết định là bài toán mà đầu ra chỉ có thể là
‘yes’ hoặc ‘no’ (đúng/sai, 0/1).
Đối với một bài toán quyết định, có những bộ dữ liệu vào cho ra câu trả
lời (đầu ra) là ‘yes’, chúng ta gọi đây là bộ dữ liệu ‘yes’, nhưng cũng có những bộ dữ liệu vào cho ra câu trả lời là ‘no’, chúng ta gọi những bộ dữ liệu này là bộ dữ liệu ‘no’.
1.2.2 Khái niệm phép quy dẫn đa thức
Định nghĩa 1.27 Giả sử chúng ta có hai bài toán quyết định A và B.
Chúng ta nói A có thể quy dẫn về B nếu như sau một thời gian tính đa thức nếu tồn tại một thuật toán thời gian đa thức R cho phép biến đổi bộ dữ liệu x của A thành bộ dữ liệu vào R(x) của B sao cho x là bộ dữ liệu yes của A khi và chỉ khi R(x) là dữ liệu vào yes của B.
Nếu A quy dẫn về được B sau thời gian đa thức và B có thể giải được sau thời gian đa thức thì A cũng có thể giải được sau thời gian đa thức.
Trang 231.2.3 Lớp bài toán P
Định nghĩa 1.28 Một máy Turing M được gọi là có độ phức tạp thời
gian T(n) (hoặc thời gian chạy T(n)) nếu mỗi khi M được cho một nguyên liệu đầu vào w có độ dài n thì M sẽ dừng sau khi thực hiện tối đa T(n) bước chuyển, bất kể M có kiểm nhận w hay không
Chúng ta chủ yếu quan tâm khi T(n) là một hàm đa thức.
Một ngôn ngữ L thuộc lớp P nếu có một hàm đa thức T(n) sao cho L =
L(M) với một máy Turing đơn định M nào đó có độ phức tạp thời gian T(n)
Ví dụ: Thuật toán Kruskal tìm cây khung bé nhất của một đồ thị có m
nút và e cạnh với thời gian O(m+ elog2e) (trên máy tính thông thường) Thời
gian thực hiện bởi máy Turing cũng cùng bậc như vậy
1.2.3 Lớp bài toán NP.
Định nghĩa 1.29: Ngôn ngữ L thuộc lớp NP (Nondeterministic
Polynomial) nếu ∃ máy Turing không đơn định M và một độ phức tạp thời
gian T(n) sao cho L=L(M) và khi M được cho một nguyên liệu có độ dài n thì
nó sẽ kiểm nhận sau không quá T(n) bước chuyển.
Nhận xét: Vì mỗi máy Turing đơn định đều là máy Turing không đơn
định không bao giờ có lựa chọn bước chuyển nên P ⊆ NP Tuy nhiên, dường
như NP cũng chứa nhiều bài toán không thuộc lớp P Một câu hỏi toán học sâu sắc còn bỏ ngỏ là liệu P = NP hay không, nghĩa là mọi thứ có thể thực hiện được bởi một NTM (Nondeterministic Turing Machine) thật sự trong thời gian đa thức có thể được thực hiện bởi một DTM (Deterministic Turing
Machines) trong một thời gian đa thức hay không, dù có thể là một hàm đathức bậc cao hơn
Trang 241.2.4 Lớp bài toán NP-đầy đủ (NP-Complete).
Định nghĩa 1.30 Ta nói L là bài toán thuộc loại NP-C nếu các khẳng
định sau là đúng:
1) L thuộc NP
2) Với mọi ngôn ngữ L’ ∈ NP có một phép thu thời gian đa thức L’ về L
Định lý 1.3 Nếu bài toán P 1 là NP-C, P 2 là NP và có một phép thu thời gian đa thức từ P 1 về P 2 thì P 2 cũng là NP-C.
Chứng minh: Ta cần chứng tỏ rằng mỗi ngôn ngữ L thuộc NP đều thu
được P 2 trong thời gian đa thức Khi đó theo định nghĩa P 2 sẽ thuộc NP-C.
Thật vậy, vì P 1 là NP-C nên có một phép thu đa thức L về P 1 Giả sử
thời gian của phép thu này là P(n) Vì thế một chuỗi W∈L có chiều dài n được biến đổi thành một chuối x ∈ P1 có chiều dài tối đa là P(n) Ta cũng biết rằng có một phép thu đa thức từ P1 về P2 Giả sử thời gian của phép thu này là
q(m) Thế thì phép thu này biến đổi chuỗi x ∈ P1 về chuỗi y nào đó thuộc P2
với thời gian tối đa là q(p(n)) Vì thế phép biến đổi W ∈ L về y ∈ P2 mất thời
gian tối đa là p(n) + q(p(n)), đây cũng là một đa thức Như vậy, ta kết luận rằng L có thể thu về P2 trong thời gian đa thức
Định lý 1.4 Nếu có một bài toán nào đó là NP-C mà lại thuộc lớp P thì
ta có P = NP.
Chứng minh: Giả sử có bài toán Q ∈ NP-C và Q ∈ P Thế thì mọi ngôn ngữ L trong NP đều thu được về Q trong thời gian đa thức Nếu Q ∈ P thì L ∈ P Như vậy NP ∈ P Kết hợp với điều hiển nhên là P ∈ NP ta được
P = NP.
Nhận xét: Chúng ta vẫn tin tưởng rằng nhiều bài toán thuộc lớp NP
nhưng không thuộc P nên chúng ta sẽ xem việc chứng minh một bài toán là
Trang 25NP-C có giá trị ngang với việc chứng minh rằng nó không thể giải được trong
thời gian đa thức, và vì thế không có lời giải đúng nào bằng máy tính (và ta sẽchỉ đi tìm lời giải gần đúng)
Trang 26a b
c
d
Chương II: CHU TRÌNH HAMILTON
Năm 1857, nhà toán học người Ailen là Hamilton(1805-1865) đưa ratrò chơi “đi vòng quanh thế giới” như sau:
Cho một hình thập nhị diện đều (đa diện đều có 12 mặt, 20 đỉnh và 30cạnh), mỗi đỉnh của hình mang tên một thành phố nổi tiếng, mỗi cạnh củahình (nối hai đỉnh) là đường đi lại giữa hai thành phố tương ứng Xuất phát từmột thành phố, hãy tìm đường đi thăm tất cả các thành phố khác, mỗi thànhphố chỉ một lần, rồi trở về chỗ cũ
Trò chơi trên dẫn tới việc khảo sát một lớp đồ thị đặc biệt, đó
là đồ thị Hamilton
2.1 Chu trình Hamilton: Định nghĩa, tính chất và các điều kiện đủ
2.1.1 Một số khái niệm
Định nghĩa 2.1 Trong đồ thị G = (V,E) đườ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 điHamilton
Ví dụ: Đồ thị có đường đi Hamilton là a → b → c → d
Hình 2.1 Đồ thị có đường đi Hamilton, không có chu trình Hamilton
Định nghĩa 2.2 Chu trình bắt đầu từ một đỉnh v nào đó
qua tất cả các đỉnh còn lại mỗi đỉnh đúng một lần rồi quay trở về
v được gọi là chu trình Hamilton.
Trang 27Định nghĩa 2.3 Đồ thị G được gọi là đồ thị Hamilton nếu
nó chứa chu trình Hamilton và gọi là đồ thị nửa Hamilton nếu nó
có đường đi Hamilton
Rõ ràng đồ thị Hamilton là nửa Hamilton, nhưng điều ngượclại không còn đúng
Question: G có chu trình Hamilton hay không?
Bài toán HC đã được Karp (1972, [15]) chứng minh là bàitoán NP-C (NP-đầy đủ), chính vì thế mà không tồn tại thuậttoán đa thức xác định sự tồn tại của chu trình Hamilton trong
đồ thị cho trước Cho đến nay chúng ta vẫn chưa tìm ra điềukiện cần và đủ để kiểm tra xem một đồ thị cho trước có làHamilton hay không, và vấn đề này vẫn còn là một vấn đề
Trang 28Định lý 2.1 [16]: Giả sử G là đồ thị Hamilton Khi đó:
a) Mọi đỉnh của đồ thị G phải có bậc không nhỏ hơn 2
b) Nếu một đỉnh có bậc bằng 2 thì hai cạnh của nó phải
nằm trên bất kỳ một chu trình Hamilton của G
c) Nếu một đỉnh có bậc lớn hơn 2 và hai cạnh liền kề của
nó nằm trên một chu trình Hamilton thì các cạnh còn lại của
nó không nằm trên chu trình Hamilton đó
Một số điều kiện đủ về sự tồn tại đường đi Hamilton và chu trình Hamilton
Định lý 2.2 (Định lý Rédei) [2] Đồ thị đầy đủ vô hướng K n với n ≥ 3 là
đồ thị Hamilton
Chứng minh: Chúng ta có thể xây dựng chu trình Hamilton trong K n
xuất phát từ bất kỳ đỉnh nào Một chu trình như thế có thể xây dựng bằngcách ghé thăm các đỉnh theo một thứ tự tùy chọn, sao cho đường đi bắt đầu vàkết thúc tại cùng một đỉnh, mọi đỉnh đều được ghé thăm đúng một lần Luôn
đúng, vì giữa hai đỉnh bất kỳ của K n đều có cạnh
Hình 2.3 Đồ thị K 5 có chu trình Hamilton (a→b→c→d→e→a)
Trang 294
7
36
5
1
2
Định lý 2.3 (Định lý Dirac [5]): Giả sử G là một đơn đồ thị liên thông
có n đỉnh, trong đó n ≥ 3, khi đó G có chu trình Hamilton nếu bậc của mỗi đỉnh ít nhất bằng n/2.
Chứng minh:
Thêm vào đồ thị G k đỉnh mới và nối chúng với tất cả các đỉnh của G Giả sử k là số nhỏ nhất các đỉnh cần thêm vào để cho đồ thị thu được G’ là đồ thị Hamilton Ta sẽ chỉ ra rằng k = 0.
Thực vậy, giả sử ngược lại là k > 0.
Ký hiệu v, p, w, , v là chu trình Hamilton trong G’, trong đó v, w là đỉnh của G còn p là một trong số các đỉnh mới Khi đó w không kề với v vì nếu ngược lại, ta không cần sử dụng p và điều đó là mâu thuẫn với giả thiết k nhỏ nhất Hơn nữa đỉnh (w’ chẳng hạn) kề với w không thể đi liền sau đỉnh v’ (kề với v) vì rằng khi đó có thể thay
v → p→ w → → v’→ w’ → → v
bởi v → v’ → → w → w’ → → v bằng cách đảo ngược đoạn của chu trình nằm giữa w và v’ Từ đó suy ra là số đỉnh của đồ thị G’ không kề với w là không nhỏ hơn số đỉnh kề với v (tức là ít nhất cũng là bằng ), đồng thời số đỉnh của G’ kề với w ít ra là phải bằng Do không có đỉnh nào của G’ vừa không kề, lại vừa kề với w, cho nên tổng số đỉnh của đồ thị G’ (G’ có n+k đỉnh) không ít hơn n+2k Mâu thuẫn thu được đã chứng minh
định lý
Ví dụ:
Trang 30Hình 2.4 Đồ thị có 8 đỉnh, mỗi đỉnh có bậc ≥ n/2
Hệ quả 2.1 [16]: Nếu G là đơn đồ thị có n (n ≥ 3) đỉnh
và mọi đỉnh của G đều có bậc không nhỏ hơn thì G là đồ thị nửa Hamilton (hay G có đường đi Hamiltom).
Định lý 2.4 (Định lý Ore 1960 [2]):
Nếu G là một đơn đồ thị có n đỉnh, với n ≥ 3 sao cho deg(u) +deg(v) ≥ n với mọi cặp đỉnh không liền kề u và v trong G, khi
đó G là đồ thị Hamilton
Chứng minh: Sử dụng phương pháp chứng minh bằng phản chứng.
Giả sử G thỏa deg(v) + deg(w) ≥ n; ∀ v,w không liền kề
trong G nhưng G không có chu trình Hamilton Khi đó ta có thể ghép thêm vào G những cạnh cho đến khi nhận được một
đồ thị con H của K n sao cho H không có chu trình Hamilton, nhưng với mọi cạnh e ∈ K n nhưng e ∉ H, ta có (H + e) có chu
trình Hamilton Việc ghép thêm cạnh vào G là hoàn toàn thực
hiện được và không ảnh hưởng gì đến điều kiện của giả thiết
Do H ≠ K n nên tồn tại a, b ∈ V sao cho ab ∉ H nhưng H +
ab có chu trình Hamilton C Bản thân H không có chu trình
Hamilton mà H + ab có chu trình Hamilton ⇒ ab ∈ C Giả sử
ta liệt kê các đỉnh của H trong chu trình C như sau:
Trang 31a(=v 1 ) → b(=v 2 ) → v 3→ v 4→ → v n-1 → v n ; 3 ≤ i ≤ n.
Khi đó, nếu cạnh bv i ∈ H, ta có thể kết luận avi-1 ∉ H vì
nếu cả hai bv i và av i-1 cùng nằm trong H, ta có chu trình:
b → v i→ v i+1 → → v n-1 → v n→ a → v i-1 → v i-2 → → v 3
Chu trình này nằm trong H, điều này mâu thuẫn vì H
không có chu trình Hamilton Vì vậy, ∀v i (3 ≤ i ≤ n) chỉ có một
trong 2 cạnh: bv i hoặc av i-1 nằm trong H.
Do đó: degH(a) + degH(b) < n.
Với degH(a): bậc của a trong H.
Ta có ∀ v ∈ V: degH(v) ≥ degG(v) = deg(v) (vì G là đồ thị con của H)
⇒ với cặp đỉnh không liền kề trong G: a, b ta có: deg(a) + deg(b) < n.
Điều này mâu thuẫn với giả thiết: deg(v) + deg(w) ≥ n;
∀v, w không liền kề.
Vậy, G có chứa chu trình Hamilton.
Định lý 2.5.[16]: Giả sử G là đồ thị có n đỉnh, và S là tập
các đỉnh có bậc ít nhất n/2 trong G nếu |S| ≥ 3, thì G có một chu trình chứa mọi đỉnh của S.
Định lý 2.6 [16]: Cho đồ thị G = (V,E) gồm n ≥ 3 đỉnh,
a) Nếu deg(u) + deg (v) ≥ n, ∀u, v ∈ V, thì G có chu trìnhHamilton
Trang 32b) Nếu deg(u) + deg (v) ≥ n - 1, ∀u, v ∈ V, thì G có chutrình Hamilton.
Định lý 2.7 [16]: Giả sử đồ thị G với n ≥ 3 đỉnh và Khi đó G là
Hamilton
2.2 Thuật toán tìm chu trình Hamilton
Để liệt kê chu trình Hamilton và đường đi Hamilton cho tới nay người
ta vẫn chưa tìm ra được thuật toán trong trường hợp tổng quát Chính vì vậychủ yếu dựa trên thuật toán xác định bằng hoán vị vòng quanh với tư tưởngthuật toán đệ quy, quay lui hoặc dựa trên các quy tắc để xác định chu trìnhHamilton (H) của đồ thị
Các quy tắc:
(1) Nếu có 1 đỉnh bậc 2 thì hai cạnh của đỉnh này bắt buộc phải nằm trong H (2) Không được có chu trình con (độ dài nhỏ hơn n) trong H
(3) Ứng với một đỉnh nào đó, nếu đã chọn đủ 2 cạnh vào H thì phải loại
bỏ tất cả các cạnh còn lại (vì không thể chọn thêm)
Sau đây luận văn đi tìm hiểu về thuật toán đệ quy:
Thuật toán áp dụng đối với đồ thị được lưu giữ bằng danh
2.1 Tìm và lưu đỉnh j có cạnh nối với x[i] và đỉnh j này
chưa thăm trước đó