Một trong các hướng phát triển tiếp trên con đường giải quyết bài toán xác định số ổn định trong của các đồ thị đặc biệt.. Với lý thuyết độ phức tạp, chúng ta thấy bài toán xác định tập
Trang 1LỜI CAM ĐOAN
Với mục đích học tập, nghiên cứu để nâng cao kiến thức và trình độ chuyên môn nên tôi đã làm luận văn này một cách nghiêm túc và hoàn toàn trung thực
Trong luận văn, tôi có sử dụng tài liệu tham khảo của một số tác giả Tôi
đã nêu trong phần tài liệu tham khảo ở cuối luận văn
Tôi xin cam đoan và chịu trách nhiệm về nội dung và sự trung thực trong luận văn tốt nghiệp Thạc sĩ của mình
Hà Nội, ngày 10 tháng 10 năm 2013
Học viên
Nguyễn Phú Thành
Trang 2LỜI CẢM ƠN
Trước hết, tôi xin chân thành cảm ơn các thầy cô Trường Đại học Sư phạm
Hà Nội, đặc biệt là các thầy cô đã tận tình dạy bảo tôi trong suốt quá trình học tập tại trường
Tôi xin gửi lời biết ơn sâu sắc đến PGS TSKH Vũ Đình Hòa, thầy hướng dẫn, đã dành nhiều thời gian và tâm huyết hướng dẫn tôi nghiên cứu trong suốt thời gian qua
Tôi cũng xin chân thành cảm ơn đồng nghiệp Trường Cao đẳng Sơn La
đã tạo điều kiện về mặt thời gian để tôi có thể hoàn thành chương trình học và bảo vệ luận văn tốt nghiệp
Cuối cùng, tôi xin gửi lời cảm ơn tới những người thân trong gia đình tôi, bạn bè tôi đã luôn động viên tôi trong quá trình học tập và nghiên cứu
Mặc dù tôi đã có nhiều cố gắng hoàn thành luận văn một cách tốt nhất, tuy nhiên do năng lực còn nhiều hạn chế nên không thể tránh khỏi những thiếu sót
Vì vậy, tôi rất mong nhận được những đóng góp quý báu của thầy cô và các bạn
Hà Nội, ngày 10 tháng 10 năm 2013
Trang 3MỤC LỤC
MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục đích nghiên cứu 1
3 Đối tượng nghiên cứu 2
4 Phạm vi nghiên cứu 2
5 Giả thuyết khoa học 2
6 Phương pháp nghiên cứu 2
CHƯƠNG 1 KHÁI NIỆM CƠ SỞ 4
1.1 Lý thuyết độ phức tạp 4
1.1.1 Máy Turing tất định và lớp P 6
1.1.2 Máy Turing không tất định và lớp NP 10
1.1.3 Phép dẫn thời gian đa thức và lớp NPC 16
1.2 Lý thuyết đồ thị 19
1.2.1 Một số khái niệm cơ sở 19
1.2.2 Khái niệm đường đi, chu trình, girth của đồ thị 26
1.2.3 Một số lớp đồ thị đặc biệt 28
1.2.4 Chỉ số ổn định trong của đồ thị 31
1.2.5 Bài toán luồng lớn nhất trong đồ thị và thuật toán Ford-fulkerson 32
1.3 Kết luận chương: 36
CHƯƠNG 2: ĐỘ PHỨC TẠP BÀI TOÁN XÁC ĐỊNH TẬP ỔN ĐỊNH LỚN NHẤT CỦA ĐỒ THỊ 37
2.1 Bài toán xác định chỉ số ổn định trong (MIS) 37
2.1.1 Phát biểu bài toán MIS dưới dạng bài toán quyết định 38
2.1.2 Độ phức tạp của bài toán MIS trong đồ thị 39
2.2 MIS trong một số lớp đồ thị đặc biệt 39
2.2.1 MIS trong lớp đồ thị phẳng và đều bậc ba 39
2.2.2 MIS trong đồ thị đều bậc 3 với độ mở k 3 41
2.2.3 MIS trong đồ thị không có đồ thị kim cương và đồ thị K1,4 là đồ thị con của nó 41
Trang 42.3 MIS trong đồ thị lưỡng phân 43
2.3.1 Một vài kết quả cơ sở 43
2.3.2 Xác định số ổn định trong bằng thuật toán luồng 51
2.4 Kết luận chương 55
CHƯƠNG III CÀI ĐẶT CHƯƠNG TRÌNH 56
3.1 Phân tích và thiết kế hệ thống 56
3.2 Cài đặt chương trình 60
3.3 Chức năng và giao diện chương trình 61
3.4 Kết quả thử nghiệm 62
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 64
Trang 5DANH MỤC HÌNH VẼ
Hình 1.1 Hình ảnh minh họa máy Turing tất định 6
Hình 1.2 Mô tả hoạt động của máy Turing tất định 9
Hình 1.3 Hình ảnh minh họa máy Turing không tất định (NDTM) 11
Hình 1.4 Sự khác nhau giữa máy Turing tất định và máy Turing không tất định 13
Hình 1.5 Quan hệ giữa lớp P, NP và NPC 19
Hình 1.6 Đơn đồ thị có 5 đỉnh và 5 cạnh 19
Hình 1.7 Đa đồ thị 20
Hình 1.8 Giả đồ thị 20
Hình 1.9 Đồ thị có hướng 21
Hình 1.10 Đa đồ thị có hướng 4 đỉnh, 6 cạnh 21
Hình 1.11 Đồ thị lưỡng phân 22
Hình 1.12 Đồ thị hỗn hợp 22
Hình 1.13 Đồ thị đầy đủ K5 22
Hình 1.14 Đồ thị con G’ (cạnh in đậm ) của đồ thị G 23
Hình 1.15 Hình lập phương 23
Hình 1.16 Đồ thị đều bậc 3 (Đồ thị Petersen) 24
Hình 1.17 Đồ thị có trọng số 24
Hình 1.18 Đồ thị có x1 và x2 liền kề nhau 24
Hình 1.19 Cut chia đồ thị thành 2 phần , cut-set là {(A,B), (D, B), (D,C)} 25
Hình 1.20 Đồ thị G và H 27
Hình 1.21 Đồ thị liên thông mạnh G và đồ thị liên thông yếu H 28
Trang 6Hình 1.22 Đồ thị đầy đủ 29
Hình 1.23 Đồ thị vòng C3, C4, C5, C6 29
Hình 1.24 Đồ thị bánh xe W3, W4, W5, W6 30
Hình 1.25 Đồ thị lập phương Q1, Q2, Q3 30
Hình 1.26 Đồ thị lưỡng phân 31
Hình 2.1 Đồ thị petersen 38
Hình 2.2 Đồ thị K4 là đồ thị phẳng 39
Hình 2.3 Các miền tương ứng với biểu diễn phẳng của đồ thị 40
Hình 2.4 Đồ thị K1, 4 42
Hình 2.5 Cây BFS 46
Hình 2.6 Bộ ghép cực đại 47
Hình 2.7 Cạnh đậm cạnh nhạt 48
Hình 2.8 Ghép hai đường mở 48
Hình 2.9 Ghép hai đường đảo màu cạnh 49
Hình 2.10 Đường mở 51
Hình 2.11 Mạng và luồng 52
Hình 2.12 Mạng G với luồng cực đại và lát cắt hẹp nhất 53
Hình 2.13 Tăng luồng dọc theo đường tăng 60
Hình 3.1 Chương trình chính 62
Hình 3.2 Nhập dữ liệu 62
Hình 3.3 Mạng và một luồng của nó có giá trị 6 63
Trang 7DANH MỤC BẢNG BIỂU Bảng 1.1: Giá trị của ઠ(q,s) 9 Bảng 2.1 Kết quả của thuật toán Ford-Fullkerson 53
Trang 8DANH MỤC THUẬT NGỮ
Thuật
MIS Maximal Independent Set Chỉ số ổn định trong DTM Deterministic Turing Machine Máy turing tất định
Trang 9Một trong các hướng phát triển tiếp trên con đường giải quyết bài toán xác định số ổn định trong của các đồ thị đặc biệt Năm 2010 trên tạp chí Tin học và điều khiển học hai tác giả Vũ Đình Hòa và Đỗ Minh Tuân có đăng bài Thuật toán đa thức tìm tập ổn định trong lớn nhất của đồ thị lưỡng phân
Trong công trình này hai tác giả đã nghiên cứu để tìm ra tập ổn định lớn nhất và bài toán này thuộc lớp P Bài báo này là nội dung chính của luận văn :
Độ phức tạp của bài toán xác định số ổn định trong một số lớp đồ thị đặc biệt
2 Mục đích nghiên cứu
- Tìm hiểu các khái niệm lớp P, lớp NP và lớp các bài toán NP – đầy đủ
- Tìm hiểu nội dung bài báo mà hai tác giả đưa ra như là công cụ để xác định số ổn định trong một số đồ thị đặc biệt
Trang 10- Ứng dụng thuật toán để xây dựng phần mềm thực hiện tìm luồng lớn nhất trên mạng
3 Đối tượng nghiên cứu
- Lý thuyết đồ thị và lý thuyết độ phức tạp thuật toán, tìm hiểu nội dung bài báo trong [6]
5 Giả thuyết khoa học
Khoa học tính toán là ngành khoa học có ứng dụng trong thực tiễn rất lớn Ngày nay, lý thuyết độ phức tạp soi sáng khả năng giải quyết một bài toán cho trước trên phương diện tính toán Với lý thuyết độ phức tạp, chúng ta thấy bài toán xác định tập ổn định trong lớn nhất khó có thể giải quyết trong thời gian đa thức và do đó nên tìm cách tiếp cận khác để giải bài toán này bằng cách phân lớp giải bài toán trong các lớp đồ thị đặc biệt
6 Phương pháp nghiên cứu
- Nghiên cứu, hệ thống hóa tổng quan tài liệu
Trang 11- Viết chương trình phần mềm bài toán tìm luồng lớn nhất trong mạng
- Chạy thử nghiệm chương trình
Trang 12CHƯƠNG 1 KHÁI NIỆM CƠ SỞ
1.1 Lý thuyết độ phức tạp
Một vấn đề được quan tâm nhất trong lịch sử khoa học tính toán là việc giải quyết các bài toán Khoa học tính toán đã làm cho tư duy con người ngày càng hoàn thiện và phát triển, con người tiếp tục nâng cao năng lực để giải quyết những vấn đề khó khăn hơn Thuật toán vốn có một vai trò quan trọng trong cuộc sống của con người, giúp chúng ta giải quyết các vấn đề một cách hiệu quả, càng ngày càng có vai trò quan trọng đáng kể hơn trong toán học và khoa học, đồng thời mang lại những phương pháp hiệu quả để giải quyết những vấn đề khó Sự ra đời và phát triển của máy tính tạo nên cuộc cách mạng trong nhiều lĩnh vực của khoa học, hiện nay khả năng giải quyết các bài toán tính toán của các máy tính hiện đại đã vượt xa khả năng con người có thể đạt được Máy tính đã mang lại nhiều lợi ích vô cùng Với sự phát triển và tiến bộ liên tục của các thế hệ máy tính siêu mạnh, người ta dường như tin rằng mọi bài toán sẽ sớm có lời giải đúng thời hạn, song thực tế đã chứng tỏ rằng điều đó không phải là sự thật
Thực tế là có các bài toán thực tiễn, tuy trên phương diện lý thuyết có thể giải quyết được bằng máy tính, song trong nhiều trường hợp chỉ có giải thuật không có tính thực tiễn với chi phí tính toán quá lớn đến mức không thể thực hiện với thời gian và năng lực tính toán có được, chẳng hạn bài toán lập lịch biểu, bài toán người bán hàng
Giải pháp cho vấn đề này là làm sao có được cách xử lý dữ liệu nhanh hơn Nhưng lý thuyết máy Turing đã được Alan Turing đưa ra năm 1937, đã chỉ ra rằng tồn tại những bài toán khó với thuật toán quá phức tạp đến mức những máy tính mạnh nhất cũng không thể giải quyết trong thời gian chấp nhận được Do vậy thay vì tìm cách giải quyết các bài toán bằng con đường tính toán
Trang 13một cách đơn thuần, lý thuyết độ phức tạp đi sâu vào nghiên cứu phân lớp các bài toán dựa trên độ phức tạp bản chất của chúng với hai câu hỏi cơ bản đặt ra
là
- Một bài toán về bản chất là “khó” hay “dễ” tính toán?
- Cho hai bài toán 1 và 2, bài toán nào là dễ/khó hơn ?
Để thực hiện những nghiên cứu một cách nghiêm chỉnh nhằm đánh giá chính xác độ phức tạp bản chất cho các lớp bài toán, các nhà khoa học máy tính phải dựa trên một mô hình toán học trừu tượng của các máy tính được gọi là
mô hình tính toán (model of computation), mặc dù về nguyên tắc các nghiên cứu trong lý thuyết độ phức tạp không phụ thuộc vào mô hình tính toán cụ thể nào cả
Máy Turing được các nhà khoa học máy tính lựa chọn vì với cấu trúc và nguyên lý hoạt động đơn giản, song lại có khả năng tính toán mạnh mẽ Những
gì máy tính thực có thể làm được cũng thực hiện được trên máy Turing, những phát biểu hạn chế trên máy Turing cũng đúng cho các máy tính thực Máy Turing còn có khả năng biểu diễn chính xác về mặt toán học những gì có thể tính toán được, hơn thế còn có thể phân tích được và được sử dụng để chứng minh các kết quả nghiên cứu, vì vậy máy Turing được coi là một công cụ cơ bản của lý thuyết độ phức tạp
Có nhiều biến thể khác của mô hình máy Turing được sử dụng trong nghiên cứu lý thuyết độ phức tạp, chẳng hạn với nhiều băng hoặc các băng có giới hạn một đầu Nhưng các mô hình này có thể được mở rộng hay thu hẹp chức năng với mục đích thực hiện một số công việc đặc biệt nào đó được dễ dàng hơn Điều đó không có nghĩa là làm thay đổi sức mạnh của chúng, những
gì thực hiện được trên các mô hình biến thể đó cũng thực hiện được trên mô hình máy Turing tất định mà ta nói đến sau đây
Trang 141.1.1 Máy Turing tất định và lớp P
Máy Turing tất định
Máy Turing là một mô hình thiết bị xử lí các kí tự, nó có thể thực hiện được tất cả các thuật toán máy tính Các máy Turing được xây dựng dành cho các thí nghiệm tưởng tượng để tìm hiểu về giới hạn của việc tính toán trên máy móc Việc nghiên cứu các tính chất của máy Turing cho biết nhiều kiến thức quan trọng trong lĩnh vực khoa học máy tính và về lý thuyết độ phức tạp
Máy Turing tất định gồm có:
Một bộ điều khiển trạng thái hữu hạn
Một đầu đọc ghi: Di chuyển trên băng, ở mỗi thời điểm nhìn vào một ô trên băng
Một băng vô hạn cả hai đầu nằm ngang chia thành các ô vuông Dưới các ô vuông có đánh các nhãn là:… -3, -2, -1, 0, 1, 2, 3…một cách tuần tự Băng dùng để chứa các xâu kí tự vào
Một chương trình cho máy Turing tất định gồm các thông tin:
Hình 1.1 Hình ảnh minh họa máy Turing tất định
Trang 15Một tập hợp hữu hạn T những kí hiệu, bao gồm một tập con T và một kí tự trắng □ ∈ T \ Một tập hợp hữu hạn Q các trạng thái, bao gồm trạng thái bắt đầu phân biệt qo và hai trạng thái kết thúc phân biệt là qY và qN
Một hàm chuyển trạng thái :
ઠ: (Q − {qY, qN}) × T → Q × T × {-1, +1,0}
Hàm chuyển trạng thái cho phép tương ứng với mỗi trạng thái của máy
và một kí kiệu đọc được từ ô đối diện, ta xác định được:
Trạng thái tiếp theo của máy
Kí hiệu sẽ được viết lên băng đè lên kí hiệu vừa đọc
Hướng dịch chuyển của đầu đọc trên băng
Quá trình thực hiện của DTM:
Đầu vào của DTM là một xâu x* Xâu x được đặt lên băng, từ ô 1 đến ô |x|, mỗi kí tự được đặt vào một ô Tất cả các ô còn lại đều chứa kí tự trắng Chương trình bắt đầu với trạng thái ban đầu là q0, đầu đọc ở ô chứa kí tự đầu tiên của xâu
Các bước tính toán của máy Turing : Nếu trạng thái hiện tại của q là qY
hoặc qN, quá trình tính toán kết thúc Mặt khác nếu thuộc Q − {qY, qN}, kí tự s thuộc T trên băng sẽ được đọc Giá trị (q,s) được xác định coi (q,s)=(q’,s’,Δ) Đầu đọc ghi sẽ xóa s, ghi s’ vào vị trí của nó và dịch chuyển 1 ô sang bên trái Δ=-1, sang bên phải nếu Δ=+1 Cùng lúc đó, trạng thái thay đổi từ q sang q’ Tóm lại, máy Turing sẽ thực hiện các bước sau:
Đọc kí tự đối diện với đầu đọc
Thay kí hiệu đó bằng kí hiệu tính được từ hàm
Trang 16Dời đầu đọc theo hướng của hàm dịch chuyển
Đổi trạng thái hiện tại thành trạng thái của hàm dịch chuyển
Xâu x được thừa nhận khi quá trình thực hiện đạt đến trạng thái thừa nhận(qY hoặc qN), câu trả lời là “yes” nếu q=qY và là “no” nếu q=qN Mặt khác, trạng thái của qQ-{qY,qN}
Ví dụ 1.1: Tìm số nguyên dương chia hết cho 4
Instance: Cho số nguyên dương N
Question: Tồn tại số nguyên dương m sao cho N=4m?
Theo lược đồ mã hóa chuẩn, số nguyên N được đại diện bởi một xâu các
kí tự 0 và 1, đó là một xâu nhị phân Số nguyên dương này chia hết cho 4 nếu
và chỉ nếu hai số cuối của dãy nhị phân đại diện cho nó là 0, chương trình DTM này giải quyết bài toán tìm số nguyên dương chia hết cho 4 theo lược đồ mã hóa chuẩn
Giả sử M là một DTM với đầu vào là xâu thuộc và băng chứa các kí
tự thuộc T đưa ra kết quả cho tất cả các xâu vào thuộc *, fM(x) xác định xâu chạy bởi M input x cho đến khi kết thúc đưa ra một xâu các kí tự trên các ô của băng liên tục Trong ví dụ trên fM:{0,1}*→{0,1,b}* xâu x{0,1}* tới fM(x) xóa hai kí tự cuối cùng của x Ta tóm tắt bài toán như sau:
M=(T, Q, ઠ):
T = {0, 1, b}, = {0, 1}
Q = {q0, q1, q2, q3, qY, qN} Cho xâu: x = “10011”
Hàm trạng thái cho trong bảng, các giá trị của ઠ(q,s):
Trang 17Lớp P
Trang 18Thời gian tính toán của máy Turing tất định là số bước tính toán cho đến khi kết thúc Cho M là một máy Turing tất định không có quá trình vô hạn Hàm phức tạp theo thời gian của M là hàm được định nghĩa như sau:
Định nghĩa 1.1: Lớp P là một lớp các bài toán quyết định giải được bởi
máy Turing tất định trong thời gian đa thức :
P={L: có một máy DTM thời gian đa thức có L=LM}
Bài toán quyết định π phụ thuộc P theo lược đồ mã hóa e
Nếu L[π, e] ∈ P, nếu có một chương trình DTM thời gian đa thức giải quyết π theo lược đồ mã hóa e
Một hàm tính với thời gian đa thức, nếu có một máy Turing đa thức tính
nó
1.1.2 Máy Turing không tất định và lớp NP
a, Máy Turing không tất định
Phần quan trọng thứ hai là lớp NP Gọi là nondeterministic algorithm (thuật toán không xác định, không phải vì không thể xác định độ phức tạp thuật toán) vì thuật toán bao gồm hai phần: phần đoán nhận và phần kiểm tra Để giải quyết bài toán a có dữ kiện I, phần đoán nhận đưa ra xâu s, đưa cả I và s vào đầu vào, phần kiểm tra sẽ xử lí tính toán
Ví dụ 1.2: Bài toán TRAVELLING SALEMAN:
Trang 19Instance: Cho tập hợp các thành phố, khoảng cách giữa chúng, và một
số B
Question: Có hay không tour du lịch có độ dài nhỏ hơn hoặc bằng B?
Không có cách nào tìm ra câu trả lời đúng ngoài việc kiểm tra tất cả các tour (hoặc một phần) Điều này đúng với nhiều bài toán khác trong NP
Để giải quyết thuật toán không tất định ta sử dụng máy Turing không tất định một băng (NDTM)
Máy Turing không tất định giống như máy Turing tất định gồm 1 băng
T, các kí tự đầu vào thuộc , kí tự trống b, tập hợp trạng thái Q, trạng thái khởi đầu q0, trạng thái kết thúc qY và qN, hàm chuyển trạng thái :
Trang 20Máy Turing không tất định thực hiện chương trình:
Giả sử máy làm việc với một Input x0* được đặt vào các ô từ 1 đến
Giai đoạn kiểm tra bắt đầu là trạng thái q0 Quá trình tính toán chấm dứt khi trạng thái trong là một trong hai trạng thái kết thúc và tính toán được chấp nhận nếu kết thúc là trạng thái qY Tất cả quá trình tính toán khác có kết quả hoặc không đều được xếp là không có kết quả được chấp nhận
Yếu tố không tất định là ở chỗ trong giai đoạn phỏng đoán việc viết kí tự nào vào các ô –1,-2,-3 không xác định tức là có thể viết theo nhiều khả năng khác nhau
Máy NDTM M chấp nhận x nếu có ít nhất một quá trình tính toán được chấp nhận
Mỗi từ x được chấp nhận bởi máy Turing bất định M nếu xuất phát với input x, máy Turing bất định M chuyển đến trạng thái qY
Sự khác nhau giữa máy Turing tất định và máy Turing không tất định: Nếu coi mỗi quá trình tính toán trên máy Turing tất định chỉ là một
“đường tính toán” thì quá trình tính toán trên máy Turing không tất định là một cây tính toán với nhiều đường đi khác nhau
Trang 21Lớp NP
Ngôn ngữ đoán nhận bởi NDTM:
Kí hiệu là LM = {w0* M chấp nhận w} gọi là ngôn ngữ đoán nhận được bởi máy NDTM
Thời gian tính toán của NDTM: Được tính là thời gian tối thiểu của mọi quá trình tính toán chấp nhận x, số bước xảy ra trên bước đoán nhận và kiểm tra cho đến trạng thái cuối qY thì kết thúc, nghĩa là :
tM(x)= min{t có quá trình tính toán chấp nhận Input x dừng lại sau t bước}
Độ phức tạp thời gian (thời gian tính) của máy NDTM, kí hiệu là TM(n) cũng chỉ xét trên các từ x LM được định nghĩa như sau:
NDTM
qY
qN
Hình 1.4 Sự khác nhau giữa máy Turing tất định và máy Turing
không tất định
Trang 22Định nghĩa 1.2: (Thông qua máy Turing không tất định):
Lớp NP được định nghĩa là lớp tất cả các bài toán quyết định π, theo lược đồ mã hóa, có thể giải quyết trong thời gian đa thức thuật toán không tất định.[1]
NP là lớp các bài toán được đoán nhận bởi một máy Turing không tất định trong thời gian đa thức
Một ngôn ngữ L là đoán nhận được bởi máy Turing không tất định và
đa thức P(n) sao cho:
L= LM và TM(n) ≤ P(n) với mọi n ≥ 0
Một bài toán gọi là NP nếu ngôn ngữ tương ứng của nó thuộc lớp NP Phép dẫn thời gian đa thức và lớp NPC các nhà khoa học thường xuất phát từ một vấn đề (bài toán) đã được giải quyết hiệu quả cố gắng xác định sự tương tự và các mối quan hệ giữa những vấn đề mà thoạt trông có vẻ khác biệt Trong toán học, các mối quan hệ như vậy được chia thành hai dạng chuẩn:
- Bài toán A là dẫn được về bài toán B, ký hiệu A
có thể giải quyết bài toán B, ta cũng có thể giải quyết bài toán A
- Bài toán A và B là bằng nhau nếu A B và B A, nghĩa là nếu có thể giải quyết một bài toán, thì chúng ta cũng có thể giải quyết bài toán còn lại trong những điều kiện như nhau
Định nghĩa 1.3: Một hàm f: 0* 0* là tính được trong thời gian đa thức (Polynomial -Time Computable) nếu có máy Turing tất định M và một đa thức
p sao cho xuất phát từ trạng thái ban đầu với input w trên băng, máy Turing dừng lại với ouput trên băng là f(w) và TM(w) ) p(w).[1]
Trang 23Định nghĩa 1.4: Một ngôn ngữ L gọi là dẫn được trong thời gian đa thức về
ngôn ngữ L’, ký hiệu là LP L’ hay L L’ khi và chỉ khi có một đa thức p và một hàm tính được trong thời gian đa thức f: 0* 0* sao cho w 0*,
w L khi và chỉ khi f(w) L’ Hàm f được gọi là phép dẫn thời gian đa thức.[1]
Giả sử chúng ta có các bài toán quyết định 1, 2 với các tập dữ kiện D1
và D2 tương ứng Nếu có một hàm f: D1D2 biến mỗi dữ kiện x của bài toán
1 thành một dữ kiện f(x) của bài toán 2 sao cho dữ kiện x cho câu trả lời
“yes” với bài toán 1 khi và chỉ khi bài toán 2 cũng có câu trả lời “yes” với
dữ kiện f(x) và ngược lại, ta nói bài toán 1 dẫn được về bài toán 2
Khi hàm f là tính được trong thời gian đa thức, ta nói bài toán 1 được dẫn về bài toán 2 bằng phép dẫn thời gian đa thức Điều này có nghĩa là nếu chúng ta có thể giải quyết bài toán 2 trong thời gian đa thức thì ta cũng có thể giải quyết bài toán 1 trong thời gian đa thức với cùng những điều kiện xác định Theo nghĩa về độ phức tạp bài toán bài toán 2 ít nhất có độ phức tạp bằng độ phức tạp của bài toán 1
Định nghĩa 1.5: Bài toán quyết định 1 dẫn được về bài toán quyết định 2
trong thời gian đa thức nếu tồn tại phép dẫn thời gian đa thức từ bài toán 1
về bài toán 2 [1]
Ký hiệu 1 2
Một tính chất quan trọng được rút ra trực tiếp từ định nghĩa phép dẫn thời gian đa thức là nếu 1 2 và 2 thuộc lớp P thì 1 cũng thuộc lớp P Hơn thế, nếu 12 và 23 thì ta cũng sẽ có 13
Ví dụ 1.3: 1 là bài toán chu trình Hamilton
Instance: Cho đồ thị vô hướng G = (V,E)
Trang 24Question: G có chứa chu trình Hamilton không ?
- 2 là bài toán chu trình đan xen (dominating)
Instance: Cho đồ thị vô hướng G =(V,E)
Question: G có chứa chu trình đan xen không ?
Ta xây dựng phép dẫn f như sau:
Giả sử đồ thị G có tập đỉnh V = {u1, ,un), ta sẽ bổ sung thêm n đỉnh {v1, ,vn} và n cạnh (u1,v1), ,(un,vn) để được một đồ thị ký hiệu f(G)
Ta sẽ chứng tỏ:
- Nếu G có chu trình Hamilton thì f(G) có chu trình đan xen:
Thật vậy, giả sử H là một chu trình Hamilton của G thì f(G) bao gồm chu trình H và n đỉnh {v1, ,vn} cùng n cạnh (u1,v1), ,(un,vn) mới được bổ sung Khi
ta loại bỏ chu trình H và các cạnh có các đỉnh thuộc chu trình H thì f(G) chỉ còn lại n đỉnh {v1, ,vn}, vậy G chính là chu trình đan xen của f(G)
Ngược lại, giả sử nếu C là một chu trình đan xen của f(G), thì các đỉnh thuộc C đều có bậc lớn hơn 1, nên các đỉnh được thêm vào v1, ,vn chỉ có bậc bằng 1 nên không thể thuộc vào C Mặt khác mọi cạnh (ui,vi) đều có đỉnh thuộc
C trong khi mọi đỉnh vi đều C nên ui phải C i = 1, ,n Vậy C chính là chu trình Hamilton của đồ thị G
- Phép dẫn f thực hiện được trong thời gian đa thức: Dễ thấy là với số đỉnh và số cạnh cần được bổ sung, hàm f thực hiện được trong thời gian đa thức
1.1.3 Phép dẫn thời gian đa thức và lớp NPC
Định nghĩa 1.6: Một ngôn ngữ được gọi là NP đầy đủ (NPC) nếu
1 L thuộc vào lớp NP
Trang 252 Với mọi ngôn ngữ L’ thuộc lớp NP luôn có L’ L
Một bài toán quyết định được gọi là bài toán NPC nếu ngôn ngữ tương ứng là NPC Các bài toán chỉ thoả mãn điều kiện 2 được gọi là bài toán NP khó (NP - Hard) Việc chỉ ra một bài toán là NP - Hard là đủ để chứng tỏ nó cần thời gian cỡ hàm mũ
Như vậy để chỉ ra một bài toán là NPC ta cần chứng tỏ hai điều: Nó thuộc lớp NP và mọi bài toán thuộc lớp NP dẫn được về bài toán đó trong thời gian
đa thức Các bài toán NPC có một số tính chất quan trọng sau đây, các tính chất này cũng chính là căn cứ để trả lời cho câu hỏi “P = NP?” :
Định lý 1.1: Giả sử bài toán 1 là NPC, nếu bài toán 2 thuộc lớp NP và 1
đa thức, giả sử là p1 Mỗi từ w với w = n thuộc L sẽ được biến đổi thành một
từ x trong ngôn ngữ của bài toán 1 với số bước thực hiện không quá p1(n)
Mặt khác do bài toán 1 cũng dẫn được về bài toán 2 trong thời gian
đa thức, giả sử là p2 Mỗi từ x với x= m thuộc ngôn ngữ tương ứng của bài toán 1 cũng sẽ được biến thành một từ y thuộc ngôn ngữ tương ứng của bài toán 2 với số bước thực hiện không quá p2(m) = p2(p1(n))
Như vậy, quá trình thực hiện chuyển đổi một từ w bất kỳ trong ngôn ngữ
L thành một từ y trong ngôn ngữ tương ứng của bài toán 2 chỉ mất thời gian
Trang 26không quá p1(n) + p2(p1(n)), cũng trong thời gian đa thức Như vậy mọi ngôn ngữ L thuộc lớp NP dẫn được về ngôn ngữ tương ứng của bài toán 2 trong thời gian đa thức, tức là 2 cũng là bài toán NPC
Định lý 1.2: Giả sử L là NPC, nếu L thuộc P thì P = NP
Chứng minh
Giả sử L thuộc P và L là NPC, như thế với bất kỳ L’ NP có một phép dẫn thời gian đa thức từ L’ về L (từ định nghĩa NPC) Tuy nhiên theo tính chất suy ra từ định nghĩa phép dẫn thời gian đa thức, nếu L’ L và L thuộc lớp P thì L’ cũng phải thuộc lớp P Vậy P = NP
Từ định lý có thể suy ra rằng, nếu có một bài toán NPC không giải được trong thời gian đa thức, thì tất cả các bài toán NPC đều không thể giải được trong thời gian đa thức vì : Giả sử L là NPC và L P, nếu có bất kỳ L’ là NPC
và L’ P , ta có L’ NP, theo định nghĩa về NPC phải có L’ L nên L cũng phải thuộc P - mâu thuẫn với giả sử L P!
Vì lý do này nên các nghiên cứu xoay quanh câu hỏi “P = NP?” lại được tập trung vào các bài toán NPC, và cho đến nay hầu hết các nhà khoa học vẫn tin tưởng rằng P ≠ NP và hình dung về quan hệ giữa chúng như mô tả trong hình 1.5 dưới đây và cho đến nay vẫn chưa có được một thuật toán thời gian đa thức cho bất kỳ bài toán NPC nào được tìm ra
Trang 27Hình 1.5 Quan hệ giữa lớp P, NP và NPC
1.2 Lý thuyết đồ thị
1.2.1 Một số khái niệm cơ sở
Đồ thị là một cấu trúc rời rạc gồm các đỉnh và các cạnh nối với các đỉnh
đó Người ta phân loại đồ thị tùy theo đặc tính và số các cạnh nối các tập đỉnh của đồ thị
Đồ thị có thể dùng để biểu diễn nhiều bài toán trong thực tế: mối quan
hệ giữa các loài trong tự nhiên, sơ đồ mạng, công thức phân tử,…
Định nghĩa 1.7: Một đơn đồ thị G = ( V , E ) gồm một tập không rỗng V
mà các phần tử của nó gọi là các đỉnh và một tập E mà các phần tử của nó gọi
là các cạnh, đó là các cặp không thứ tự của các đỉnh phân biệt.[2]
Trang 28Định nghĩa 1.8: Một đa đồ thị G = ( V , E ) gồm một tập các đỉnh V một tập các cạnh E và một hàm f từ E tới {{u,v}| u, v ∈ V, u ≠ v} Các cạnh e1 và
e2 được gọi là song song hay cạnh bội nếu f(e1)=f(e2).[2]
Trang 29Định nghĩa 1.11: Một đa đồ thị có hướng G = ( V , E ) gồm tập các đỉnh V và
tập các cạnh E và một hàm f từ E tới {{u, v}| u, v ∈ V} Các cạnh e1, e2 là các
cạnh bội nếu f(e1)=f(e2).[2]
Định nghĩa 1.12: Một đơn đồ thị G được gọi là đồ thị lưỡng phân nếu tập các
đỉnh V có thể phân làm hai tập con không rỗng rời nhau V 1 và V 2 sao cho mỗi cạnh của đồ thị nối một đỉnh của V 1 với một đỉnh của V 2 [2]
Trang 30Định nghĩa 1.13: Đồ thị hỗn hợp là đồ thị có cả cạnh vô hướng cũng như cạnh
E
Trang 31Định nghĩa 1.15: Đồ thị rỗng là đồ thị không có đỉnh và cạnh nào.[2]
Định nghĩa 1.16: Đồ thị điểm là đồ thị có đúng 1 đỉnh và không có cạnh
nào.[2]
Định nghĩa 1.17: Cho trước một đồ thị G=(V, E) với tập đỉnh V và tập cạnh E
Khi đó một đồ thị G’=(V’,E’) với tập đỉnh V’ và tập cạnh E’ được gọi là đồ thị con của đồ thị G, nếu như V’ V và E’ E [2]
Định nghĩa 1.18: Một khối đa diện được gọi là khối đa diện đều nếu tất cả các
mặt của nó là những đa giác đều bằng nhau và tất cả các góc nhị diện của nó
là các góc bằng nhau.[2]
Định nghĩa 1.19: Một đồ thị đơn vô hướng G được gọi là đồ thị đều bậc t nếu
như mỗi đỉnh của đồ thị G có bậc là t.[2]
Trang 32Hình 1.16 Đồ thị đều bậc 3 (Đồ thị Petersen)
Định nghĩa 1.20 : Đồ thị có trọng số là đồ thị có các cạnh được gán giá trị,
giá trị này được gọi là trọng số (độ dài, chi phí)
Hình 1.17 Đồ thị có trọng số
Định nghĩa 1.21: Hai đỉnh u và v trong một đồ thị vô hướng G được gọi là liền
kề nhau nếu {u,v} là một cạnh của G Nếu e={u, v} thì e gọi là cạnh liên thuộc với các đỉnh u và v Cạnh e cũng được gọi là cạnh nối các đỉnh u và v Các đỉnh u và v gọi là các điểm đầu mút của cạnh {u, v}.[2]
Trang 33Định nghĩa 1.22: Bậc của một đỉnh trong đồ thị vô hướng là số các cạnh liên
thuộc của nó, riêng khuyên tại một đỉnh được tính hai lần cho bậc của nó
Người ta kí hiệu bậc của đỉnh v là deg(v) [2]
Định nghĩa 1.23: Một cut là phân vùng các đỉnh của đồ thị thành hai tập con
riêng biệt Cut-set của một cut là tập các cạnh có các điểm đầu mút ở các tập con khác nhau.[2]
Định nghĩa 1.24: (Matching) cho đồ thị G=(V,E) sự kết hợp là một tập con
cạnh ME, sao cho không có hai cạnh trong M liền kề Một sự kết hợp là cực đại nếu không có cạnh nào được thêm vào mà không vi phạm điều kiện Sự kết hợp số các yếu tố cực đại trong tập hợp được gọi là cực đại Một sự kết hợp được cho là hoàn hảo nếu mỗi đỉnh liền kề với một cạnh trong kết hợp đó
Định nghĩa 1.25: Một đồ thị đều (Regular graph) là đồ thị mà mọi đỉnh đều có
cùng bậc Nếu đồ thị G có các đỉnh có cùng bậc K thì được gọi là K-đều
Trang 341.2.2 Khái niệm đường đi, chu trình, girth của đồ thị
Định nghĩa 1.26: Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó, n là số
nguyên dương, trên đồ thị có hướng G = (V, A) là dãy x 0 , x 1 ,…, x n-1 , x n
trong đó u = x 0 , v = x n , (x i , x i +1)Î E, i = 0, 1, 2,…, n-1
Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cung:
(x 0 , x 1 ), (x 1 , x 2 ), …, (x n-1 , x n )
Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi Đường đi
có đỉnh đầu trùng với đỉnh cuối (tức là u = v) được gọi là chu trình Đường đi hay chu trình được gọi là đơn nếu như không có cạnh nào bị lặp lại
Trang 35Định nghĩa 1.27: Đồ thị vô hướng G = (V, E) được gọi là liên thông nếu luôn
tìm được đường đi giữa hai đỉnh bất kỳ của nó
Ví dụ 1.6 Đồ thị H trong hình 1.20 gồm 3 thành phần liên thông H1, H2, H3
Trong mạng máy tính có thể có những máy mà sự hỏng hóc của nó sẽ ảnh hưởng đến việc trao đổi thông tin trong mạng Các khái niệm tương ứng với tình huống này được đưa ra trong định nghĩa sau
Định nghĩa 1.29: Đỉnh v được gọi là đỉnh rẽ nhánh nếu việc loại bỏ v cùng
với các cạnh liên thuộc với nó khỏi đồ thị làm tăng số thành phần liên thông của đồ thị Cạnh e được gọi là cầu nếu việc loại bỏ nó khỏi đồ thị làm tăng số thành phần liên thông của đồ thị
Ví dụ 1.7 Trong đồ thị G ở hình1.20, đỉnh d và e là đỉnh rẽ nhánh, còn các cạnh (d,g) và (e,f) là cầu
Trang 36Đối với đồ thị có hướng có hai khái niệm liên thông phụ thuộc vào việc
ta có xét đến hướng trên các cung hay không
Định nghĩa 1.30: Đồ thị có hướng G = (V, A) được gọi là liên thông yếu
nếu đồ thị vô hướng tương ứng với nó là vô hướng liên thông
Rõ ràng nếu đồ thị là liên thông mạnh thì nó cũng là liên thông yếu, nhưng điều ngược lại là không luôn đúng, như chỉ ra trong ví dụ dưới đây
Ví dụ 1.8 Trong hình 1.21 đồ thị G là liên thông mạnh, còn H là liên thông yếu nhưng không là liên thông mạnh
Hình 1.21 Đồ thị liên thông mạnh G và đồ thị liên thông yếu H
Một câu hỏi đặt ra là khi nào có thể định hướng các cạnh của một đồ thị
vô hướng liên thông để có thể thu được đồ thị có hướng liên thông mạnh? Ta
sẽ gọi đồ thị như vậy là đồ thị định hướng được Định lý dưới đây cho ta tiêu chuẩn nhận biết một đồ thị có là định hướng được hay không
Định lý 1.3: Đồ thị vô hướng liên thông là định hướng được khi và chỉ khi mỗi
cạnh của nó nằm trên ít nhất một chu trình