You are on page 1of 60

CÔNG CỤ TOÁN CHO CNTT

CHƯƠNG 1

Giảng viên: Vũ Văn Thỏa


CHƯƠNG 1. MÁY TURING VÀ PHÂN LỚP
CÁC BÀI TOÁN
 Máy Turing
 Máy Turing không tiền định
 Độ phức tạp tính toán với máy Turing
 Phân lớp các bài toán

27/10/2023 CCT cho CNTT 2/53


1.1 Máy Turing
 Mô tả trực quan
 Định nghĩa máy Turing tiền định
 Kỹ thuật thiết kế máy Turing
 Một số dạng máy Turing
 Máy Turing phổ dụng

27/10/2023 CCT cho CNTT 3/53


1.1.1 Mô tả trực quan
 Cấu tạo của máy Turing (TM)

27/10/2023 CCT cho CNTT 4/107


Các bộ phận của máy Turing
 Một bộ nhớ vô hạn dạng một băng gồm nhiều ô (có
thể vô hạn hai phía).
 Một đầu đọc di chuyển trên băng.
 Một tập hữu hạn trạng thái (phân biệt 1 trạng thái
đầu và các trạng thái thừa nhận).
 Một hàm dịch chuyển: Với mỗi trạng thái của máy và
kí hiệu đọc được xác định:
- Một trạng thái tiếp theo
- Một kí hiệu được viết đè lên băng tại chỗ kí tự vừa đọc
- Một hướng dịch chuyển 1 ô của đầu đọc (sang trái hoặc phải)

27/10/2023 CCT cho CNTT 5/107


Hoạt động của máy Turing
- Khởi tạo:
Xâu vào được đặt trên băng, mọi ô khác đều trắng (kí
hiệu B), đầu đọc tại vị trí thứ nhất của xâu vào.

- Mỗi bước thực hiện:


• Đọc kí hiệu đối diện đầu đọc
• Ghi kí hiệu theo hàm dịch chuyển vào ô vừa đọc
• Dịch đầu đọc sang trái /phải 1 ô theo hàm dịch chuyển
• Đổi sang trạng thái do hàm dịch chuyển chỉ định

27/10/2023 CCT cho CNTT 6/107


1.1.2 Định nghĩa máy Turing tiền định

- Máy Turing là một bộ-7: M = (Q, , , q0, B, F, ):


 Q là tập hữu hạn các trạng thái
  là bộ chữ
    là bộ chữ vào
 q0  Q là trạng thái đầu
 F  Q là tập các trạng thái thừa nhận (trạng thái
cuối)
 B  -  là kí hiệu trắng
  : QxQxx{L, R} là hàm dịch chuyển, L: dịch trái,
R: dịch phải.
27/10/2023 CCT cho CNTT 7/107
 Hình trạng hay cấu hình  xâu 1q2, 1, 2 
, q Q.

Một hình trạng chứa các thông tin :


 Trạng thái q
 Nội dung trên băng 1, 2

 Vị trí của đầu đọc (tại vị trí đầu của 2)

27/10/2023 CCT cho CNTT 8/107


Chú ý :
- Cho M tức là xác định được bộ 7 trên. Hàm
chuyển  thường cho dưới dạng bảng. Trạng
thái đầu q0 được viết là q0 ; trạng thái thừa
nhận có thêm tiếp đầu ngữ *.

- Mỗi máy Turing (TM)  một thuật toán


 Xây dựng TM  Xây dựng thuật toán.

27/10/2023 CCT cho CNTT 9/107


Ví dụ 1 :
Cho máy Turing M= (, Q, , , q0, B, F), với = {a,b,c},
= {B}, Q= {q0, q1, q2 }, F= {q2} ;  được cho dưới
dạng bảng như sau :

a b c B
q0 (q0, a, R) (q0, b, R) (q1, c, R) (q0, B, R)
q1 (q0, a, R) (q0, b, R) (q2, c, R)
*
q2

