Tải bản đầy đủ (.pdf) (73 trang)

Độ 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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.8 MB, 73 trang )

LỜ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

i


LỜ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.
Giáo viên hướng dẫn

Hà Nội, ngày 10 tháng 10 năm 2013
Học viên

Vũ Đình Hòa

Nguyễn Phú Thành

ii


MỤ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

iii


2.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

iv


DANH 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

v



Hì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

vi


DANH 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


vii


DANH MỤC THUẬT NGỮ

Thuật

Tên đầy đủ

Ý nghĩa

MIS

Maximal Independent Set

Chỉ số ổn định trong

DTM

Deterministic Turing Machine

Máy turing tất định

NDTM

Nondeterministic Turing
Machine

Máy turing không tất định


P

Polynomial time

Lớp P

NP

Nondeterministic Polynomial

Lớp NP

ngữ

NPC

Nondeterministic Polynomial
Complete

viii

Lớp NPC


MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay với sự xuất hiện của máy tính hiện đại và mạng máy tính đang
trở thành công cụ đắc lực phục vụ cho mọi mặt phát triển của đời sống xã hội.
Lý thuyết độ phức tạp là vấn đề trung tâm đang được nghiên cứu của ngành

khoa học máy tính, việc nghiên cứu lý thuyết độ phức tạp và ứng dụng của nó
vừa là cơ sở động lực cho khoa học máy tính phát triển, vừa góp phần hiệu quả
vào giải quyết các bài toán trong thực tế đặt ra. Bài toán xác định chỉ số ổn định
trong của đồ thị cho trước là một vấn đề các nhà khoa học quan tâm vì nó có
nhiều ứng dụng trong khoa học và kỹ thuật. Vì bài toán này là một bài toán
NPC, cho nên các nhà khoa học tập trung vào việc phân lớp bài toán này trong
các lớp đồ thị đặc biệt với hy vọng có thể giải được chúng trong thời gian đa
thức trong các lớp đồ thị đặc biệt này.
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. 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.

1


- Ứ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].
- Các bài toán NPC
- Bài toán xác định chỉ số ổn định trong của một số đồ thị đặc biệt: đồ thị

lưỡng phân, hai phía, phẳng.
- Tìm hiểu ngôn ngữ lập trình để cài đặt thuật toán, viết phần mềm để
thực hiện tìm luồng lớn nhất trong đồ thị.
4. Phạm vi nghiên cứu
Đề tài tập trung đi nghiên cứu lý thuyết là nội dung bài báo [6] vấn đề
xác định chỉ số ổn định trong lớn nhất của đồ thị lưỡng phân.
Áp dụng các kiến thức của lý thuyết độ phức tạp dựa trên máy tính Turing
tất định và không tất định để xác định tập ổn định trong lớn nhất trong các lớp
đồ thị đặc biệt.
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

2


- 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.

3


CHƯƠ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

4


mộ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


- 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.

5


1.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.

Hình 1.1 Hình ảnh minh họa máy Turing tất định

Một chương trình cho máy Turing tất định gồm các thông tin:

6


Mộ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à q Y 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à q Y
hoặc qN, quá trình tính toán kết thúc. Mặt khác nếu thuộc Q − {q Y, 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 .

7


Dờ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 qQ-{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):

8


q

0

1

b

q0

(q0, 0,+1)

(q0, 1,+1)

(q1, b,-1)


q1

(q2, b,-1)

(q3, b,-1)

(qN, b,-1)

q2

(qY, b,-1)

(qN, b,-1)

(qN, b,-1)

q3

(qN, b,-1)

(qN, b,-1)

(qN, b,-1)

Bảng 1.1: Giá trị của (q,s)
Quá trình thực hiện sẽ trả ra trạng thái, vị trí đầu đọc ghi, nội dung của ô
không trống trong băng trước và sau mỗi bước:

Hình 1.2 Mô tả hoạt động của máy Turing tất định
Quá trình tính toán kết thúc sau 9 bước, ở trạng thái q N , vì vậy câu trả

lời là “no” .
Lớp P

9


Thờ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:
TM : Z+ → Z+
TM (n) = max {m: có một x  *, với |x| = n, quá trình thực hiện của M
trên đầu vào x chiếm thời gian là m}.
Một máy Turing M được gọi là đa thức nếu như tồn tại một đa thức P để
∀nZ + , TM (n) ≤ p(n).

Đị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:

10


Instance: 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 :
ઠ: (Q − {qY, qN}) × T → Q × T × {-1, +1}
Ngoài ra, có thêm một bộ đoán nhận có đầu chỉ ghi, ghi lại các đoán
nhận sẽ được sử dụng.
Đây chỉ là một thiết bị định nghĩa trên lý thuyết chứ không phải phương
thức thực tế giải bài toán quyết định.

Hình 1.3 Hình ảnh minh họa máy Turing không tất định (NDTM)

11


Má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 x0* được đặt vào các ô từ 1 đến
|x| của băng.
Hoạt động tương tự như máy Turing tất định, nhưng NDTM có 2 giai

đoạn riêng biệt:
Giai đoạn phỏng đoán: Trước khi quá trình tính toán bắt đầu, được thực
hiện bởi cơ chế phỏng đoán và đầu phỏng đoán chỉ viết lên các ô đánh –1, 2…mỗi ô một kí hiệu nào đó thuộc * cho đến khi dừng lại ta có một từ u0*
trên phía trái của phần băng chứa Input (gọi là từ được dự đoán) và giai đoạn
phỏng đoán hoàn thành.
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.

12


DTM

NDTM

q
q /q

Y

N

q

N

q

Y

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
Lớp NP
Ngôn ngữ đoán nhận bởi NDTM:
Kí hiệu là LM = {w0* 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:
TM(n)= max{t x LM và x=n, tM(x)= t}

13



Đị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]

14


Đị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: D1D2 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 1  2 và 2  3 thì ta cũng sẽ có 1  3.
Ví dụ 1.3: 1 là bài toán chu trình Hamilton
Instance: Cho đồ thị vô hướng G = (V,E)

15


Question: 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.

16


2. 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

 2 thì bài toán 2 cũng là NPC. [1]
Chứng minh:
Ta cần chứng tỏ mọi ngôn ngữ L thuộc lớp NP đều có thể dẫn về được
ngôn ngữ tương ứng của bài toán 2 trong thời gian đa thức.
Thật vậy, theo giả thiết, 1 là bài toán NPC nên mọi ngôn ngữ L thuộc
lớp NP đều dẫn về được ngôn ngữ tương ứng của bài toán 1 trong thời gian
đ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

17


×