1. Trang chủ
  2. » Công Nghệ Thông Tin

bài giảng môn lý thuyết tính toán - ch2 thuật toán phổ dụng

29 507 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 602,41 KB

Nội dung

Máy Turing phổ dụng Mô phỏng máy tính bằng máy Turing Mô hình hoạt động của máy tính : - Vùng lưu trữ của máy tính bao gồm một dãy Có thể xem là vô hạn chúa các từ nhớ word, mỗi từ có

Trang 1

Chương 2 THUẬT TOÁN PHỔ DỤNG

2.1 Máy Turing phổ dụng

2.2 Vấn đề không tính được; Định lý Goedel

2.3 Tính khó của bài toán

1 Bài giảng về cơ sở tính toán tại địa chỉ http://www.cs.bu.edu/~lnd/toc/ (Chương 2)

2 Michael Sipser , Introduction to the Theory of Computation, 2nd edition, Couse

technology 2005 (Chương 3, 4, 5, 9)

3 Nguyễn Văn Ba Lý thuyết ngôn ngữ và tính toán NXB ĐHQG Hà nội, 2006 (Bài tập

1, 2 chương 5)

Trang 2

2.1 Máy Turing phổ dụng

Mô phỏng máy tính bằng máy Turing

Mô hình hoạt động của máy tính :

- Vùng lưu trữ của máy tính bao gồm một dãy (Có thể xem là vô hạn) chúa các từ nhớ (word), mỗi từ có một địa chỉ (adress)

- Chương trình của máy tính được lưu trong một số từ nhớ Mỗi từ nhớ biểu diễn một chỉ thị (lệnh) đơn giản giống như trong ngôn ngữ máy

Ví dụ, chỉ thị di chuyển dữ liệu từ một từ nhớ này đến một từ nhớ khác hoặc cộng chúng với nhau Cho phép « định địa chỉ gián tiếp »  một địa chỉ có thể chỉ đến một từ khác và dùng nội dung của từ nhớ đó làm địa chỉ của từ nhớ sẽ được áp dụng phép toán (Kiểu danh sách liên kết)

- Mỗi chỉ thị cần một số nhất định các từ nhớ và chỉ thay đổi giá trị cho tối đa 1 từ nhớ

- Các thanh ghi (Register) : là các từ nhớ có khả năng truy xuất nhanh

Trang 3

Thiết kế máy Turing mô phỏng máy tính :

Máy Turing M gồm 5 băng (Xem hình 1):

- Băng 1 (bộ nhớ) biểu diễn toàn bộ bộ nhớ của máy tính Địa chỉ và nội dung của từ nhớ được mã hóa nhị phân và sắp xếp xen kẽ nhau trên băng Các dấu ghi * và # để đánh dấu các điểm cuối của địa chỉ và nội dung

- Băng 2 là con đếm chỉ thị và lưu giữ một số nguyên nhị phân biểu diễn vị trí của bộ nhớ trên băng 1 Giá trị được lưu ở vị trí đó sẽ được diễn giải như chỉ thị máy tính tiếp theo cần được thực hiện

- Băng 3 giữ một địa chỉ bộ nhớ hoặc nội dung của địa chỉ đó sau khi địa chỉ đã được định vị trên băng 1

- Băng 4: lưu giữ nguyên liệu của máy tính

- Băng 5: băng dùng chung

Trang 4

Hình 1: Máy Turing mô phỏng máy tính

Trang 5

Máy Turing M thực hiện một chỉ thị của máy tính:

- Chép địa chỉ cần tìm vào băng 3

- So sánh với các địa chỉ trên băng 1 để tìm được địa chỉ cần tìm

- Chép nội dung của địa chỉ cần tìm vào băng 3 và di chuyển đến chỗ cần dùng nó

Máy Turing M mô phỏng chu trình chỉ thị (Instruction Cycle) :

- Tìm trên băng 1 một địa chỉ theo đúng con số chỉ thị trên băng 2 bằng cách: bắt đầu tại $ trên băng 1 và di chuyển sang phải, so mỗi địa chỉ với nội dung của băng 2

- Khi đã tìm ra địa chỉ của chỉ thị, M xem xét giá trị của nó: khi từ nhớ là một chỉ thị, một số bit đầu tiên biểu diễn hành động cần thực hiện và các bít còn lại là địa chỉ cần cho hành động đó

