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

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

Đ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

1 Chương 2. THUẬT TOÁN PHỔ DỤNG NỘI DUNG 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 TÀI LIỆU THAM KHẢO 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) 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. 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. 4 Hình 1: Máy Turing mô phỏng máy tính 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ị. 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 w i . - 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 : q 1 , q 2 , …, q r ; q 1 là trạng thái đầu, q 2 là trạng thái cuối (thừa nhận). -  gồm s ký hiệu băng X 1 , X 2 , …, X s ; X 1 là ký hiệu 0, X 2 là ký hiệu 1, X 3 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à D 2 . - Hàm chuyển (q i , X j ) = (q k , X l , D m )  bản mã chuyển vị C = 0 i 10 j 10 k 10 l 10 m . 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: C 1 11C 2 11… C n-1 11C n Trong đó, C i , 1  i  n, là bản mã cho một chuyển vị của M. 7 Ví dụ 1. Cho máy Turing M = ({q 1 , q 2 , q 3 }, {0, 1}, {0, 1, B}, , q 1 , B, {q 2 }), trong đó (q 1 , 1) = (q 3 , 0, R) (q 3 , 1) = (q 2 , 0, R) (q 3 , 0) = (q 1 , 1, R) (q 3 , B) = (q 3 , 1, L) Bản mã cho các qui tắc tương ứng: 0100100010100 00010010010100 0001010100100 0001000100010010 Một bản mã của M: 01001000101001100010101001001100010010010100110001000100010010 Có thể có tất cả 4! = 24 bản mã của M. 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 8 3) Ngôn ngữ chéo hóa Máy Turing M là máy thứ i: M i  bản mã của M là chuỗi nhị phân thứ i: w i . Xét w i bất kỳ. Nếu w i không phải là bản mã có nghĩa của một máy Turing thì ta chọn M i là máy Turing chỉ gồm 1 trạng thái và không có chuyển vị. Như vậy, M i là máy Turing sẽ dừng ngay lập tức trên mọi nguyên liệu  L(M i ) = . Ngôn ngữ L d là ngôn ngữ chéo hóa (Diagonalzation Language)  L d = {w i w i  L(M i )}  L d 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(M i ). Giá trị của đường chéo bảng cho biết máy M i có thừa nhận w i 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. L d không phải là ngôn ngữ kể được đệ qui  Không có máy Turing thừa nhận L d . Chứng minh. Giả sử L d là L(M) của một máy Turing M  M = M i tương ứng w i . Nếu w i  L d  M i thừa nhận w i . Theo định nghĩa, w i  L d  Vô lý. Nếu w i  L d  M i không thừa nhận w i . Theo định nghĩa, w i  L d  Vô lý. 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 6) T-tính được Máy Turing có thể tính một hàm : Đối của hàm là xâu vào ; giá trị của hàm là xâu được ghi trên băng khi máy dừng thực hiện. Hàm bộ phận f :  *   * 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. 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 : 0 m 10 n - Output : B0 mn B - Hoạt động của M : Trước hết M viết số 1 sau 0 m 10 n , 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 0 m  10 n 10 mn . Cuối cùng cần xóa tiền tố 10 n 1  0 mn 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 : #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 : 0 1 2 B q 1 (q 2 , 2, R) (q 4 , 1, L) q 2 (q 2 , 0, R) (q 2 , 1, R) (q 3 , 0, R) q 3 (q 3 , 0, L) (q 1 , 1, L) (q 1 , 2, R) q 4 (q 5 , 1, R) (q 4 , 0, L) - Hoàn thiện chương trình : Cần biến đổi hình trạng đầu #q 0 0 m 10 n #  #B0 m-1 10 n 1# Hàm chuyển : 0 1 2 B q 0 (q 6 , B, R) q 6 (q 6 , 0, R) (q 6 , 1, R) (q 7 , 1, L) q 7 (q 7 , 0, L) (q 1 , 1, R) [...]... an toàn vì M tính toán hàm chắc chắn dừng Như vậy, f là T -tính được  f là - ệ qui Tương tự, chứng minh được f là - ệ qui  f là T -tính được Hàm f là - ệ qui bộ phận  f là T -tính được bộ phận 27 2.3 Tính khó của bài toán 2.3.1 Định lý nén Hàm t-hạn chế ut của u bị hủy và xuất 1 nếu u(x) không dừng sau t(x) bước, nghĩa là ut tính bài toán t-giới nội dừng (t-BHP) Hàm ut còn giữ nguyên tính đầ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... tại thuật toán A mà A(x) tính Pf(x) với không gian t(x) đối với mọi input x (2) t là hàm xây dựng được và f(x) = O(t(x)) 28 2.3.2 Định lý tăng tốc Định lý Tồn tại tân từ tính được toàn phần P mà với mỗi thuật toán tính P(x) với thời gian t(x) luôn tồn tại thuật toán khác tính P(x) với thời gian O(log(t(x))) Định lý trên chứng tỏ không tồn tại một thuật toán tối ưu tuyệt đối (theo thời gian tính toán) ... hợp: - Q = {q0, q1, , q14}; -  = {0, 1}; -  = {0, 1, 2, B}; - F = {q14} -  được xác định từ các bảng trên 11 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) ... 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à... là bài toán dừng) có thể m-thu về được gọi là kể được đệ qui đầy đủ Một trong các cách trình bày tập kể được đệ qui đầy đủ (thực chất là không giải được) là thu gọn bài toán dừng về nó Ju Matijasevich đã đưa ra một tập hợp kể được đệ qui đối với bài toán phương trình Diophang : Cho một đa thức bậc 4 với hệ số nguyên ; tìm nghiệm nguyên của đa thức Phép thu bài toán P1 về bài toán P2 là một thuật toán. .. định lý Goedel Định lý Goedel thứ nhất (tính không đầy đủ): Mọi lý thuyết được tiên đề hóa một cách thỏa đáng là không đầy đủ Đặc biệt, mệnh đề “Mênh đề này là không chứng minh được” là đúng nhưng không thể chứng minh được trong lý thuyết đang xét Định lý Goedel thứ hai (tính không đầy đủ): Trong mỗi lý thuyết được tiên đề hóa phù hợp (được tiên đề hóa có nghĩa là các tiên đề được sinh ra một cách tính. ..  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 ? 12 7) Ngôn ngữ phổ dụng (Universal language)... 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... 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 18 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 = Prefixk(p) . Chương 2. THUẬT TOÁN PHỔ DỤNG NỘI DUNG 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 TÀI LIỆU THAM KHẢO 1. Bài giảng về cơ sở tính toá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) 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. Tổng hợp: - Q = {q 0 , q 1 , , q 14 }; -  = {0, 1}; -  = {0, 1, 2, B}; - F = {q 14 } -  được xác định từ các bảng trên. 12 L  Bài toán M  Thuật toán L giải được

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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan