Tải bản đầy đủ (.ppt) (48 trang)

Thuật toán lập trình phần 12

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 (148.28 KB, 48 trang )

NP-Ñaày Ñuû

13.11.2004

Ch. 12: NP-Complete

1


Vài khái niệm cơ bản
ª

ª

Bài toán
– các tham số
– các tính chất mà lời giải cần phải thỏa mãn
Một thực thể (instance) của bài toán là bài toán mà các tham số có
trò cụ thể.

13.11.2004

Ch. 12: NP-Complete

2


Hình thức hóa khái niệm bài toán
ª

Ví dụ: bài toán SHORTEST-PATH là


– “không hình thức”: bài toán tìm đường đi ngắn nhất giữa hai
đỉnh cho trước trong một đồ thò vô hướng, không có trọng số G =
(V, E).
– “hình thức”:
° Một thực thể của bài toán là một cặp ba gồm một đồ thò cụ
thể và hai đỉnh cụ thể.
° Một lời giải là một dãy các đỉnh của đồ thò .
° Bài toán SHORTEST-PATH là quan hệ kết hợp mỗi thực
thể gồm một đồ thò và hai đỉnh với một đường đi ngắn nhất
(nếu có) trong đồ thò nối hai đỉnh:
SHORTEST-PATH ⊆ I × S

13.11.2004

Ch. 12: NP-Complete

3


Bài toán trừu tượng
ª

Đònh nghóa: một bài toán trừu tượng Q là một quan hệ nhò phân trên
một tập I, được gọi là tập các thực thể (instances) của bài toán, và
một tập S, được gọi là tập các lời giải của bài toán:
Q⊆I×S

13.11.2004

Ch. 12: NP-Complete


4


Bài toán quyết đònh
ª

Một bài toán quyết đònh Q là một bài toán trừu tượng mà quan hệ
nhò phân Q là một hàm từ I đến S = {0, 1}, 0 tương ứng với “no”, 1
tương ứng với “yes”.

ª

Ví dụ: bài toán quyết đònh PATH là
Cho một đồ thò G = (V, E), hai đỉnh u, v ∈ V, và một số nguyên
dương k.
Đặt i = 〈G, u, v, k〉, một thực thể của bài toán quyết đònh PATH,
– PATH(i) = 1 (yes) nếu tồn tại một đường đi giữa u và v có chiều
dài ≤ k
– PATH(i) = 0 (no) trong các trường hợp khác.

13.11.2004

Ch. 12: NP-Complete

5


Bài toán tối ưu
ª

ª

Một bài toán tối ưu là một bài toán trong đó ta cần xác đònh trò lớn
nhất hay trò nhỏ nhất của một đại lượng.
Đối tượng của lý thuyết NP-đầy đủ là các bài toán quyết đònh, nên
ta phải ép (recast) các bài toán tối ưu thành các bài toán quyết đònh.
Ví dụ: ta đã ép bài toán tối ưu đường đi ngắn nhất thành bài toán
quyết đònh PATH bằng cách làm chận k thành một tham số của bài
toán.

13.11.2004

Ch. 12: NP-Complete

6


Mã hoá (encodings)
ª

ª

Để một chương trình máy tính giải một bài toán trừu tượng thì các
thực thể của bài toán cần được biểu diễn sao cho chương trình máy
tính có thể đọc và “hiểu” chúng được.
Ta mã hóa (encode) các thực thể của một bài toán trừu tượng để
một chương trình máy tính có thể đọc chúng được.
– Ví dụ: Mã hoá tập N = {0, 1, 2, 3, 4,...} thành tập các chuỗi
{0, 1, 10, 11, 100,...}. Trong mã hoá này, e(17) = 10001.
– Mã hóa một đối tượng đa hợp (chuỗi, tập, đồ thò,...) bằng cách

kết hợp các mã hóa của các thành phần của nó.

13.11.2004

Ch. 12: NP-Complete

7


Mã hoá (tiếp)
ª
ª

ª

Một bài toán cụ thể là một bài toán mà tập các thực thể của nó là
tập các chuỗi nhò phân.
Một giải thuật giải một bài toán cụ thể trong thời gian O(T(n)) nếu,
khi đưa nó một thực thể i có độ dài n = | i | , thì nó sẽ cho ra lời giải
trong thời gian O(T(n)).
Một bài toán cụ thể là có thể giải được trong thời gian đa thức nếu
tồn tại một giải thuật giải nó trong thời gian O(nk) với một hằng số k
nào đó.

13.11.2004

Ch. 12: NP-Complete

8



Lớp P
ª

Đònh nghóa: Lớp P (complexity class P) là tập các bài toán quyết
đònh cụ thể có thể giải được trong thời gian đa thức.

13.11.2004

Ch. 12: NP-Complete

9


Bài toán trừu tượng và bài toán cụ thể
ª

Ta dùng mã hoá để ánh xạ các bài toán trừu tượng đến các bài toán
cụ thể.
– Cho một bài toán quyết đònh trừu tượng Q, Q ánh xạ một tập các
thực thể I đến {0, 1}, ta có thể dùng một mã hóa e : I → {0, 1}∗
để sinh ra một bài toán quyết đònh cụ thể tương ứng, ký hiệu
e(Q).
Mã hóa e phải thõa điều kiện
° Nếu Q(i) ∈ {0, 1} là lời giải cho i ∈ I, thì lời giải cho thực
thể e(i) ∈ {0, 1}∗ của bài toán quyết đònh cụ thể e(Q) cũng là
Q(i).
Q
I


{0, 1}

e(Q)
{0, 1}*

13.11.2004

Ch. 12: NP-Complete

10


Các mã hoá
ª

ª

Một hàm f : {0, 1}∗ → {0, 1}∗ là có thể tính được trong thời gian đa
thức nếu tồn tại một giải thuật thời gian đa thức A sao cho, với mọi
input x ∈ {0, 1}∗ , A cho ra output là f(x).
Cho I là một tập các thực thể của một bài toán, ta nói rằng hai mã
hoá e1 và e2 là có liên quan đa thức nếu tồn tại hai hàm có thể tính
được trong thời gian đa thức f12 và f21 sao cho với mọi i ∈ I ta có
f12(e1(i)) = e2(i) và f21(e2 (i)) = e1(i).

13.11.2004

Ch. 12: NP-Complete

11



Liên quan giữa các mã hóa
ª




ª
ª

Lemma 36.1
Cho Q là một bài toán quyết đònh trừu tượng trên một tập các thực
thể I, và cho e1 và e2 là các mã hoá trên I có liên quan đa thức

e1(Q) ∈ P ⇔ e2(Q) ∈ P.
Theo Lemma trên, “độ phức tạp” của một bài toán trừu tượng mà
các thực thể của nó được mã hóa trong cơ số 2 hay 3 thì như nhau.
Yêu cầu: sẽ chỉ dùng các mã hóa mà liên quan đa thức với “mã hóa
chuẩn”.

13.11.2004

Ch. 12: NP-Complete

12


Mã hóa chuẩn (standard encoding)
ª


Mã hóa chuẩn
ánh xạ các thực thể vào các “chuỗi có cấu trúc” trên tập các ký tự
Ψ = {0, 1, − , [, ], (, ), ,}.
Các chuỗi có cấu trúc (structured string) được đònh nghóa đệ quy. Ở
đây chỉ trình bày vài ví dụ
– Số nguyên 13 được biểu diễn bởi chuỗi có cấu trúc 1101.
– Số nguyên −13 được biểu diễn bởi chuỗi có cấu trúc −1101.
– Chuỗi [1101] là một chuỗi có cấu trúc có thể dùng làm “tên” (ví
dụ, cho một phần tử của một tập, một đỉnh trong một đồ thò,...)

13.11.2004

Ch. 12: NP-Complete

13


Mã hóa chuẩn (tiếp)
– Tập {a, b, c, d} có thể được biểu diễn bởi chuỗi có cấu trúc
([0], [1], [10], [11])
– Đồ thò

có thể được biểu diễn bởi chuỗi có cấu trúc
(([0], [1], [10]), (([0], [1]), ([1], [10])))
tập các đỉnh
ª

tập các cạnh


Mã hóa chuẩn của một đối tượng D được ký hiệu là <D>.