- Nếu chỉ thị đòi hỏi giá trị của một địa chỉ khác thì địa chỉ đó phải là thành phần của chỉ thị: M chép địa chỉ đó vào băng ba đánh dấu vị trí của chỉ thị nhờ rãnh thứ hai của băng 1 để quay về chỉ thị nếu cần M tìm địa chỉ bộ nhớ trên băng 1 và chép giá trị của nó vào băng 3 (đang chứa địa chỉ của bộ nhớ đó)

- M thực hiện chỉ thị (hoặc một phần chỉ thị) liên quan đến giá trị này:

a) Chép giá trị vào một địa chỉ khác

b) Cộng giá trị vào giá trị của một địa chỉ nào đó

c) Thực hiện một thao tác nhảy (pump): chỉ dẫn lấy chỉ thị tiếp theo từ địa chỉ có giá trị hiện được lưu trên băng ba, M chép băng ba vào băng hai và bắt đầu lại chu trình chỉ thị

- Sau khi thực hiện chỉ thị và xác định chỉ thị không phải là thao tác nhảy, M cộng 1 vào con đếm chỉ thị trên băng hai và bắt đầu lại chu trình chỉ thị

Trang 6

2.1.1 Các định nghĩa hình thức

1) Liệt kê các chuối nhị phân

- w là chuỗi nhị phân  1w được xem như một số nguyên nhị phân thứ i nào đó  w là chuỗi nhị phân thứ i, ký hiệu wi

- Các chuỗi nhị phân được sắp xếp theo thứ tự tăng của độ dài chuỗi, các chuỗi có cùng độ dài được sắp xếp theo thứ tự từ điển

Như vậy: Chuỗi rỗng  là chuỗi thứ 1, 0 là chuỗi thứ 2, 1 là chuỗi thứ 3, 00 là chuỗi thứ 4, 01 là chuỗi thứ 5, …

2) Bản mã cho máy Turing

Xét máy Turing M = (Q, {0, 1},  ,  , B, F):

- Q gồm r trạng thái : q1, q2, …, qr; q1 là trạng thái đầu, q2 là trạng thái cuối (thừa nhận)

-  gồm s ký hiệu băng X1, X2, …, Xs; X1 là ký hiệu 0, X2 là ký hiệu 1, X3 là ký hiệu trắng B, các

ký hiệu băng khác có thể được gán cho các số nguyên còn lại một cách tùy ý

- Hướng L ký hiệu là D 1 , hướng R là D2

- Hàm chuyển  (q i , X j ) = (q k , X l , D m )  bản mã chuyển vị C = 0i10j10k10l10m

Bản mã của M là tập hợp các bản mã của các chuyển vị theo một thứ tự nào đó và ngăn cách bởi cặp ký hiệu 1:

C111C211… Cn-111Cn Trong đó, Ci, 1  i  n, là bản mã cho một chuyển vị của M

Trang 7

Ví dụ 1 Cho máy Turing M = ({q1, q2, q3}, {0, 1}, {0, 1, B}, , q1, B, {q2}), trong đó

Bản mã của căp (M, w) là bản mã của M, theo sau là 111 và w

Ví dụ 2 Xét (M, w), trong đó M được cho trong ví dụ 1, còn w = 1011 Khi đó bản mã

của (M, w) là:

010010001010011000101010010011000100100101001100010001000100101111011

Trang 8

3) Ngôn ngữ chéo hóa

Máy Turing M là máy thứ i: Mi  bản mã của M là chuỗi nhị phân thứ i: wi

Xét wi bất kỳ Nếu wi không phải là bản mã có nghĩa của một máy Turing thì ta chọn Mi là máy Turing chỉ gồm 1 trạng thái và không có chuyển vị Như vậy, Mi là máy Turing sẽ dừng ngay lập tức trên mọi nguyên liệu  L(Mi) = 

Ngôn ngữ Ld là ngôn ngữ chéo hóa (Diagonalzation Language)  Ld= {wi wi  L(Mi)}

 Ld bao gồm tất cả các chuỗi w sao cho máy M với bản mã w không thừa nhận w

Xét bảng gồm các ô (i, j) nhận giá trị 1 nếu máy M i thừa nhận chuỗi w j và nhận giá trị 0 trong trường hợp ngược lại

Hàng i  vectơ đặc trưng (Characteristic Vector) của ngôn ngữ L(Mi)

Giá trị của đường chéo bảng cho biết máy Mi có thừa nhận wi hay không?

L d = {Phần bù giá trị của đường chéo gồm các ô (i, i)}

Kỹ thuật lấy bù đối với đường chéo  Kỹ thuật chéo hóa (Diagonaization)

Định lý 1 Ld không phải là ngôn ngữ kể được đệ qui  Không có máy Turing thừa nhận Ld