27/10/2023 CCT cho CNTT 10/107


a) Giải thích hoạt động của M

 (q0, a) = (q0, a, R): Gặp a, thay a bởi a,


chuyển q0 và dịch phải.
 (q0, b) = (q0, b, R): Gặp b, thay b bởi b,
chuyển q0 và dịch phải.
 (q0, c) = (q1, c, R): Gặp c, thay c bởi c,
chuyển q1 và dịch phải.
 (q0, B) = (q0, B, R): Gặp B, thay B bởi B,
chuyển q0 và dịch phải.
27/10/2023 CCT cho CNTT 11/107
a) Giải thích hoạt động của M

 (q1, a) = (q0, a, R): Gặp a, thay a bởi a, chuyển q 0 và


dịch phải.
 (q1, b) = (q0, b, R): Gặp b, thay b bởi b, chuyển q 0
và dịch phải.
 (q1, c) = (q2, c, R): Gặp c, thay c bởi c, chuyển q 2 và
dịch phải.
 (q1, B): Dừng và không thừa nhận Input.
 (q2, a), (q2, b), (q2, c), (q2, B): Dừng và thừa
nhận Input.
27/10/2023 CCT cho CNTT 12/107
b) Mô tả quá trình thực hiện của M trên các xâu và xâu
nào được M thừa nhận (TEST chương trình):

(i) x1 = bacca:
q0bacca  bq0acca  baq0cca  bacq1ca 
baccq2a: M dừng và thừa nhận x1.
(ii) x2 = baa:
q0baa  bq0aa  baq0a  baaq0B  baaBq0B
....: M không dừng và không thừa nhận x2.

27/10/2023 CCT cho CNTT 13/107


Nhận xét:

Máy Turing M thường được thiết kế để tính giá


trị hàm M(x), với x là xâu input.

Þ Với mọi x  {Tập xác định của M} thì M luôn


dừng và thừa nhận x;

Giá trị còn lại trên băng là giá trị M(x) cần tính.

27/10/2023 CCT cho CNTT 14/107


1.1.3 Kỹ thuật thiết kế máy Turing
Các bước thực hiện:
 Xác định Input, Output ;
 Mô tả thuật toán
 Cài đặt thuật toán
 Kiểm tra thuật toán
 Đánh giá thuật toán

27/10/2023 CCT cho CNTT 15/107


Ví dụ 2 :

Thiết kế máy Turing kiểm tra một xâu nhị phân x


khác rỗng có chứa một số chẵn kí tự 1 hay
không?
Nếu x chứa một số chẵn kí tự 1 thì giá trị trên
băng là 1, ngược lại, giá trị trên băng là 0.

27/10/2023 CCT cho CNTT 16/107


Giải
Máy Turing M kiểm tra xâu nhị phân x   sẽ hoạt động như
sau: q0 là trạng thái đầu, đầu đọc ghi ở ô đầu của input.
Bước 1:
 Nếu gặp 0 thì thay thế 0 bởi B, dịch phải;
 Nếu gặp 1 thì thay 1 bởi B và chuyển bước 2.

 Nếu gặp B thì thay thế B bởi 1 và chuyển bước 3.


Bước 2:
 Nếu gặp 0 thì thay thế 0 bởi B, dịch phải;
 Nếu gặp 1 thì thay 1 bởi B và chuyển bước 1.
 Nếu gặp B thì thay thế B bởi 0 và chuyển bước 3.

Bước 3: Dừng và kết quả là giá trị còn lại trên băng.

27/10/2023 CCT cho CNTT 17/107


Bảng hàm chuyển :

Trạng Ký hiệu băng của input


thái 0 1 B

q0 (q0, B, R) (q1, B, R) (q2, 1, L)


q1 (q1, B, R) (q0, B, R) (q2, 0, L)
q2
*

27/10/2023 CCT cho CNTT 18/107