13.11.2004

Ch. 12: NP-Complete

14


Một khung ngôn ngữ hình thức
ª
ª

ª

Một bảng chữ cái Σ là một tập hữu hạn các ký hiệu.
Một ngôn ngữõ L trên Σ là một tập các chuỗi tạo bởi các ký hiệu từ
Σ.
– Ví dụ: nếu Σ = {0, 1}, thì L = {10, 11, 101, 111, 1011,...} là
ngôn ngữ của các biểu diễn nhò phân của các số nguyên tố.
– Chuỗi rỗng được ký hiệu là ε, ngôn ngữ rỗng được ký hiệu là
∅.
Ngôn ngữ của tất cả các chuỗi trên Σ được ký hiệu là Σ∗ .
– Ví dụ: nếu Σ = {0, 1}, thì Σ∗ = {ε, 0, 1, 00, 01, 10, 11, 000,…} là
tập tất cả các chuỗi nhò phân.
– Mỗi ngôn ngữ L trên Σ đều là một tập con của Σ∗ .
– Hợp và giao của cá
L c ngôn ngữ được đònh nghóa giống như trong
lý thuyết tập hợp
– Phần bù của L là = Σ∗ − L .


13.11.2004

Ch. 12: NP-Complete

15


Bài toán quyết đònh và ngôn ngữ tương ứng
ª

Đồng nhất một bài toán quyết đònh với một ngôn ngữ :
– Tập các thực thể cho bất kỳ bài toán quyết đònh Q nào là tập Σ∗ .
Vì Q là hoàn toàn được đặc trưng bởi tập của tất cả các thực thể
nào của nó mà lời giải là 1 (yes), nên có thể xem Q như là một
ngôn ngữ L trên Σ = {0, 1}, với
L = {x ∈ Σ∗ : Q(x) = 1}

13.11.2004

Ch. 12: NP-Complete

16


Bài toán quyết đònh và ngôn ngữ tương ứng (tiếp)
– Ví dụ: bài toán quyết đònh PATH là ngôn ngữ
{〈G, u, v, k〉 : G = (V, E) là một đồ thò vô hướng,
u, v ∈ V,
k ≥ 0 là một số nguyên, và tồn tại một

đường đi giữa u và v trong G mà chiều dài ≤ k}
Ta viết:
PATH = {〈G, u, v, k〉 : G = (V, E) là một đồ thò vô hướng,
u, v ∈ V,
k ≥ 0 là một số nguyên, và tồn tại một
đường đi giữa u và v trong G mà chiều
dài
≤ k}

13.11.2004

Ch. 12: NP-Complete

17


Ngôn ngữ và giải thuật
ª
ª
ª
ª

Một giải thuật A chấp nhận (accept) một chuỗi x ∈ {0, 1}∗ nếu, với
input là x, A outputs A(x) = 1.
Một giải thuật A từ chối (reject) một chuỗi x ∈ {0, 1}∗ nếu A(x) = 0.
Ngôn ngữ được chấp nhận bởi một giải thuật A là tập các chuỗi L =
{x ∈ {0, 1}∗ : A(x) = 1}.
Một ngôn ngữ L được quyết đònh bởi một giải thuật A nếu
– mọi chuỗi nhò phân trong L được chấp nhận bởi A và
– mọi chuỗi nhò phân không trong L được từ chối bởi A.


13.11.2004

Ch. 12: NP-Complete

18


Chấp nhận và quyết đònh ngôn ngử trong thời gian đa thức
ª


ª

Một ngôn ngữ L được chấp nhận trong thời gian đa thức bởi một
giải thuật A nếu
1. nó được chấp nhận bởi A và nếu
2. có một hằng số k sao cho với mọi chuỗi x ∈ L có độ dài n thì A
chấp nhận x trong thời gian O(nk).
Một ngôn ngữ L được quyết đònh trong thời gian đa thức bởi một
giải thuật A nếu có một hằng số k sao cho với mọi chuỗi x ∈ {0, 1}∗
có chiều dài n thì A quyết đònh chính xác x có trong L hay không
trong thời gian O(nk).

13.11.2004