Chứng minh Giả sử Ld là L(M) của một máy Turing M  M = Mi tương ứng

wi

Nếu wi  Ld  Mi thừa nhận wi Theo định nghĩa, wi  Ld  Vô lý

Nếu wi  Ld  Mi không thừa nhận wi Theo định nghĩa, wi  Ld  Vô lý

Trang 9

4) Ngôn ngữ không kể được đệ qui

L là ngôn ngữ kể được đệ qui (RE-Recursively Enumerable Language)  L = L(M), với M

là một máy Turing nào đó

- Nếu nguyên liệu w  L  M dừng ở một trạng thái thừa nhận

- Nếu nguyên liệu w  L  M dừng ở một trạng thái không thừa nhận hoặc không dừng

5) Ngôn ngữ đệ qui

Ngôn ngữ L đệ qui  L = L(M), trong đó M là máy Turing nào đó thỏa mãn:

- Nếu w thuộc L thì M thừa nhận w (và vì thế sẽ dừng)

- Nếu w không thuộc L thì cuối cùng M sẽ dừng

là hàm bộ phận T-tính được  tồn tại máy Turing M sao cho:

- Với xâu vào w thuộc miền xác định của f thì M dừng ở một hình trạng mà f(w) đang ở trên băng

- Với xâu vào w không thuộc miền xác định của f thì M không dừng hoặc sẽ dừng và thông báo hàm là không xác định nhờ một giá trị qui ước trên băng

Hàm toàn phần f :  *   *

là hàm (toàn phần) T-tính được  tồn tại máy Turing M sao cho với mọi xâu vào w, M luôn dừng ở một hình trạng mà f(w) đang ở trên băng

Trang 10

Ví du Xây dựng một máy Turing M để thực hiện phép nhân hai số nguyên dương m, n

- Input : 0m10n - Output : B0mnB

- Hoạt động của M : Trước hết M viết số 1 sau 0m10n , sau đó chép m lần liên tiếp khối n số

0, mỗi lần chép 1 khối, loại bớt 1 số 0 trong khối 0m  10n10mn Cuối cùng cần xóa tiền tố

10n1  0mn còn lại trên băng là giá trị của hàm

- Thiết kế một chương trình con CHEP :

Hình trạng bắt đầu : #0m-i1q10n10in# Hình trạng kết thúc : #0m-i-11q50n10(i+1)n# Hàm chuyển :

- Hoàn thiện chương trình :

Cần biến đổi hình trạng đầu #q00m10n #  #B0m-110n1#

Trang 11

Cần biến đổi hình trạng #Bi 0m-i 1q50n10ni #  #Bi+10m-i-1q10n10n(i+1)# để bắt đầu lại chương trình con CHEP

Tại mỗi bước cần kiểm tra m = i  Nếu sai tiếp tục chương trình, nếu đúng thì xâu con

Trang 12

L  Bài toán

M  Thuật toán

L giải được (Dicidable)  L là ngôn ngữ đệ qui

L không giải được (Undicidable)  L không phải là ngôn ngữ đệ qui

Bài toán quyết định: Cho  là tập hợp các đối tượng nào đó và P là một tính chất (hoặc một quan hệ) trên  Có hay không một thủ tục hữu hiệu (thuật toán) để với mỗi x

 biết được x có tính chất P hay không ?

Ví dụ

1) Bài toán số nguyên tố: Xét tính chất nguyên tố trên tập các số tự nhiên Tồn tại

thuật toán để xác định số tự nhiên x có phải là số nguyên tố hay không (Chẳng hạn thuật toán Euclid)

2) Bài toán dừng: Một máy Turing đã cho là có dừng (tức là có một sự thực hiện

hữu hạn) với một xâu vào bất kỳ cho trước hay không ?

Trang 13

7) Ngôn ngữ phổ dụng (Universal language) và máy Turing phổ dụng (Universal Turing Machine)

Lu là ngôn ngữ phổ dụng  Lu là tập các chuỗi nhị phân mã hóa cặp (M, w), trong

đó M là máy Turing nào đó với bộ chữ cái nhị phân làm nguyên liệu, w là chuỗi nhị phân sao cho w  L(M) Như vậy, Lu là tập các chuỗi nhị phân biểu diễn một máy Turing M và một nguyên liệu được thừa nhận bởi M

Máy Turing U là máy Turing phổ dụng  Lu = L(U)

Như vậy, máy Turing phổ dụng U thừa nhận cả dữ liệu vào và các mô tả quá trình tính toán (thuật toán/chương trình)

Những máy tính đầu tiên có thể xem như là các phần cứng có thêm chương trình