Kết luận:

Máy Turing M = (, Q, , , q0, B, F):


  = {0, 1},
 Q = {q0, q1, q2},
  = {0, 1, B},
 F = {q2}
  được cho bởi bảng trên.

27/10/2023 CCT cho CNTT 19/107


Kiểm tra hoạt động của M đã thiết kế :

(i) x = 10101010  M(x) = 1


(ii) x = 11100000  M(x) = 0

27/10/2023 CCT cho CNTT 20/107


1.1.4 Một số dạng máy Turing

- Máy Turing lưu trữ thông tin


- Máy Turing với băng gồm nhiều rãnh (Multiple
Tracks)
- Các dạng mở rộng của máy Turing:
 Máy Turing có băng vô hạn hai đầu
 Máy Turing nhiều băng

27/10/2023 CCT cho CNTT 21/107


1.1.5 Máy Turing phổ dụng
Khái niệm
- Cho máy Turing M. Với mỗi input x, khi thực hiện M
cho output M(x).
- M có thể coi như phần mềm (chương trình) để giải
quyết một bài toán cụ thể.

27/10/2023 CCT cho CNTT 22/107


Hình minh họa:

27/10/2023 CCT cho CNTT 23/107


Khái niệm máy Turing phổ dụng

- Máy Turing U gọi là máy Turing phổ dụng nếu


U có thể mô phỏng mọi máy Turing M khác :
" M,  input x  U(M, x) = M(x)

- U có thể coi như nền phần cứng, trên đó có


thể thực hiện mọi thuật toán (chương trình).

27/10/2023 CCT cho CNTT 24/107


Hình ảnh minh họa U:

27/10/2023 CCT cho CNTT 25/107


Mô hình máy Turing phổ dụng
- Bảng chữ của máy Turing U : {0, 1}
- Input của máy Turing U gồm:
+ Mô tả hàm chuyển của M
+ Nội dung băng khởi tạo của M
- Cấu tạo của máy Turing U gồm một số băng:
+ Băng mô tả M
+ Băng chứa nội dung băng của M
+ Băng trạng thái của M, …

27/10/2023 CCT cho CNTT 26/107


Hình ảnh minh họa

27/10/2023 CCT cho CNTT 27/107


Nội dung cần thực hiện mã hóa thành
các xâu nhị phân:
- Mã hóa các kí hiệu của M:

27/10/2023 CCT cho CNTT 28/107


Mã hóa trạng thái của M:

27/10/2023 CCT cho CNTT 29/107


Mã hóa sự di chuyển đầu đọc-ghi:

27/10/2023 CCT cho CNTT 30/107


 Máy Turing M sẽ được mã hóa bởi một xâu
nhị phân dạng:

27/10/2023 CCT cho CNTT 31/107


1.2 Máy Turing không tiền định
Khái niệm
- Máy Turing không tiền định (NTM) là máy Turing
(TM) có thể xảy ra sự thay đổi trạng thái được lựa
chọn bởi một hàm f (của cấu hình TM) và được thực
hiện bởi một bộ điều khiển d.

