1. Trang chủ
  2. » Mẫu Slide

bai giang nnht k59 2016

183 311 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 183
Dung lượng 2,19 MB

Nội dung

bài giảng môn ngôn ngữ hình thức...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Trường Đại học Lâm Nghiệp Việt Nam Ngành Hệ thống thông tin BÀI GIẢNG MÔN HỌC NGÔN NGỮ HÌNH THỨC Giảng Viên: Ths Đặng Thị Kim Anh E-mail: anhdtk@vfu.edu.vn TÀI LIỆU THAM KHẢO Bài giảng lý thuyết Ngôn ngữ Hình thức Automat Hồ Văn Quân [2002] An Introduction to Formal Languages and Automata Peter Linz [1990] Chương Giới thiệu lý thuyết tính toán Giới thiệu Yêu cầu kiến thức Ba khái niệm ■ Ngôn ngữ (languages) ■ Văn phạm (grammar) ■ Ôtômát (máy tự động) Một vài ứng dụng Giới thiệu Ôtômát ■ Các mô hình tính toán tự động ■ Ngôn ngữ hình thức (formal languages): ■ Định nghĩa ■ Phân loại ngôn ngữ ■ Quan hệ với ôtômát ■ Ứng dụng vào việc xây dựng ngôn ngữ lập trình ■ ■ Yêu cầu kiến thức ■ ■ ■ Lý thuyết ■ Tập hợp ■ Đồ thị Kỹ thuật chứng minh ■ Qui nạp ■ Phản chứng Kỹ thuật mô Ba khái niệm ■ ■ ■ Ngôn ngữ (languages) Văn phạm (grammar) Ôtômát (automata) Ngôn ngữ ■ Ngôn ngữ gì? ■ ■ ■ Các từ điển định nghĩa ngôn ngữ cách không xác hệ thống thích hợp cho việc biểu thị ý nghĩ, kiện, hay khái niệm, bao gồm tập kí hiệu qui tắc để vận dụng chúng Định nghĩa chưa đủ xác để nghiên cứu NNHT Chúng ta cần xây dựng định nghĩa toán học cho khái niệm ngôn ngữ Các khái niệm ■ ■ Bảng chữ (alphabet),  ■ Là tập hợp  hữu hạn không trống kí hiệu (symbol) Ví dụ ■ {A, B, C, , Z}: Bảng chữ La tinh ■ {, , , , }: Bảng chữ Hi Lạp ■ {0, 1, 2, , 9}: Bảng chữ số thập phân ■ {I, V, X, L, C, D, M}: Bảng chữ số La Mã Các khái niệm (tt) ■ ■ ■ Chuỗi (string), w ■ Là dãy hữu hạn kí hiệu từ bảng chữ Ví dụ ■ Với  = {a, b}, abab aaabbba chuỗi  Qui ước ■ Với vài ngoại lệ, sử dụng chữ thường a, b, c, cho phần tử  chữ u, v, w, cho tên chuỗi Các phép toán chuỗi Kết nối (concatenation), wv ■ w = a1a2 an v = b1b2 bm chuỗi: wv = a1a2 anb1b2 bm ■ Ðảo (reverse), wR ■ Ðảo chuỗi w = a1a2 an chuỗi: wR = an a2a1 ■ Chương Máy Turing ■ ■ ■ ■ ■ ■ ■ ■ PDA mặt mạnh nhiều FSA NNPNC-PDA giới hạn Bên gì? FSA PDA khác chất lưu trữ tạm thời Nếu PDA dùng hai, ba stack, hàng (queue), hay thiết bị lưu trữ khác sức mạnh nào? Mỗi thiết bị lưu trữ định nghĩa loại ôtômát thông qua họ ngôn ngữ mới? Ôtômát mở rộng đến chừng nào? Khả mạnh ôtômát? Những giới hạn việc tính toán? Máy Turing đời khái niệm tính toán có tính máy móc hay giải thuật (mechanical or algorithmic computation) Máy Turing thô sơ, đủ sức để bao trùm trình phức tạp luận đề Turing (Turing thesis) cho trình tính toán thực máy tính ngày nay, thực máy Turing Chương Máy Turing Máy Turing chuẩn Kết hợp máy Turing cho công việc phức tạp Luận đề Turing Máy Turing chuẩn ■ Định nghĩa 9.1 ■        Một máy Turing M định nghĩa bảy M = (Q, , , , q0, < , F), Q tập hữu hạn trạng thái nội,  tập hữu hạn kí hiệu gọi bảng chữ ngõ nhập,  tập hữu hạn kí hiệu gọi bảng chữ băng,  hàm chuyển trạng thái, <   kí hiệu đặc biệt, Control unit gọi khoảng trắng (blank), q0  Q trạng thái khởi đầu, F  Q tập trạng thái kết thúc Input, Storage, Output Máy Turing chuẩn (tt) ■ ■ ■ ■ Trong định nghĩa giả thiết    - {< } Hàm  định nghĩa sau : Q    Q    {L, R} Nó diễn dịch sau: Các đối số  trạng thái hành ôtômát kí hiệu băng đọc Kết trạng thái automat, kí hiệu băng thay cho kí hiệu đọc băng di chuyển đầu đọc sang phải sang trái Ví dụ (q0, a) = {q1, d, R} Trạng thái nội q0 a b c Trạng thái nội q1 d b c Ví dụ ■ ■ ■ Xét máy Turing định nghĩa sau Q = {q0, q1},  = {a, b},  = {a, b, < }, F = ,  định nghĩa (q0, a) = (q1, a, R) (q1, a) = (q0, a, L) (q0, b) = (q1, b, R) (q1, b) = (q0, b, L) (q0, < ) = (q1, < , R) (q1, < ) = (q0, < , L) Xét hoạt động M trường hợp sau q0 q1 q0 a b ■ a b a b Trường hợp máy không dừng lại rơi vào vòng lặp vô tận (infinite loop) Các đặc điểm máy Turing chuẩn ■ ■ ❖ ❖ ❖ Có nhiều mô hình khác máy Turing Sau số đặc điểm máy Turing chuẩn Máy Turing có băng không giới hạn hai đầu, cho phép di chuyển số bước tùy ý bên trái phải Máy Turing đơn định ngữ cảnh  định nghĩa tối đa chuyển trạng thái cho cấu hình Không có băng nhập (input file) riêng biệt Chúng ta giả thiết vào thời điểm khởi đầu băng chứa nội dung cụ thể Một vài số xem chuỗi nhập (input) Tương tự băng xuất (output file) riêng biệt Bất kỳ máy dừng, vài hay tất nội dung băng xem kết xuất (output) Hình trạng tức thời ■ Định nghĩa 9.2 ■ ■ ■ Cho M = (Q, , , , q0, < , F) máy Turing, chuỗi a1a2 ak-1q1akak+1 an với   q1 Q, hình trạng tức thời M (gọi tắt hình trạng) Một di chuyển a1a2 ak-1q1akak+1 an |_ a1a2 ak-1bq2ak+1 an ( q1, ak) = (q2, b, R) Một di chuyển a1a2 ak-1q1akak+1 an |_ a1a2 q2ak-1bak+1 an ( q1, ak) = (q2, b, L) Hình trạng tức thời (tt) ■ ■ ■ ■ M gọi dừng sau cấu hình khởi đầu x1qix2 x1qix2 |_* y1qjay2 với qj a, mà (qj, a) không định nghĩa Dãy cấu hình dẫn tới trạng thái dừng gọi tính toán (computation) Ví dụ slide 290 trình bày khả máy Turing không dừng, thi hành vòng lặp vô tận từ thoát Trường hợp đóng vai trò thảo luận máy Turing, kí hiệu x1qx2 |_*  để rằng, cấu hình khởi đầu x1qx2, máy không dừng Máy Turing chấp nhận ngôn ngữ ■ Định nghĩa 9.3 ■ ■ ■ ■ ■ Cho M = (Q, , , , q0, < , F) máy Turing, ngôn ngữ chấp nhận M L(M) = {w  +: q0w |_* x1qfx2 dừng, qf  F, x1, x2  *} Định nghĩa chuỗi nhập w viết băng với khoảng trắng chặn hai đầu Đây lý khoảng trắng bị loại khỏi bảng chữ ngõ nhập  Điều đảm bảo chuỗi nhập giới hạn vùng rõ ràng băng bao bọc hai đầu kí hiệu trắng Không có qui ước này, máy giới hạn vùng tìm kiếm chuỗi nhập Định nghĩa không nói rõ w  L(M) Điều hai trường hợp sau xảy Ví dụ (1) Máy dừng lại trạng thái không kết thúc (2) Máy vào vòng lặp vô tận không dừng ■ Ví dụ Cho  = {a, b}, thiết kế máy Turing chấp nhận L = {anbn: n1} ■ Ý tưởng thiết kế đọc a thay x, kiếm b thay y Cứ không đồng thời a b để thay dừng chấp nhận chuỗi, trường hợp khác không chấp nhận Máy Turing kết sau Q = {q0, q1, q2, q3, qf }, F = {qf},  = {a, b},  = {a, b, x, y, < } (q0, a) = {q1, x, R} (q2, y) = {q2, y, L} (q0, y) = {q3, y, R} (q1, a) = {q1, a, R} (q2, a) = {q2, a, L} (q3, y) = {q3, y, R} (q1, y) = {q1, y, R} (q2, x) = {q0, x, R} (q3, < ) = {qf, < , R} (q1, b) = {q2, y, L} ■ Ví dụ q0aaabbb |_ xq1aabbb |_ xq2aaybb |_ xxaq1ybb |_ xq2xayyb |_ xxxyyq1b |_ xxq2xyyy |_ xxxyyyq3< |_ |_ |_ |_ |_ |_ |_ xaq1abbb |_ q2xaaybb |_ xxayq1bb |_ xxq0ayyb |_ xxxyyq1b |_ xxxq0yyy |_ xxxyyy< qf< q0aaabb |_ xq1aabb |_ xaq1abb |_ xq2aaybq2 |_ xaayb |_ xxaq1yb |_ xxayq1b |_ xq2xayy |_ xxq0ayy |_ xxxyyq1< (dừng) |_ |_ |_ |_ xaaq1bbb |_ xq0aaybb |_ xxaq2yyb |_ xxxq1yyb |_ xxxyq2yy |_ xxxyq3yy |_ (chấp nhận) xaaq1bb xq0aayb xxaq2yy xxxq1yy |_ |_ |_ |_ xaq2aybb xxq1aybb xxq2ayyb xxxyq1yb xxxq2yyy xxxyyq3y xaq2ayb xxq1ayb xxq2ayy xxxyq1y Máy Turing transducer ■ ■ ■ ■ ■ Máy Turing không quan tâm chấp nhận ngôn ngữ mà tổng quát cung cấp mô hình trừu tượng đơn giản máy tính số Vì mục đích máy tính biến đổi input thành output, hoạt động transducer Hãy thử mô hình hóa máy tính cách dùng máy Turing Input tính toán tất kí hiệu không trắng băng thời điểm khởi đầu Tại kết thúc tính toán, output có băng Vậy xem máy Turing M thực hàm f định nghĩa  w = f(w)  _ | * w q q0w M f với qf trạng thái kết thúc Máy Turing transducer (tt) ■ Định nghĩa 9.4 ■ ■ Một hàm f với miền xác định D gọi khả tính toánTuring hay đơn giản khả tính toán tồn máy Turing M = (Q, , , , q0, , F) cho q0w |_*M qf f(w), qf  F,  w  D Ví dụ ■ ■ ■ ■ Cho x, y nguyên dương, thiết kế máy Turing tính x + y Chúng ta chọn qui ước để biểu diễn số nguyên dương Ta biết cách biểu diễn số nguyên dương chuỗi nhị phân cách cộng hai số nhị phân, nhiên để ứng dụng điều ì phức tạp chút vào trường hợp thw Vậy để đơn giản ta biểu diễn số nguyên dương x chuỗi w(x) số có chiều dài x Ví dụ Chúng ta phải định số x y vào lúc ban đầu đặt băng tổng chúng xuất lúc kết thúc tính toán ■ Chúng ta giả thiết w(x) w(y) phân cách kí hiệu 0, với đầu đọc kí tự trái w(x) Sau tính toán, w(x + y) băng theo sau kí tự 0, đầu đọc đặt kí tự trái kết ■ Chúng ta muốn thiết kế máy Turing để thực tính toán (trong qf trạng thái kết thúc) q0w(x)0w(y) |_* qf w(x + y)0, Q = {q0, q1, q2, q3, qf,}, F = {qf} (q0, 1) = (q0, 1, R) (q0, 0) = (q1, 1, R) (q1, 1) = (q1, 1, R) (q1,  ) = (q2,  , L) (q2, 1) = (q3, 0, L) (q3, 1) = (q3, 1, L) (q3,  ) = (qf,  , R) ■ Kết hợp máy Turing cho công việc phức tạp ■ ■ ■ Chúng ta thấy máy Turing thực phép toán quan trọng mà có tất máy tính Vì máy tính số, phép toán thành phần cho lệnh phức tạp hơn, trình bày máy Turing có khả kết hợp phép toán lại với Ví dụ ■ ■ Thiết kế máy Turing tính toán hàm sau f(x, y) = x + y x  y =0 x < y Ta xây dựng mô hình tính toán cho sau ... hay khái niệm, bao gồm tập kí hiệu qui tắc để vận dụng chúng Định nghĩa chưa đủ xác để nghiên cứu NNHT Chúng ta cần xây dựng định nghĩa toán học cho khái niệm ngôn ngữ Các khái niệm ■ ■ Bảng chữ

Ngày đăng: 02/12/2016, 18:21

TỪ KHÓA LIÊN QUAN

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w