Giáo trình lý thuyết tính toán

108 1.3K 2
Giáo trình lý thuyết tính toán

Đ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

Giáo trình lý thuyết tính toán

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN GIÁO TRÌNH THUYẾT TÍNH TOÁN PGS.TS. PHAN HUY KHÁNH ĐÀ NẴNG 1999 PGS.TS. PHAN HUY KHÁNH biên soạn 1 MỤC LỤC CHƯƠNG 1 NHẬP MÔN THUYẾT TÍNH TOÁN 1 I. CÁC ĐỐI TƯỢNG ĐƯỢC XỬ TRONG TIN HỌC 1 II. CÁC MÁY (MACHINES) 2 II.1. Khía cạnh chức năng (functional look) 2 II.2. Khía cạnh cấu trúc (structural look) 3 III. MÔ HÌNH TÍNH TOÁN 4 IV. ĐỊNH NGHĨA BÀI TOÁN 5 CHƯƠNG 2 MÔ HÌNH CÁC MÁY RAM 9 I. CÁC MÁY RAM 9 II. MÔ PHỎNG MỘT MÁY BỞI MỘT MÁY KHÁC 16 III. MỘT MÔ HÌNH THÔ SƠ KIỂU RAM 19 III.1. Mô phỏng các phép toán trên chuỗi ký tự bởi các phép toán trên các số nguyên 19 III.2. Thu gọn tập hợp các lệnh ngắt 20 III.3. Thu gọn tập hợp các lệnh số học 20 IV. MÁY RAM VẠN NĂNG 22 CHƯƠNG 3 MÔ HÌNH CÁC MÁY TURING 25 I. MÔ TẢ VÀ HOẠT ĐỘNG CỦA MÁY TURING 25 I.1. Mô tả máy Turing 25 I.2. Hoạt động của máy Turing 26 I.3. Cấu hình xuất phát của máy Turing 29 I.4. Máy Turing đơn định 29 II. CAC HÀM T-TÍNH ĐƯỢC 30 III. LỚP CÁC HÀM T-TÍNH ĐƯỢC 32 III.1. Một số hàm sơ cấp 32 III.1.1. Các hàm hằng (constant functions) 32 III.1.2. Các hàm chiếu (projection functions) 33 III.2. Các hàm kế tiếp (successor functions) 33 III.3. Các hàm kế trước (predecessor functions) 34 III.4. Sự hợp thành (composition) 34 III.3.1. Các máy được tiêu chuẩn hóa 35 III.3.2. Các máy Turing được chuẩn hóa 36 III.3.3. Tổ hợp các máy Turing 36 III.5. Lập trình trên ngôn ngữ bậc cao máy Turing 37 III.4.1. Cấu trúc if then else và cấu trúc rẽ nhiều nhánh 37 III.4.2. Cấu trúc while 38 III.6. Quản bộ nhớ 39 III.5.1. Máy Turing chuyển một ô qua phải 39 2 thuyết tính toán III.5.2. Máy Turing chỉ sử dụng phần băng bên phải kể từ vị trí đầu tiên của đầu đọc-ghi 39 III.7. Một số máy Turing thông dụng 40 III.6.1. Sao chép 40 III.6.2. Kiểm tra bằng nhau 41 III.6.3. Liệt kê các câu, các cặp câu và dãy các câu 41 III.6.4. Các hàm chiếu ngược (antiprojection function) 42 III.6.5. Các hàm giao hoán 42 III.7. Các hàm T-tính được phức tạp hơn 42 III.8. Nhận xét 43 IV. CÁC BIẾN THẾ KHÁC CỦA MÔ HÌNH MÁY TURING 46 IV.1. Mô phỏng một máy Turing bởi một máy khác 46 IV.2. Các biến thể của máy Turing 48 IV.2.1. Máy Turing có k băng 48 IV.2.2. Các máy off−line và các máy có băng ra 49 IV.2.3. Các máy Turing không đơn định 49 IV.2.4. Thu gọn một bảng chữ còn ba ký tự 50 IV.2.5. Rút gọn một bảng chữ còn hai ký tự 52 IV.3. Các máy Turing có băng vô hạn một phía 52 V. MÁY TURING VẠN NĂNG 53 VI. TỒN TẠI CÁC HÀM KHÔNG LÀ T−TÍNH ĐƯỢC 55 CHƯƠNG 4 LUẬN ĐỀ CHURCH 59 I. TƯƠNG ĐƯƠNG GIỮA CÁC MÔ HÌNH MÁY TURING VÀ MÁY RAM 59 I.1. Mọi hàm T-tính được cũng là R − tính được 59 I.2. Mọi hàm R − tính được cũng là T − tính được 60 I.2.1. Tăng nội dung thanh ghi n lên 1 60 I.2.2. Giảm 1 nội dung thanh ghi n 60 I.2.3. Đưa nội dung thanh ghi n về 0 60 I.2.4. Nhảy theo nội dung thanh ghi n 61 I.2.5. Hoán vị nội dung hai thanh ghi n và m 61 I.3. Sự khác nhau giữa máy Turing và máy RAM 61 II. MÔ HÌNH CÁC HÀM ĐỆ QUY 62 II.1. Các hàm đệ quy nguyên thủy (primitive recursive functions) 62 II.1.1. Xây dựng các hàm sơ cấp 62 II.1.2. Sơ đồ hợp thành tổng quát 62 II.1.3. Sơ đồ đệ quy đơn (simple recurrence) 63 II.1.4. Sơ đồ đệ quy đồng thời 63 II.1.5. Các hàm được định nghĩa bởi case 65 II.2. Các hàm đệ quy 67 II.2.1. Sơ đồ tối thiểu 67 II.2.2. Các hàm đệ quy trừu tượng (abstract recursive functions) 68 II.2.3. Một số ví dụ 68 II.3. Các hàm đệ quy đều T − tính được 70 II.3.1. Sơ đồ hợp thành tổng quát 70 II.3.2. Sơ đồ đệ quy đơn 70 II.3.3. Sơ đồ tối thiểu 71 Nhập môn thuyết tính toán 3 II.4. Mọi hàm T − tính được là đệ quy bộ phận 71 III. LUẬN ĐỀ CHURCH 73 CHƯƠNG 5 CÁC BÀI TOÁN KHÔNG QUYẾT ĐỊNH ĐƯỢC 77 I. CÁC NGÔN NGỮ LIỆT KÊ ĐỆ QUY VÀ CÁC NGÔN NGỮ ĐỆ QUY 77 II. CÁC BÀI TOÁN KHÔNG QUYẾT ĐịNH ĐƯỢC 82 III. THUẬT TOÁN RÚT GỌN MỘT BÀI TOÁN VỀ BÀI TOÁN KHÁC 83 CHƯƠNG 6 ĐỘ PHỨC TẠP TÍNH TOÁN 93 I. ĐỘ PHỨC TẠP VỀ THỜI GIAN VÀ VỀ BỘ NHỚ 84 II. CÁC LỚP CỦA ĐỘ PHỨC TẠP 84 II.1. Hiện tượng nén 84 II.2. Các họ P, NP và P − bộ nhớ (P − space) 84 III. RÚT GỌN ĐA THỨC VÀ CÁC BÀI TOÁN NP−ĐẦY ĐỦ 84 III.1. Khái niệm 84 III.2. Các bài toán cổ điển 84 III.3. Ví dụ về rút gọn kiểu đa thức 84 PGS.TS. PHAN HUY KHÁNH biên soạn 1 CHƯƠNG 1 Nhập môn thuyết tính toán (Introduction to the theory of computation) It’s not bad being the small fish. I. Các đối tượng được xử trong Tin học Trong Tin học, các đối tượng (objects) được xử thông thường là những phần tử thuộc vào những tập hợp vô hạn đếm được. Những phần tử này luôn luôn được biểu diễn (represented) dưới một dạng nào đó. Chẳng hạn trong ngôn ngữ tự nhiên, số nguyên 1999 được biểu diễn trong hệ đếm cơ số 10 (hệ thập phân) gồm một dãy bốn chữ số thập phân thuộc bảng ch ữ số {0, 1, , 9}. Việc xử (thực hiện các phép toán số học thông thường) đối với các số nguyên được tiến hành trên cách biểu diễn cơ số 10 này. Ví dụ : Phép cộng hai số 1999 + 1 = 2000. Người ta giả thiết rằng các đối tượng được xử là những câu (word, hay sentence) được xây dựng trên một bảng chữ (alphabet) hữu hạn, được xem như là sự biểu diễn của đối tượng trong một b ản chất khác. Định nghĩa 1.1 : Một bảng chữ S là một tập hợp hữu hạn các chữ (letters), hay là các ký tự (symbols, hay characters). Số lượng các ký tự, còn gọi là bản số (cardinality) hay lực lượng của S, được ký hiệu ||S||, hay |S|, nếu không sợ nhầm lẫn. Một câu, hay một từ, trên bảng chữ S đã cho là một dãy hữu hạn các ký tự của bảng chữ S được viết liên tiếp nhau. Độ dài (length) của một câu (trên bảng chữ S đã cho) là số lượng các ký tự có mặt trong câu. Câu rỗng (empty word), được ký hi ệu là e (ω hoặc e, hoặc l), là câu có độ dài không, tức không chứa ký tự nào. Ghép (concatenation) của hai câu là đặt kế tiếp hai câu đã cho (trên cùng dòng) để nhận được một câu mới. Bằng cách ghép liên tục như vậy cho mọi ký tự, mọi câu của S, ta nhận được một tập hợp chứa mọi câu có thể trên S, ký hiệu S * . Người ta nói S * là một cấu trúc đồng đẳng (nonoide), mà phần tử trung hòa (neutral element) chính là câu rỗng. Cho trước một bảng chữ S, người ta định nghĩa một quan hệ có thứ tự toàn phần (total order) trên S * như sau : cho một thứ tự tùy ý trên các ký tự của S, 2 thuyết tính toán người ta sắp xếp các câu theo một thứ tự phân cấp (hierechical order), đầu tiên là theo độ dài câu, sau đó theo thứ tự từ vựng (lexicography), hay thứ tự ABC. Ví dụ : Cho S = {a, b, c}, với giả thiết thứ tự phân cấp của các ký tự là a < b < c, ta có thể đánh số các câu của S * (kể cả câu rỗng e) bắt đầu từ 1 trở đi như sau : Hình 1.1. Thứ tự phân cấp trong S * II. Các máy (machines) II.1. Khía cạnh chức năng (functional look) Một máy (machine) được biểu diễn một cách hệ thống như sau : Hình 1.2. Khía cạnh chức năng của một máy Ở lối vào, người ta cung cấp một hoặc nhiều dữ liệu (data) cho máy, thì lối ra, người ta nhận được kết quả (result). Giả thiết rằng các dữ liệu vào có dạng là dãy các ký tự, là một câu trên một bảng chữ nào đó đã cho (vào từ bàn phím chẳng hạn). Kết quả là mộ t phần tử của một tập hợp xác định trước (predefini). Người ta phân biệt các kiểu máy (machine type) tùy theo bản chất của tập hợp kết quả này như sau : 1. Nếu tập hợp chỉ có hai phần tử { không, có } hay {0, 1}, máy sẽ chia dữ liệu vào thành ba phần tùy theo kết quả :  Tập hợp các câu trên bảng chữ vào sau khi được xử sẽ cho ra một kết quả là có (đúng, true), hoặc không (sai, false).  Tập hợp các câu mà máy đưa ra một kết quả khác.  Tập hợp các câu trên bảng chữ vào mà máy không cho kết quả nào. e 1 a 2 b 3 c 4 aa 5 ab 6 ac 7 ba 8 bb 9 bc 10 ca 11 cb 12 cc 13 aaa 14 aab 15 aac 16 . . . Dữ liệu vào Máy Dữ liệu ra Nhập môn thuyết tính toán 3 Các tập hợp này tạo thành các ngôn ngữ (language). Hai tập hợp đầu là bù nhau nếu với mọi dữ liệu vào, máy đều cho một kết quả. Người ta gọi đó là máy đoán nhận (recognition machine) câu. 2. Nếu kết quả là một dãy hữu hạn các ký tự, ta nhận được một câu trên một bảng chữ G nào đó. Cho S là bảng chữ vào, máy xác định một hàm f từ S * vào G * , ta viết : f : S * → G * nghĩa là với một câu vào w ∈ S * , f(w) ∈ G * . Người ta nói máy thực hiện hàm f. Nếu với mọi câu vào w ∈ S * , máy đều cho một kết quả f(w) ∈ G * , thì f được gọi là hàm toàn phần (partial function). Người ta gọi đó là máy tính toán (computation machine) hay máy tính. Chú ý rằng kiểu máy thứ nhất (máy đoán nhận) mà chúng ta vừa phân biệt thực ra chỉ là một trường hợp đặc biệt của kiểu máy thứ hai (máy tính). 3. Nếu kết quả là một dãy vô hạn các ký tự và bảng chữ đang sử dụng chỉ có tối thiểu hai ký tự, trong đó có một dấu phân cách (separator) #, thì ng ười ta nhận được kết quả là một dãy liên tiếp các câu phân cách nhau bởi dấu #, tạo thành một ngôn ngữ. Người ta gọi ngôn ngữ này là liệt kê được (enumerated) bởi máy. II.2. Khía cạnh cấu trúc (structural look) Ở đây, ta chỉ quan tâm đến các máy được mô tả đầy đủ về chức năng hoạt động của chúng. Những máy này có thê :  Thực hiện các phép toán sơ cấp (elementary operation) trong một khoảng thời gian hữu hạn. Mỗi phép toán, giả thiết không chia cắt nhỏ hơn được, được chọn trong một tập hợp hữu hạn các phép toán là một phần mô tả cấu trúc máy.  Lần lượt thực hiện các phép toán sơ cấp theo một thứ tự xác định trước, tạo thành một chương trình (program), là một phần mô tả cấu trúc máy. Một dãy các phép toán sơ cấp được máy thực hiện liên tiếp được gọi là một tính toán (computation) của máy. 4 thuyết tính toán III. Mô hình tính toán Thay vì phải thay đổi lại máy tính mỗi lần thay đổi bài toán cần giải, người ta định nghĩa các lớp máy có cùng nguyên hoạt động và chúng chỉ khác nhau ở chương trình. Người ta gọi mô hình tính toán (model), ký hiệu T, là sự mô tả tất cả các phép toán sơ cấp có thể được thực hiện trên những đối tượng nào, cách tác động lên mỗi một trong chúng như thế nào, và mô tả cách thức chương trình được thực hiện (execution) trên máy. Một trường hợp riêng (instance) của mô hình là một máy biệt lập nào đó, gọi tắt là máy, hoạt động theo cách mô hình tính toán đã chỉ ra. Máy này được định nghĩa bởi dữ liệu vào của chương trình : Mô hình + Chương trình = Máy Một khi một mô hình tính toán T được định nghĩa, được gọi là một T−máy, vấn đề đặt ra là làm sao để có thể biết : − lớp ngôn ngữ đoán nhận được (recognized), được gọi là T − nhận biết được, hoặc − lớp các hàm tính được (computable), được gọi là T−tính được, hoặc − lớp các ngôn ngữ liệt kê được (enumerable) được gọi là T −liệt kê được, bởi một máy nào đó của mô hình này ? Hai mô hình tính toán được đưa ra so sánh với nhau : một mô hình T 1 được nói là mạnh hơn so với một mô hình T 2 nếu : − mọi ngôn ngữ T 2 −nhận biết được cũng là T 1 −nhận biết được, hoặc − mọi hàm T 2 -tính được cũng là T 1 −tính được, hoặc − mọi ngôn ngữ T 2 -liệt kê được cũng là T 1 -liệt kê được. Hai mô hình được gọi là tương đương (equivalent) nếu mỗi mô hình mạnh hơn mô hình kia và ngược lại. Hai mô hình là không thể so sánh với nhau được nếu không tồn tại mô hình nào ít ra đủ mạnh hơn mô hình kia. [...]... hình tính toán mô phỏng hoạt động của tất cả các phần tử của mô hình như vừa xét được gọi là một máy RAM vạn năng (universal) 24 Lý thuyết tính toán Bài tập 1 Viết chương trình của một máy RAM tính nn với số nguyên n cho trước 2 Viết chương trình của một máy RASP tính giá trị bình quân nguyên của dãy n số nguyên cho trước, với n lẻ 3 Viết chương trình của một máy RASP không sử dụng kiểu gián tiếp để tính. ..Nhập môn thuyết tính toán 5 IV Định nghĩa bài toán Trong Tin học thuyết, định nghĩa về bài toán (problem) có vai trò đặc biệt quan trọng, khác với khái niệm thông thường về bài toán được dùng trong lĩnh vực Toán học hoặc hiểu theo nghĩa thông dụng Định nghĩa 1.2 : Một bài toán là : − Sự mô tả cách biểu diễn (hữu hạn) các phần tử của một... 2.4 Ghép hai số nguyên Ngược lại, các phép toán số học có thể được thực hiện trên biểu diễn các số nguyên bởi các chuỗi ký tự, đó là các phép tính sơ cấp Chú ý rằng khi người ta tiến hành các phép toán trên các số nguyên theo cách biểu diễn nhị phân, người ta đã xử trên các câu của bảng chữ {0, 1}, và phép toán được thực thi trên các ký tự Lý thuyết tính toán 20 III.2 Thu gọn tập hợp các lệnh ngắt... (polynomial times) để giải quyết vấn đề đặt ra Đối với bài toán 5 thì tính phức tạp còn lớn hơn nữa : người ta biết rằng mọi phương pháp đều hoạt động theo thời gian tối thiểu là lũy thừa Cuối cùng bài toán 6 không thể giải được theo nghĩa đã đưa ra Bài toán này được gọi là bài toán tương ứng Post (Post’s correspondence problem) Nhập môn lý thuyết tính toán 7 Bài tập 1) Chứng minh rằng một tập hợp E là hữu... mãn ui1 ui2 uin = vi1 vi2 vin ? 6 Lý thuyết tính toán Việc biểu diễn tường minh các dữ liệu là một thành phần của bài toán Điều này đóng vai trò đặc biệt quan trọng khi người ta quan tâm đến độ phức tạp (complexity) của một bài toán Mỗi dữ liệu sẽ tạo thành một trường hợp cá biệt của bài toán, được biểu diễn bởi một câu trên một bảng chữ hữu hạn đã cho Với mỗi bài toán P được hợp thành từ một biểu... chương trình, x là một giá trị nào đó, và mỗi lần thực hiện, nếu thanh ghi n của máy xuất phát chứa số nguyên a, thì x sẽ có giá trị là a + p’ - p tại thời điểm thực hiện lệnh đặt trong các thanh ghi 60 và 61 Như vậy, khi mô phỏng trình P thành P’ đặt trong các thanh ghi RASP, P’ đã bị thay đổi khi thực hiện nó 18 Lý thuyết tính toán Ví dụ 2.4 : Dịch chuyển một trình RASP có một lệnh dạng gián tiếp : Tính. .. cho c, tồn tại duy nhất một phép tính hợp lệ có thể Người ta gọi máy Turing như vậy là đơn định (deterministic) Ta dễ nhận thấy tính đơn giản của các máy Turing đơn định với quan niệm như sau : một câu f ∈ S* không được thừa nhận ngay khi phép tính hợp lệ xuất phát từ (e, q1, f) không dừng Trong trường hợp này, chương trình P của máy Turing : P⊆Q´S´S´M´Q thuyết tính toán 30 là một hàm bộ phận (partial... dung của thanh tổng Các thanh ghi từ 2 p (với p là một số nguyên lẻ) chứa chương trình của máy RASP, và các thanh ghi tiếp theo, từ p + 1 trở đi, là các thanh ghi còn trống Sự khác nhau cớ bản với mô hình máy RAM là có thể thay đổi một thanh ghi chứa chương trình, và do vậy, có thể thay đổi chương trình 16 thuyết tính toán II Mô phỏng một máy bởi một máy khác Từ đây trở đi, người ta thường phải mô... việc đưa ra câu trả lời, nhưng có thể rất khó để chứng minh rằng bài toán là tầm thường theo nghĩa này Ví dụ, bài toán 2 là tầm thường Các bài toán 1 và 3 có cùng câu hỏi, nhưng bài toán 3 giải quyết rất dễ dàng : chỉ cần đọc qua dữ liệu vào, người ta có thể đưa ra kết quả, tuy nhiên trong bài toán 1 thì cần phải xử dữ liệu vào Bài toán 4 phức tạp hơn : người ta chưa biết phương pháp nào hoạt động... phần tử này, người ta thường kết hợp bài toán P với một ngôn ngữ, gọi là ngôn ngữ đặc trưng (characteristic language) của bài toán, được hợp thành từ tập hợp các câu biểu diễn một phần tử của tập hợp để từ đó, kết quả của bài toán là câu trả lời đúng Người ta ký hiệu LP là ngôn ngữ đặc trưng của bài toán P Cho trước một bài toán P, bài toán ngược lại CP là bài toán nhận được từ P bằng cách giữ nguyên . TIN GIÁO TRÌNH LÝ THUYẾT TÍNH TOÁN PGS.TS. PHAN HUY KHÁNH ĐÀ NẴNG 1999 PGS.TS. PHAN HUY KHÁNH biên soạn 1 MỤC LỤC CHƯƠNG 1 NHẬP MÔN LÝ THUYẾT TÍNH TOÁN 1 I. CÁC ĐỐI. liên tiếp được gọi là một tính toán (computation) của máy. 4 Lý thuyết tính toán III. Mô hình tính toán Thay vì phải thay đổi lại máy tính mỗi lần thay đổi bài toán cần giải, người ta định. Nhập môn lý thuyết tính toán 5 IV. Định nghĩa bài toán Trong Tin học lý thuyết, định nghĩa về bài toán (problem) có vai trò đặc biệt quan trọng, khác với khái niệm thông thường về bài toán được

Ngày đăng: 08/06/2014, 13:00

Từ khóa liên quan

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

Tài liệu liên quan