- So với máy Turing tiền định, NTM chỉ khác bởi hàm
chuyển : Qx  (Qxx{L, R}   (q, x) thì (q, x)
không duy nhất mà là một tập hợp hữu hạn các lựa
chọn tùy thuộc vào Input x.

27/10/2023 CCT cho CNTT 32/107


So sánh TM và NTM:
- Máy TM (tiền định) M thừa nhận x  M(x) = yes;
- NTM-M với bộ điều khiển d cho trước thừa nhận x
nếu Md(x) = yes.
- Với TM một quá trình thực hiện vô hạn trên xâu vào x
 x không được thừa nhận;
- Với NTM một quá trình thực hiện vô hạn trên xâu vào
x xảy ra với cả hai trường hợp: x không được thừa
nhận hoăc x được thừa nhận;
 Không có khái niệm bài toán quyết định được (tính
được) đối với NTM.

27/10/2023 CCT cho CNTT 33/107


Định lý
Mọi hàm tính được bởi một máy Turing không
tiền định đều có thể tính được bởi một máy
Turing tiền định.

27/10/2023 CCT cho CNTT 34/107


Ví dụ về NTM:

(1) Xét NTM giải bài toán trò chơi một người chơi,
chẳng hạn trò chơi xoay khối Rubic với các qui tắc đơn
giản. Ta có thể tính toán chiến lược chiến thắng với
thời gian hàm mũ (Vét cạn tất cả các thế).
(2) Xét NTM giải bài toán trò chơi hai người, chẳng hạn
trò chơi cờ quốc tế. Các TM xen kẽ (ATM) là sự biến
đổi của NTM được điều khiển bởi hai bộ điều khiển xen
kẽ (người chơi) L và R.
 Một xâu x được thừa nhận bởi ATM nếu tồn tại L mà
với mọi R có ML,R(x) = yes.

27/10/2023 CCT cho CNTT 35/107


Ví dụ 3:
a) Thiết kế máy Turing M thừa nhận ngôn ngữ {0 n1nn
 1}, nghĩa là M sẽ dừng ở trạng thái thừa nhận nếu
xâu input w có dạng 0n1n và dừng ở trạng thái không
thừa nhận nếu w không có dạng trên.
b) Mô tả quá trình hoạt động của M trên xâu input w 1 =
0011
c) Mô tả quá trình hoạt động của M trên xâu input w 2 =
0111.

27/10/2023 CCT cho CNTT 36/107


Ý tưởng:
Máy Turing M thừa nhận w = 0n1n sẽ hoạt động như sau: q0 là
trạng thái ban đầu, đầu đọc ghi ở ô đầu tiên của input.
Bước 1. Nếu gặp 0 thì thay thế 0 bởi B, chuyển sang bước 2.
Nếu gặp 1 hoặc B đầu tiên thì giữ nguyên ký tự, dịch phải,
dừng và không thừa nhận w.
Bước 2. Tìm vị trí phải nhất của 1. Nếu tìm được 1 thì thay 1 bởi
B, chuyển sang bước 3. Nếu không tìm được 1 thì dừng và
không thừa nhận w.
Bước 3. Tìm vị trí trái nhất của 0. Nếu tìm được thì thay 0 bởi B,
chuyển sang bước 1. Nếu không tìm được 0 thì chuyển bước 4.
Bước 4. Tìm vị trí phải nhất của 1. Nếu tìm được thì giữ nguyên
ký tự, dịch phải, dừng và không thừa nhận w. Nếu không tìm
được thì dừng và thừa nhận w.
27/10/2023 CCT cho CNTT 37/107
Bảng hàm chuyển :

0 1 B

 q0 (q1, B, R) (q5, 1, R) (q5 B, R)


q1 (q1, 0, R) (q1, 1, R) (q2,, B, L)
q2 (q5, 0, L) (q3, B, L) (q5, B, L)
q3 (q3, 0, L) (q3, 1, L) (q4, B, R)
q4 (q1, B, R) (q5, 1, L) (q6, B, R)
q5
*q6
27/10/2023 CCT cho CNTT 38/107
Xây dựng được máy Turing
M = (, Q, , , q0, B, F),
trong đó  = {0, 1},
Q = {q0, q1, q2, q3, q4, q5, q6},
 = {0, 1, B},
F = {q6} và  được cho bởi bảng trên.

27/10/2023 CCT cho CNTT 39/107


b) Mô tả quá trình hoạt động của M trên xâu input
w1 = 0011:
q00011  Bq1011  B0q111  B01q11  B011q1B 
B01q21  B0q31B  Bq301B  q3B01B  Bq401B 
BBq11B  BB1q1B BBq21B  Bq3BBB  BBq4BB
 BBBq6B