Ch. 12: NP-Complete

19



Lớp P
ª

ª


Một đònh nghóa khác của lớp P:
P = {L ⊆ {0, 1}∗ : tồn tại một giải thuật A quyết đònh L trong thời
gian đa thức}
Đònh lý 36.2
P = {L : L được chấp nhận bởi một giải thuật chạy trong thời gian đa
thức}

13.11.2004

Ch. 12: NP-Complete

20


Chứng thực trong thời gian đa thức
ª

ª
ª


Bài toán chu trình Hamilton
Một chu trình hamilton của một đồ thò vô hướng G = (V, E) là một

chu trình đơn chứa mỗi đỉnh trong V đúng một lần.

Một đồ thò được gọi là hamilton nếu nó chứa một chu trình
hamilton, và được gọi là không hamilton trong các trường hợp khác.
Bài toán chu trình Hamilton là “Đồ thò G có một chu trình hamilton
không?” Bài toán này dưới dạng một ngôn ngữ hình thức:
HAM-CYCLE = {〈G〉 : G là một đồ thò hamilton}.

13.11.2004

Ch. 12: NP-Complete

21


Chứng thực trong thời gian đa thức (tiếp)
ª

Làm thế nào để một giải thuật quyết đònh được ngôn ngữ HAMCYCLE?
– Cho một thực thể <G> của bài toán, a possible decision
algorithm liệt kê tất cả các giao hoán của các đỉnh của G và
kiểm tra mỗi giao hoán có là một chu trình hamilton hay không.
– Thời gian chạy của giải thuật trên?
° Giả sử mã hóa một đồ thò bằng ma trận kề của nó, thì số các
đỉnh của nó là m = Ω(√ n), với n = |<G>| là chiều dài của mã
hóa của G.
° Có m! giao hoán của các đỉnh nên thời gian chạy là
n
Ω(m!) = Ω(√ n!) = Ω(2 )
Giải thuật không chạy trong thời gian đa thức.


13.11.2004

Ch. 12: NP-Complete

22


Kiểm tra trong thời gian đa thức
ª

Bài toán chu trình Hamilton (tiếp)
Xét một bài toán đơn giản hơn: cho một đường đi (một danh sách
các đỉnh) trong một đồ thò G = (V, E), kiểm tra xem nó có phải là
một chu trình hamilton hay không.
– Giải thuật:
° kiểm tra các đỉnh trên đường đi đã cho có phải là một giao
hoán của các đỉnh của V hay không.
° kiểm tra các cạnh trên đường đi có thực sự là các cạnh của E
và tạo nên một chu trình hay không.
– Thời gian chạy: O(n2).

13.11.2004

Ch. 12: NP-Complete

23


Giải thuật chứng thực

ª

ª


Ta đònh nghóa một giải thuật chứng thực (verification algorithm) là
một giải thuật A có hai đối số (two-argument algorithm), trong đó
một đối số là một chuỗi input thông thường x và đối số kia là một
chuỗi nhò phân y, y được gọi là một chứng thư (certificate).
Ngôn ngữ được chứng thực bởi một giải thuật chứng thực A là
L = {x ∈ {0, 1}∗ : tồn tại y ∈ {0, 1}∗ sao cho Α(x, y) = 1}.
– Ví dụ: Trong bài toán chu trình hamilton, chứng thư là danh
sách của các đỉnh trong chu trình hamilton.

13.11.2004

Ch. 12: NP-Complete

24


Lớp NP
ª





ª


Lớp NP (NP: “nondeterministic polynomial time”) là lớp các ngôn
ngữ có thể được chứng thực bởi một giải thuật thời gian đa thức.
Chính xác hơn:
Cho một ngôn ngữ L.
Ngôn ngữ L thuộc về NP

Tồn tại một giải thuật thời gian đa thức hai đối số A cùng với một
hằng số c sao cho
L = {x ∈ {0, 1}∗ : tồn tại một chứng thư y với độ dài |y | = O(|x |c) sao
cho A(x, y) = 1}.
Ta nói rằng giải thuật A chứng thực ngôn ngữ L trong thời gian đa
thức.

13.11.2004

Ch. 12: NP-Complete

25


×