Để thay đổi quá trình tính hàm có thể tiến hành bằng cách ngắt kết nối dây dẫn hoặc là xây dựng máy tính mới John von Neumanm đã đề xuất sử dụng thuật toán phổ dụng Turing Các hàm được tính bằng cách thức mô tả chúng (chương trình) như là một phần của dữ liệu vào sẽ thuận tiện hơn là thay đổi phần cứng

Trang 14

2.1.2 Các dạng máy Turing phổ dụng

Xét về mặt cấu tạo có các loai:

1) Máy Turing phổ dụng với băng vô hạn hai đầu

2) Máy Turing phổ dụng với nhiều băng vô hạn hai đầu

3) Máy Turing phổ dụng nhiều chiều

4) Máy Turing phổ dụng nhiều đầu đọc

Xét về mặt không gian: máy Turing phổ dụng nhỏ và lớn

Thiết kế máy Turing phổ dụng U:

Cho trước cặp (M, w), trong đó M là máy Turing và w L(M)

Máy Turing phổ dụng U gồm 4 băng:

- Băng thứ nhất lưu các chuyển vị cùng với w

- Băng thứ hai lưu băng được mô phỏng bởi M, tức là sử dụng khuôn dạng bản mã của

M, trong đó ký hiệu băng Xi được biểu diễn 0i và phân cách bởi 1

- Băng thứ ba lưu trạng thái của M, trong đó trạng thái qi được biểu diễn bởi 0i

- Băng thứ tư là băng chung

Xem hình 2 dưới đây:

Trang 15

Hình 2: Mô hình máy Turing phổ dụng

Trang 16

cả các ô nằm ngoài phần được dùng cho w đều giữ ký hiệu trắng của U

(3) Đặt 0, khởi trạng của M trên băng thứ ba và di chuyển đầu đọc-ghi ở băng hai của U đến ô đầu tiên cần mô phỏng

(4) Mô phỏng một bước chuyển của M: U tìm băng thứ nhất của nó một chuyển vị dạng 0i10j10k10l10msao cho 0i là trạng thái trên băng ba và 0j là ký hiệu băng của M bắt đầu tại vị trí trên băng hai đang được quét bởi U Chuyển vị này là chuyển vị mà tiếp theo M sẽ thực hiện U cần phải:

- Thay đổi nội dung của băng ba thành 0k (mô phỏng sự thay đổi trạng thái của M) bằng hai thao tác: Trước hết U thay tất cả các 0 trên băng ba thành ký hiệu trắng, sau đó chép 0k từ băng một vào băng

ba

- Thay 0i trên băng hai bằng 0l, tức là thay ký hiệu băng của M Nếu cần thêm bớt chỗ (i  l) sử dụng băng chung và kỹ thuật xê dịch

- Di chuyển đầu đọc-ghi trên băng hai về vị trí của 1 kế tiếp ở bên trái nếu m = 1 và ở bên phải nếu m

= 2 (U mô phỏng hướng chuyển của M)

(5) Nếu M không có chuyển vị khớp với trạng thái và ký hiệu băng được mô phỏng thì trong (4) sẽ không tìm được chuyển vị nào Do đó M dừng trong cấu hình được mô phỏng và U thực hiện đúng như vậy

(6) Nếu M chuyển vào một trạng thái thừa nhận của nó thì U thừa nhận cặp (M, w)

Trang 17

U thừa nhận cặp (M, w)  M thừa nhận w

Tính không giải được của ngôn ngữ phổ dụng:

Định lý 2 Lu là ngôn ngữ kể được đệ qui nhưng không đệ qui

Gọi R là lớp các hàm tính được toàn phần hoặc bộ phận Xét u  R là hàm phổ dụng Hàm u sẽ mô phỏng mọi hàm f  R với thời gian c2T và không gian S+c, trong đó

S, T > xlà không gian và thời gian tính f(x), c là độ dài của chương trình

Như vậy, u đòi hỏi phần đầu m của dữ liệu vào mx là danh sách các lệnh của máy Turing M và trạng thái khởi tạo của đầu đọc-ghi

Hàm u(mx) được thực hiện theo chu trình Mỗi chu trình mô phỏng một bước của M(x) Sau khi thực hiện bước thứ i của M(x), li là phần băng bên trái, ri là phần băng bên phải (kể từ đầu đọc-ghi) và si là trạng thái của đầu đọc Cấu hình của băng của u(mx) sau khi chu trình i là ti = limsiri Sau đó u quan sát m để tìm lệnh đáp ứng trạng thái si và chữ đầu tiên trong ri và biến đổi ti Khi M(x) dừng, u(mx) có msi từ băng và cũng dừng

Máy Turing phổ dụng đa băng làm việc tương tự nhưng cũng tiền định theo thời gian O(t(x)) và dừng tại bước t (cho trước x, t(x) và chương trình thích hợp)

Trang 18

2.1.3 Luận đề Turing – Church

 Các dạng khác nhau (nhưng tương đương) của luận đề Turing-Church:

Trên phương diện đoán nhận ngông ngữ: Các ngôn ngữ quyết định được bởi một thủ tục hữu hiệu là các ngôn ngữ đệ qui

Trên phương diện bài toán quyết định: Các bài toán nhị phân quyết định được bởi một thủ tục hữu hiệu là các bài toán T-quyết định được

Trên phương diện tính toán các hàm: Các hàm tính được bởi một thủ tục hữu hiệu là các hàm T-tính được

 Các sự kiện ủng hộ cho khẳng định của luận đề Turing-Church:

Mọi mở rộng của máy Turing đều không tăng sức mạnh của máy

Mọi mô hình hóa hợp lý khác của khái niệm thủ tục hữu hiệu đã được đề xuất cho đến nay đều tương đương với các máy Turing như:

- Hệ thống Post

- -tính toán

- Dạng chuẩn Markov

- Các hàm đệ qui

Trang 19

2.2 Vấn đề không tính được; Định lý Goedel

2.2.1 Các hàm phổ dụng và đầy đủ

 Lựa chọn một dấu ghi đặc biệt và sau khi nó xuất hiện lần thứ k, phân chia xâu x thành Prefixk(x) và Suffixk(x) Ký hiệu f+(x) là f(Prefixk(x)) và f –(x) là f( Suffixk(x))

 Hàm u là k-mô phỏng f nếu với p = Prefix k (p) và với mọi s có u(ps) = f(ps)

 Một cách trực giác, tiền tố có thể coi như chương trình mà hàm mô phỏng u tác động lên hậu tố (Input) Hàm u là k-phân cắt f nếu có u(ps) = f(ps), với Prefixk(p) nào đó và mọi s Chẳng hạn, hàm độ dài xâu có thể k-phân cắt nhưng không mô phỏng một hàm nào khác

 Hàm u là phổ dụng đối với lớp các hàm F  u là k-mô phỏng mọi hàm trong F với k cố định nào đó

 Hàm u là đầy đủ đối với lớp các hàm F  u là k-phân cắt mọi hàm trong F với k cố định nào

đó

 Trong trường hợp F chứa f +

và f- với mọi f  F, tính phổ dụng tương đương (hệ quả nếu chỉ f+

 F) với tính đầy đủ : u là k-phân cắt với mọi f  F

 Hàm u là k-mô phỏng f nếu u là k-phân cắt f –

 Hàm u là 2k-phân cắt f nếu u là k-mô phỏng f+

 Phủ định của hàm (toàn phần hoặc bộ phận) f là một tân từ toàn phần –f nhận giá trị 1 nếu f(x)

= 0 và nhận giá trị 0 trong các trường hợp khác Hiển nhiên, lớp các hàm đầy đủ không đóng đối với phép lấy phủ định Do đó, trong lớp các tân từ (tính được hoặc không) tồn tại các hàm không phổ dụng Điều này suy ra từ định lý Cantor : Tập tất cả các xâu là không đếm được.

Bài tập Mô tả hàm đầy đủ đối với lớp các hàm tuyến tính

Ngày đăng: 17/10/2014, 07:30

HÌNH ẢNH LIÊN QUAN

Hình 1: Máy Turing mô phỏng máy tính - bài giảng môn lý thuyết tính toán - ch2 thuật toán phổ dụng
Hình 1 Máy Turing mô phỏng máy tính (Trang 4)
Hình trạng bắt đầu : #0 m-i 1q 1 0 n 10 in #  Hình trạng kết thúc : #0 m-i-1 1q 5 0 n 10 (i+1)n #  Hàm chuyển : - bài giảng môn lý thuyết tính toán - ch2 thuật toán phổ dụng
Hình tr ạng bắt đầu : #0 m-i 1q 1 0 n 10 in # Hình trạng kết thúc : #0 m-i-1 1q 5 0 n 10 (i+1)n # Hàm chuyển : (Trang 10)
Hình 2: Mô hình máy Turing phổ dụng - bài giảng môn lý thuyết tính toán - ch2 thuật toán phổ dụng
Hình 2 Mô hình máy Turing phổ dụng (Trang 15)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w