Kết luận: M dừng và thừa nhận w1.

27/10/2023 CCT cho CNTT 40/107


c) Mô tả quá trình hoạt động của M trên xâu
input w2 = 0111.
q00111  Bq1111  B1q111  B11q11 
B111q1B  B11q21B  B1q31B  Bq311B 
q3B11B  Bq411B  q5B11B: M dừng và không
thừa nhận w2.

27/10/2023 CCT cho CNTT 41/107


1.3 Độ phức tạp tính toán với máy Turing

1.3.1 Tiêu chuẩn đánh giá độ phức tạp:

 Thời gian tính toán


 Không gian tính toán

27/10/2023 CCT cho CNTT 42/107


1.3.2 Độ phức tạp với máy Turing
tiền định
Xét máy Turing tiền định M với bảng chữ .
- Thời gian tính toán: x*  quá trình tính toán
trên x thực hiện bởi M: x0=q0x  x1  …  xk (1)
 thời gian tính toán x là TM(x) = k.
Nếu không có (1) thì TM(x) không xác định.

- Không gian tính toán (số ô cần dùng trên băng –


dung lượng bộ nhớ): Hàm phức tạp theo không
gian của M là LM(x) = Max{xi, 1  i  k}.

27/10/2023 CCT cho CNTT 43/107


Định nghĩa các hàm phức tạp
- Hàm phức tạp theo thời gian của M là
TM(n) = Max{kx*, x= n và quá trình tính toán
của M trên x gồm k bước}.
- Hàm phức tạp theo không gian của M là
LM(n) = Max{ LM(x)  x*, x= n và M tính được
x}.
- M có độ phức tạp tính toán đa thức  tồn tại đa
thức p(n) sao cho TM(n)  p(n) với mọi n  0.
- M có độ phức tạp không gian đa thức  tồn tại đa
thức p(n) sao cho LM(n)  p(n) với mọi n  0.
27/10/2023 CCT cho CNTT 44/107
Ví dụ 4:
Cho  = {0, 1}. Xâu x* gọi là đối xứng  nếu
đọc x từ trái sang phải và từ phải sang trái là
như nhau.
Hàm f: *  * với f(x) = 1 nếu x đối xứng và f(x)
= 0 nếu x không đối xứng.
Xây dựng máy Turing M tính giá trị của hàm f(x)
và đánh giá độ phức tạp tính toán của M?

27/10/2023 CCT cho CNTT 45/107


Giải:
Máy Turing M sẽ kiểm tra kí tự ở bên trái nhất left
và kí tự ở bên phải nhất right của xâu vào x:
 Trường hợp 1:
Nếu có vị trí mà left  right thì f(x) = 0
 Trường hợp 2:

Nếu left = right tại mọi vị trí thì f(x) = 1

27/10/2023 CCT cho CNTT 46/107


Bảng hàm chuyển:

27/10/2023 CCT cho CNTT 47/107


Máy Turing được xây dựng:
 Tập trạng thái Q = { q0, q1, q2, q3, q4, q5, q6, q7}
 Bộ chữ vào  = {0, 1}
 Bộ chữ  =   {B}
 Trạng thái đầu q0
 F = {q7}
 Hàm chuyển  như trên.

27/10/2023 CCT cho CNTT 48/107


Đánh giá độ phức tạp:
-Có
TM(n)  (n +1)+ n)+ (n + n-1) + (n-2) + ... ≤ 2n2
 TM(n) = O(n2);

- Có LM(n) = n + 1.
 LM(n) = O(n)

27/10/2023 CCT cho CNTT 49/107


1.3.3 Độ phức tạp với máy Turing
không tiền định
Xét máy Turing không tiền định NTM.
- Thời gian tính toán của NTM trên xâu vào x là:
số bước của quá trình thực hiện ngắn nhất
thừa nhận x nếu x là xâu được thừa nhận.

- Hàm phức tạp theo thời gian của máy Turing


không tiền định NTM là
TNTM(n) = Max{kx*, x= n và quá trình tính
toán của NTM trên x gồm k bước}.
27/10/2023 CCT cho CNTT 50/107
Độ phức tạp theo thời gian
- Một máy Turing không tiền định NTM là đa thức 
hàm phức tạp theo thời gian của NTM bị chặn trên
bởi một đa thức:
TNTM(n) ≤ p(n),  n ≥ 0 và p(n) là đa thức của n.
- Nhận xét:
Đối với máy Turing tiền định không có quá trình vô
hạn  TM(n) được đánh giá trên mọi xâu vào x không
phụ thuộc x được thừa nhận hay không.
Đối với máy Turing không tiền định  TM(n) được
đánh giá chỉ trên các xâu được thừa nhận.
27/10/2023 CCT cho CNTT 51/107
1.4 Phân lớp các bài toán
Xét tập hợp các bài toán.
- Bài toán bất kỳ có thể thuộc một trong hai loại: Giải
được bằng máy tính và Không giải được bằng máy
tính:
• Bài toán không giải được bằng máy tính  Không tồn tại
máy Turing để giải nó.
• Ví dụ: Bài toán tính dừng của chương trình khi thực hiện với
mọi dữ kiệu vào x là bài toán không giải được bằng máy tính
- Trong mục này chỉ xét tập hợp các bài toán giải được
bằng máy tính, tức là các bài toán có thể xây dựng
máy Turing để giải chúng.

27/10/2023 CCT cho CNTT 52/107


1.4.1 Lớp P
- Lớp P là lớp các bài toán giải được (quyết định
được) bởi một máy Turing tiền định đa thức.
- Một hàm f tính được với thời gian đa thức nếu có
một máy Turing tiền định đa thức tính được f.
- Cho hai bài toán L1  1* và L2  2*, với 1 và 2
là tập con của ∑.
- L1 gọi là rút gọn về L2 ký hiệu L1  L2 nếu tồn tại
hàm f : *  * sao cho f là tính được theo thời gian
đa thức và f(x)  L2  xL1 (Hình 1)

27/10/2023 CCT cho CNTT 53/107


Hình 1: Hình ảnh minh họa L1  L2

27/10/2023 CCT cho CNTT 54/107


1.4.2 Lớp NP
- Lớp NP là lớp các bài toán giải được (quyết định
được) bởi một máy Turing không tiền định đa thức.

Định lý:
Cho bài toán L  NP. Tồn tại một máy Turing tiền định
M và đa thức p(n) sao cho M giải được (quyết định
được) L với hàm phức tạp theo thời gian  2p(n).

27/10/2023 CCT cho CNTT 55/107


Cấu trúc của lớp NP
- Lớp tương đương đa thức C1 là ở dưới lớp
tương đương C2 (ký hiệu C1  C2) nếu tồn tại
một biến đổi đa thức chuyển bài toán bất kỳ
trong C1 về bài toán nào đó trong C2.

- P  NP

- Với mọi L1 P và mọi L2  L1  L2

27/10/2023 CCT cho CNTT 56/107


Một số dạng bài toán
- Một bài toán L là NP-khó nếu với mọi bài toán L’ NP
 L’  L.
- Một bài toán L là NP-đầy đủ (NPC) nếu L NP và L là
NP khó (Hình 2).
 Bài toán người du lịch (chu trình Hamilton), bài toán tô màu đồ
thị là các bài toán NP-đầy đủ.
 Một số phương pháp gần đúng giải bài toán NP-đầy đủ:
 Phương pháp xấp xỉ.
 Phương pháp ngẫu nhiên

27/10/2023 CCT cho CNTT 57/107


Hình 2:

27/10/2023 CCT cho CNTT 58/53


Thảo luận

27/10/2023 CCT cho CNTT 59/53


27/10/2023 CCT cho CNTT 60/107

You might also like