báo cáoTìm hiểu và xây dựng chương trình mô phỏng các thuật toán hỗ trợ học tập và giảng dạy môn học automata và ngôn ngữ hình thức van

38 957 8
báo cáoTìm hiểu và xây dựng chương trình mô phỏng các thuật toán hỗ trợ học tập và giảng dạy môn học automata và ngôn ngữ hình thức van

Đ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

Mục Lục MỞ ĐẦU Lý thuyết automat ngôn ngữ hình thức đóng vai trò quan trọng sở toán học tin học Ngôn ngữ hình thức sử dụng việc xây dựng ngôn ngữ lập trình, lý thuyết chương trình dịch Các ngôn ngữ hình thức tạo thành công cụ mô tả mô hình tính toán cho dạng thông tin vào lẫn kiểu thao tác Vì thực chất lĩnh vực khoa học liên ngành, nhu cầu mô tả hình thức văn phạm phát sinh nhiều ngành khoa học khác từ ngôn ngữ học đến sinh vật học Chính vậy, người lĩnh vực công nghệ thông tin việc tìm hiểu khái niệm lý thuyết automat ngôn ngữ hình thức thiếu Cũng vậy, ngôn ngữ hình thức đưa vào làm môn học sở chuyên ngành cho tất sinh viên công nghệ thông tin Đây môn học bản, mang tính phức tạp, trừu tượng cao Chính vậy, gặp giải thuật phức tạp lời giải hàn lâm buồn tẻ dễ gây nhàm chán Vì vậy, xây dựng công cụ hỗ trợ việc giảng dạy môn automata ngôn ngữ hình thức với ứng dụng trực tiếp công tác học tập em tin giúp giảng môn Automata ngôn ngữ hình thức phong phú sinh động Dựa ý tưởng trên, với hướng dẫn, giúp đỡ nhiệt tình thầy giáo Hà Chí Trung em tham gia nghiên cứu đề tài: “Tìm hiểu xây dựng chương trình mô thuật toán hỗ trợ học tập giảng dạy môn học automata ngôn ngữ hình thức” Hình thức làm em mô tả cụ thể chi tiết vào phần em sử dụng hoàn toàn ngôn ngữ lập trình C# Lúc nhận đề tài em dự định mong muốn làm tất phần giáo trình đại cương môn automata ngôn ngữ hình thức Nhưng thời gian kiến thức em có hạn nên em chưa hoàn thiện tất tránh khỏi sai sót Em mong đóng góp thầy cô để đề tài em mở rộng hơn, sâu sắc đặc biệt ứng dụng học tập công tác giảng dạy Chương GIỚI THIỆU CHUNG 1.1 Nêu toán Bài toán: “Tìm hiểu xây dựng chương trình mô thuật toán hỗ trợ học tập giảng dạy môn học automata ngôn ngữ hình thức” Môn học automat ngôn ngữ hình thức môn học cần thiết chuyên ngành tin học, thân mang tính phức tạp, trừu tượng cao Chính vậy, gặp giải thuật phức tạp lời giải hàn lâm buồn tẻ dễ gây nhàm chán Vì vậy, cần có công cụ mô trực quan thuật toán hoạt động automat hỗ trợ việc giảng dạy với ứng dụng trực tiếp công tác học tập giúp giảng môn học trở nên phong phú sinh động Giúp việc giảng dạy đạt yêu cầu đề 1.2 Yêu cầu toán Bài toán: “Tìm hiểu xây dựng chương trình mô thuật toán hỗ trợ học tập giảng dạy môn học automata ngôn ngữ hình thức” gồm hai phần là: Nghiên cứu, tìm hiểu thuật toán môn automat ngôn ngữ hình thức Xây dựng chương trình mô thuật toán đó, đồng thời công cụ cho phép hỗ trợ người dùng thuận tiện muốn làm việc file word Để đạt mục đích đề cần phải nắm tìm hiểu rõ lý thuyết Automat, văn phạm, thuật toán có liên quan Sau tìm hiểu xây dựng chương trình để giải yêu cầu toán Chương CƠ SỞ LÝ THUYẾT 2.1 Ngôn ngữ hình thức 2.1.1 Khái niệm ngôn ngữ hình thức Ngôn ngữ: theo từ điển, 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 Một ngôn ngữ hình thức L: chữ S tập hợp chuỗi từ ký hiệu chữ S Trong đó: S* : tập hợp tất chuỗi con, kể chuỗi rỗng ε, sinh S S+ : tập hợp tất chuỗi con, ngoại trừ chuỗi rỗng ε, sinh S S* = S+ + {ε} S+ = S* - {ε} Cách biểu diễn ngôn ngữ: Có ba cách: Liệt kê phần tử chuỗi Ví dụ biểu diễn phần tử ngôn ngữ L gồm chuỗi aa,aba,baa,baba sau: L = {aa, aba, baa, baba} Mô tả ngôn ngữ thông qua đặc điểm chủ yếu Ví dụ ngôn ngữ gồm chuỗi có chữ a theo sau số nguyên tố biểu diễn sau: L = {ai | i số nguyên tố} Biểu diễn ngôn ngữ cách tổng quát thông qua văn phạm automata Đó chế sản sinh chế đoán nhận Trong đó: Văn phạm: chế sản sinh chuỗi ngôn ngữ Automata: máy trừu tượng hay chế cho phép đoán nhận chuỗi có thuộc ngôn ngữ L hay không 2.1.2 Các khái niệm liên quan Bảng chữ cái: Tập Σ khác rỗng gồm hữu hạn hay vô hạn ký hiệu Mỗi phần tử a gọi chữ hay ký hiệu Ví dụ: {0, 1, 2, , 9}: gọi bảng chữ số thập phân Chuỗi: Là dãy hữu hạn kí hiệu từ bảng chữ Ví dụ: Cho ∑={}, dãy α=, ∑ gọi từ hay chuỗi bảng Σ Cụ thể với Σ = {a, b}, abab aaabbba chuỗi Σ Độ dài chuỗi: số ký hiệu tạo thành chuỗi Ví dụ:|abca| = Chuỗi rỗng: ký hiệu ε, chuỗi ký hiệu |ε| = Chuỗi con: chuỗi v chuỗi w v tạo ký hiệu liền kề chuỗi w Ví dụ: chuỗi 10 chuỗi chuỗi 010001 Chuỗi tiền tố: chuỗi nằm đầu chuỗi Ví dụ: chuỗi 010 chuỗi tiền tố chuỗi 010001 Chuỗi hậu tố: chuỗi nằm cuối chuỗi Ví dụ: chuỗi 001 chuỗi hậu tố chuỗi 010001 Chuỗi nối kết:chuỗi tạo thành cách viết chuỗi thứ nhất, sau chuỗi thứ hai, Ví dụ: w = v = nối kết hai chuỗi chuỗi wv = Hay nối ghép chuỗi Long Int LongInt Chú ý: nối kết chuỗi rỗng εw = wε = w (với w) Vì vậy, ε đơn vị phép nối kết Chuỗi đảo ngược: chuỗi w, ký hiệu wR, chuỗi w viết theo thứ tự ngược lại Ví dụ: chuỗi w = abcd đả ngược w wR = dcba ta có εR = ε Phép cắt trái: từ α cho từ β phần lại từ α sau cắt bỏ phần đầu β từ α Phép cắt phải: từ α cho từ β phần lại từ α sau cắt bỏ phần đuôi β từ α 2.2 Văn phạm 2.2.1 Khái niệm văn phạm Văn phạm: theo từ điển tập qui tắc cấu tạo từ qui tắc cách liên kết từ lại thành câu Định nghĩa văn phạm G thứ tự gồm thành phần G = < Σ, Δ, S, P > đó: Σ: bảng chữ cái, gọi bảng chữ Tập kí hiệu kết thúc Δ: (Δ ∩ Σ =Ø), gọi bảng ký hiệu phụ Tập kí hiệu không kết thúc S ∈ Δ: Được gọi biến khởi đầu(kí hiệu mục tiêu) P: tập hữu hạn luật sinh dạng α→β, đó:α, β ∈ (Σ ∪ Δ)* α chứa ký hiệu không kết thúc (đôi khi, ta gọi chúng qui tắc luật viết lại) Ví dụ Cho văn phạm sau: G = ({a, b},{S, A, B},, S, P) Trong P luật sinh có dạng: S → aAS | bBS | λ, A → aaA | b, B → bbB | a, 2.2.2.Các khái niệm liên quan Dẫn xuất trực tiếp: α→β luật sinh áp dụng chuỗi w= gαd ta có gαd → gβd Dẫn xuất gián tiếp: chuỗi a1, a2, , am a1 → a2, a2 → a3, , am-1 → am am dẫn xuất gián tiếp từ a1 sau a1 → * am Ngôn ngữ L sinh văn phạm G: Cho G = < Σ, Δ, S, P > văn phạm, tập L (G) = {w | w Σ* S → * w} gọi ngôn ngữ sinh G Văn phạm tương đương: văn phạm sinh ngôn ngữ (G1 tương đương G2 L(G1)=L(G2)) Dẫn xuất câu: Nếu w ∈ L(G) phải tồn dãy dẫn xuất: S ⇒ w1 ⇒w2 ⇒ ⇒ wn ⇒ w Dãy gọi dẫn xuất câu w 2.2.3 Phân loại văn phạm Theo Chomsky văn phạm chia thành loại sau: Văn phạm không hạn chế, văn phạm cảm ngữ cảnh, văn phạm phi ngữ cảnh văn phạm quy Mối quan hệ chúng thể sau: Recursively enumerable Context-sensitive Regular Context-free Văn phạm loại 0: (văn phạm không hạn chế) văn phạm không cần thỏa điều kiện ràng buộc tập luật sinh Tất loại văn phạm thuộc văn phạm loại Văn phạm loại 1: (văn phạm cảm ngữ cảnh) văn phạm G có luật ∗ α = α ′ Aα ′′, A ∈ ∆, α ′, α ′′, β ∈ ( Σ ∪ ∆ ) sinh dạng α→β ,|β| ≥ |α| ví dụ: Văn phạm loại 2: (văn phạm phi ngữ cảnh) văn phạm có luật sinh dạng A→α với A biến đơn α chuỗi ký hiệu thuộc (Σ Δ)*; Văn phạm loại 3: (văn phạm quy) có luật sinh dạng tuyến tính phải tuyến tính trái Trong đó: Tuyến tính phải luật sinh có dạng: A → wB A → w; Tuyến tính trái luật sinh có dạng: A → Bw A → w; (Với A, B biến đơn, w chuỗi ký hiệu kết thúc (có thể rỗng)) Nếu ký hiệu L0, L1, L2, L3 lớp ngôn ngữ sinh văn phạm loại 0, 1, 2, tương ứng, ta có: L3L2 L1 L0 2.3 Automata hữu hạn 2.3.1 Khái niệm chung automat Automat: máy tự động, thiết bị tự thực công việc mà không cần can thiệp người Nó hoạt động dựa số quy tắc dựa vào quy tắc người lập trình cho hoạt động theo ý muốn Máy tính số ngày máy tự động điển hình mạnh Cụ thể automat mô hình toán học hay máy trừu tượng có cấu hoạt động đơn giản có khả đoán nhận ngôn ngữ Finite automata (FA) mô hình tính toán hữu hạn: có khởi đầu kết thúc, thành phần có kích thước hữu hạn cố định mở rộng suốt trình tính toán Automata làm việc theo bước thời gian rời rạc (steps) Nói chung, thông tin sản sinh FA phụ thuộc vào thông tin vào trước Biểu diễn FA: Có hai cách: biểu đồ dịch chuyển bảng dịch chuyển Ví dụ: Cho automat A= với: Q={,,,} ∑={0,1} Ta có biểu diễn dạng đồ thị sau: Trong đó: Ngoài biểu diễn dạng bảng chuyển trạng thái sau: Trạn Đầu vào g thái … δ () δ () δ () … () ) … δ () … … … δ() … δ( δ () δ … … δ( ) 2.3.2 Các loại automat Sự phân biệt loại automata khác chủ yếu dựa việc thông tin đưa vào memory hay không Cụ thể chia làm loại: a)Automata hữu hạn đơn định (DFA) Định nghĩa DFA biểu diễn năm A=(Q, Σ, δ, q0, F), đó: Q : tập khác rỗng, tập hữu hạn trạng thái (p, q…); Σ : chữ nhập vào (a, b, c …); δ : D→ Q hàm chuyển (hay ánh xạ), D ⊆ Q × Σ, có nghĩa δ(p, a) =q δ(p, a) = Ø, p, q ϵQ , a ϵ Σ; q0Q : trạng thái bắt đầu F Q : tập trạng thái kết thúc (Trong trường hợp D = Q × Σ ta nói A DFA đầy đủ.) Ánh xạ mở rộng Mở rộng ánh xạ δ δ’ biến đổi (trạng thái, chuỗi) sang trạng thái: 1.δ’(q, e) = q 2.δ’(q, wa) = δ’(δ’(q,w), a) với " w, a Ví dụ b)Automat hữu hạn đa định(NFA) Định nghĩa Automat hữu hạn đa định biểu diễn A = (Q, Σ, δ, q0, F) Trong đó: Q: tập hữu hạn trạng thái Σ : tập hữu hạn chữ δ: ánh xạ chuyển trạng thái δ: Q× Σ → 2Q q0 ∈ Q trạng thái khởi đầu F ⊆ Q tập trạng thái kết (Ánh xạ δ hàm đa trị (hàm không đơn định), A gọi không đơn định.) Ánh xạ mở rộng δ(q, ɛ) = {q} δ(q, wa) = { p | r δ(q, w) mà pÎδ(r, a) } = δ( δ(q,w), a) δ(P, w) = δ(q, w) với "PQ Ví dụ c)Automat có dịch chuyển ɛ Định nghĩa NFA với ε-dịch chuyển (ký hiệu: NFAε) năm: A= (Q, Σ, δ, q0, F) Trong đó: 10 Do có định lý: Cho CFG G = < Σ, Δ, S, P > với L(G) ≠ Ø, có CFG G = < Σ’, Δ’, S, P’ > tương đương cho A ϵΔ’ tồn w ϵ Σ* để A* w b Giả mã Giải thuật loại bỏ ký hiệu thừa Bổ đề: ký hiệu X gọi có ích có dẫn xuất dạng S αXβ * w với a, b chuỗi w ϵ Σ* Giả mã giải thuật tìm ký hiệu phụ Δ’ OldΔ' := Ø; NewΔ' := { A|A w với w ϵT* }; while (OldΔ' NewΔ' ) { 3.1 OldΔ' := NewΔ'; 3.2 NewΔ' := OldΔ' A{A| A α; αϵ(Σ OldΔ’)* } }; Δ' := NewΔ’; Giả mã giải thuật loại bỏ ký hiệu không dẫn từ ký hiệu bắt đầu: Đặt Δ’ := {S}; if (A ϵΔ’ A a1|a2| |an luật sinh P) if (X ký hiệu phụ a1, a2, , an X chưa có Δ’ ) Thêm X vào Δ’ ; Lặp lại bước (2) không biến thêm vào Giải thuật loại bỏ luật sinh ε Giải thuật loại bỏ luật sinh dạng Aε: Xét G = < Σ, Δ, S, P >, G’ = < Σ, Δ, S, P’ > không chứa luật sinh ε Giải thuật: Bước 1: Ω := Ø; Nếu luật sinh A ε thêm A vào Ω; 24 Nếu B X1X2 Xn, Xi ∊ Ω thêm B vào Ω; Bước 2: Xây dựng P’ Với luật A →X1X2 Xn , Xi ∊ (Σ+Δ) P, ta xây dựng luật sinh A → a1a2 an P’ với điều kiện: Nếu Xi ∉ Ω = Xi Nếu Xi ∊Ω = Xi | ε Không gán đồng thời tất ε Giải thuật loại bỏ luật sinh đơn vị for (mỗi biến A ∊Δ) { Tính ΔA = { B | B ∊ Δ A →* B } ; for (mỗi biến B ∊ΔA){ for (mỗi luật sinh B → a thuộc P){ if (B →a không luật sinh đơn vị) { Thêm luật sinh A → a vào P’; } } } } c Ví dụ Xét văn phạm G = < Σ, Δ, S, P > : S→A A → aBb | ε B → A | cB | cC C → AC | BCD D → ab Áp dụng thuật toán tìm Δ’ ta có: Δ' = {S, A, B, D} S→A A → aBb | ε 25 B → A | cB D → ab Sau loại ký hiệu không dẫn từ ký hiệu bắt đầu: Δ' = {S, A, B} S→A A → aBb | ε B → A | cB Xác định tập biến rỗng Ω A → ε A ∊Ω; B → ε B ∊ Ω; S → AB S ∊Ω xây dựng lại tập luật sinh P’ S→A A → aBb |aεb B → A|cB | cε Chú ý: G' không chấp nhận chuỗi rỗng ε văn phạm G Để G' tương đương G, ta cần thêm luật sinh S → ε vào G' 26 Chương CÀI ĐẶT CHƯƠNG TRÌNH 4.1 Cài đặt thuật toán Em xây dựng lớp thành phần: State, Transtion, Line, Des_Label, Gen_rule, StateandState, Paint, RG FA Tương ứng sau: Lớp State: Để biểu diễn trạng thái automat thuộc tính phương thức sau: State Id Location BanKinh Tyle ListTranstionSource ListTranstionDest color Selected isFinal isStart isChecked Label getTam() getName() state_paint(Graphics g) AddTranstion(Transtion trans) ListTranstionSourceContainLabel(string label) ListTranstionDestContainLabel(string label) getTranstionexitStatesource(string label) Lớp Line: Để biểu diễn phép dịch chuyển automat thuộc tính phương thức sau: Line Arrow With Location1 Location2 Label color PointDraw isLine veduongthang(Graphics g, float with) ComputeDistance(PointF M, PointF p1, PointF p2) veduongcong(Graphics g, float with) DrawLine(Graphics g, float with) Lớp Transtion: Để biểu diễn ánh xạ(cung nối) automat thuộc tính phương thức sau: 27 Transtion With FromState ToState Label Checked addLabel(string label) getLocation() Transtion_paint(Graphics g, Color color, float with) isdoixung(Transtion c) convertcungdoixung() Lớp Des_Label: Để biểu diễn trạng thái automat thuộc tính phương thức sau: Des_Label labelstart labelend nhan tostring(List DS) Lớp Gen_rule: Để biểu diễn luật sinh văn phạm thuộc tính phương thức sau: Gen_rule LabelStart LabelEnd tostring(List s) Equals(Gen_rule l) Lớp StateandState: Để biểu diễn cặp trạng thái DFA thuộc tính phương thức sau: StateandState q1 q2 check landuyet StateandState(State q1, State q2) Lớp Paint: Sử dụng lớp để thực phương thức vẽ automat 28 Paint Nen_Draw Automat_Draw(FA automat) automat_draw_cungnoi(FA automat, List _listCung) Automat_Draw_Duongnoi(FA automat, Point p1, Point p2) Lớp RG: Để biểu diễn văn phạm thuộc tính phương thức sau: RG IsLRRG Bangchucai Bangkihieuphu Kitubatdau Tapluatsinh isexitGen_rule(Gen_rule l) check_genrule(Gen_rule l) check_labelStart() converttoLRRG() Addtapluatsinh(Gen_rule l) Lớp FA: Để biểu diễn automat thuộc tính phương thức sau: FA Tyle NFAepsilon DFA NFA Region Taptrangthai Tapcungnoi TapKitu Taptrangthaiketthuc TrangthaiBatdau ReserverFA() checkStateFinal(List ListState) ListStatecontainrefLabel() ListStatecontainepsilonrefLabel() ListStateNFAepsilonconverttoNFA() ListStatecontainepsilonref() addtaptrangthaiketthuc(State q) converttoRing(Control c) DelState(State s) getcenterFA() Khi xây dựng lớp thành phần xây dựng lớp xử lý thuật toán Gồm lớp FA_Processing, RG_Processing 29 FA_Processing gồm phương thức xử lý giải thuật toán FA sau: Phương thức demo_Step phương thức mô tả bước chuyển trình đoán nhận chuỗi dùng để giải thuật toán đoán nhận chuỗi Cụ thể có dạng: public List demo_Step (List dstt, string c) đó: dstt, c tham số truyền vào với: dstt danh sách trạng thái tại, c kí tự đọc chuỗi nhập vào Phương thức trả danh sách trạng thái automat đọc vào kí tự c Phương thức convertNFAepsilontoDFA() phương thức dùng chuyển NFA thành DFA tương đương Cụ thể có dạng: public FA convertNFAepsilontoDFA() Phương thức trả DFA biến đổi từ NFAε Phương thức converttoLRRG() phương thức chuyển FA thành dạng văn phạm quy dạng tuyến tính phải Giải thuật toán biến đổi Automat thành văn phạm quy Cụ thể có dạng: public RG converttoLRRG() Phương thức trả văn phạm quy biểu diễn cho automat Phương thức NFAepsilontoNFA()là phương thức chuyển NFAɛ thành NFA tương đương Giải thuật toán biến đổi NFAɛ thành NFA tương đương Cụ thể có dạng: public FA NFAepsilontoNFA() Phương thức trả NFA tương đương với NFAε Phương thức rutgonDFA() phương thức rút gọn DFA Giải thuật toán rút gọn DFA Cụ thể có dạng: public FA rutgonDFA().Phương thức trả DFA rút gọn từ Phương thức converttoDFA() phương thức giải thuật toán chuyển NFA thành DFA tương đương Cụ thể có dạng: public FA converttoDFA() Phương thức trả DFA tương đương từ NFA RG_Processing gồm phương thức xử lý giải thuật toán RG sau: Phương thức LRRGconverttoFA()là phương thức chuyển văn phạm tuyến tính phải thành FA tương ứng đoán nhận Cụ thể có dạng: public FA LRRGconverttoFA() Phương thức trả FA biểu diễn văn phạm quy 30 4.2 Thiết kế, xây dựng chương trình Chức chương trình: Cho phép mô phỏng, xử lý thuật toán automat Cho phép mô phỏng, xử lý thuật toán văn phạm Cho phép sinh số dạng automat tự động form, lưu file word nội dung lời giải cho dạng câu hỏi Tất phép toán mô chương trình lưu file word Form cho phép vẽ Automat: Đây form có chức thao tác với automat hiển thị form Cho phép vẽ mọt automat đọc automat từ file lên Có chức mở file từ file text, ghi automat file text, file word, file ảnh Ngoài cho phép người dùng thực thuật toán biến đổi menu Khi click chức đoán nhận chuỗi hiển thị form đoán nhận chuỗi dùng đoán nhận ngôn ngữ Automat: 31 Khi click rút gọn DFA Form rút gọn automat hiển thị Ở form chức biến đổi form có chức cho phép ghi lại DFA DFA rút gọn file word click Lưu kết file word Khi click chuyển NFAɛ thành NFA Form chuyển nfaɛ thành nfa tương đương hiển thị Tương tự cho phép lưu file word Với NFAɛ 32 sau: Sau chuyển: 33 Khi click chuyển NFA thành DFA Form chuyển NFA thành DFA tương đương hiển thị Tương tự cho phép lưu file word Khi click chuyển NFAε thành DFA form chuyển NFAε thành DFA tương đương hiển thị Tương tự cho phép lưu file word 34 Khi click chuyển automat thành văn phạm tuyến tính phải form chuyển automat thành văn phạm tuyến tính phải hiển thị Tương tự cho phép lưu file word Với automat: Tương ứng văn phạm sau: 35 Đối với phần xử lý văn phạm click nút văn phạm form chuyển từ văn phạm tuyến tính phải sang automat hiển thị Cụ thể, sau biến đổi cho phép lưu lại kết file word Form cho phép nhập, sửa, xóa văn phạm: Khi chuyển sang FA: 36 KẾT LUẬN 1.Kết đạt Qua thời gian nghiên cứu đề tài “Tìm hiểu xây dựng chương trình mô thuật toán hỗ trợ học tập giảng dạy môn học automata ngôn ngữ hình thức” em đạt mục tiêu đề ra: Tìm hiểu chung lý thuyết automat ngôn ngữ hình thức Tìm hiểu thuật toán biến đổi automat, văn phạm biến đối automat văn phạm Xây dựng chương trình mô thuật toán 2.Hướng phát triển Tiếp tục nghiên cứu, tìm hiểu thêm thuật toán biến đổi có khả tối ưu thuật toán nghiên cứu Nghiên cứu toán áp dụng tập automat như: chương trình dịch, xử lý ngôn ngữ tự nhiên 37 TÀI LIỆU THAM KHẢO 1.Bài giảng môn học lý thuyết automat ngôn ngữ hình thức, Hồ Văn Quân Lý tuyết ngôn ngữ hình thức automat, Nguyễn Gia Định 3.Slide giảng lý thuyết automat ngôn ngữ hình thức, Hà Chí Trung 4.An Introduction to Formal Languages and Automata ,Peter Linz [1990] Automata and Formal Language An Introduction – Dean Kelley – Prentice Hall, Englewood Cliffs, New Jersey 07632 Compilers : Principles, Technique and Tools, Alfred V.Aho, Jeffrey D.Ullman - Addison - Wesley Publishing Company, 1986 Compiler Design , Reinhard Wilhelm, Dieter Maurer - Addison Wesley Publishing Company, 1996 Techniques of Programming Language Translation, Karen A Lemone - CRC Press, Inc, 1992 Modern Compiler Implementation in C, Andrew W Appel Cambridge University Press, 1997 38 [...]... c) DelState(State s) getcenterFA() Khi đã xây dựng được các lớp thành phần xây dựng các lớp xử lý các thuật toán trên Gồm các lớp FA_Processing, RG_Processing 29 FA_Processing gồm các phương thức xử lý giải quyết các thuật toán về FA như sau: Phương thức demo_Step là phương thức mô tả từng bước chuyển trong quá trình đoán nhận chuỗi dùng để giải quyết thuật toán đoán nhận chuỗi Cụ thể có dạng: public... gồm các phương thức xử lý giải quyết các thuật toán về RG như sau: Phương thức LRRGconverttoFA()là phương thức chuyển văn phạm tuyến tính phải thành FA tương ứng đoán nhận nó Cụ thể có dạng: public FA LRRGconverttoFA() Phương thức này trả về một FA biểu diễn văn phạm chính quy hiện tại 30 4.2 Thiết kế, xây dựng chương trình Chức năng chính của chương trình: 1 Cho phép mô phỏng, xử lý các thuật toán. .. rỗng ε như văn phạm G Để G' tương đương G, ta cần thêm luật sinh S → ε vào G' 26 Chương 4 CÀI ĐẶT CHƯƠNG TRÌNH 4.1 Cài đặt thuật toán Em xây dựng các lớp thành phần: State, Transtion, Line, Des_Label, Gen_rule, StateandState, Paint, RG và FA Tương ứng như sau: Lớp State: Để biểu diễn một trạng thái của automat các thuộc tính và phương thức sau: State Id Location BanKinh Tyle ListTranstionSource ListTranstionDest... mô phỏng, xử lý các thuật toán đối với automat 2 Cho phép mô phỏng, xử lý các thuật toán đối với văn phạm 3 Cho phép sinh một số dạng automat tự động trên form, lưu ra file word cả nội dung và lời giải cho dạng câu hỏi 4 Tất cả các phép toán được mô phỏng trên chương trình đều có thể lưu ra file word Form cho phép vẽ một Automat: Đây là form có các chức năng thao tác với automat được hiển thị trên form... Phương thức này trả về một NFA tương đương với NFAε hiện tại Phương thức rutgonDFA() là phương thức rút gọn một DFA Giải quyết thuật toán rút gọn DFA ở trên Cụ thể có dạng: public FA rutgonDFA().Phương thức này trả về một DFA đã được rút gọn từ hiện tại Phương thức converttoDFA() là phương thức giải quyết thuật toán chuyển NFA thành DFA tương đương Cụ thể có dạng: public FA converttoDFA() Phương thức. .. trong P If( A là một biến và (A) P) Then δ([A], ε) = {[a]} If(a là một ký hiệu kết thúc) Then δ([a], a) = {[]} Trạng thái bắt đầu [S], trạng thái kết thúc [ε] 21 b.Ví dụ Xây dựng FA cho RG: S0A ; A 10A | e Ta xây dựng được FA biểu diễn nó như sau: c Chú ý Giải thuật xây dựng FA cho văn phạm tuyến tính trái được xây dựng dựa trên tính chất sau: Cho văn phạm G = < Σ, Δ, S, P >, và G’ = < Σ, Δ, S, P’ >,... Như vậy ta có thể xây dựng giải thuật theo 3 bước: Xác định văn phạm tuyến tính phải G’ = < Σ, Δ, S, P’ > Xây dựng NFA cho G’; Đảo ngược chiều các cạnh của NFA này, vị trí kết thúc trở thành vị trí bắt đầu và ngược lại 3.3 .Các thuật toán biến đổi trên văn phạm 3.3.1 Chuyển văn phạm tuyến tính phải thành văn phạm tuyến tính trái(ngược lại) a Tư tưởng Cho văn phạm G = < Σ, Δ, S, P >, và G’ = < Σ, Δ, S,... Giải thuật: Bước 1: Ω := Ø; Nếu luật sinh A ε thì thêm A vào Ω; 24 Nếu B X1X2 Xn, Xi ∊ Ω thêm B vào Ω; Bước 2: Xây dựng P’ Với mỗi luật A →X1X2 Xn , Xi ∊ (Σ+Δ) trong P, ta xây dựng luật sinh A → a1a2 an trong P’ với điều kiện: Nếu Xi ∉ Ω thì ai = Xi Nếu Xi ∊Ω thì ai = Xi | ε Không gán đồng thời tất cả ai đều bằng ε 3 Giải thuật loại bỏ các luật sinh đơn vị for (mỗi biến A ∊Δ) { Tính ΔA = { B | B ∊ Δ và. .. δ*(q, w) Ví dụ 11 Chương 3 CÁC THUÂT TOÁN 3.1 Các thuật toán biến đổi trên automat 3.1.1 Thuật toán kiểm tra đoán nhận chuỗi a Tư tưởng Duyệt lần lượt các kí tự của chuỗi cần đoán nhận, bắt đầu từ trạng thái bắt đầu của automat Nếu kí tự cuối cùng của chuỗi được duyệt tới trạng thái kết thúc của Automat thì kết luận automat đó đoán nhận chuỗi đó b Giả mã Input: Chuỗi cần đoán nhận và FA dùng để đoán... (↔ɛ *(q0) ) Tập trạng thái kết thúc: F’ = {E} (vì trong E có chứa trạng thái 10 F) 19 DFA tương ứng: 3.2 Các thuật toán biến đổi giữa automata và văn phạm 3.2.1 Chuyển FA sang văn phạm chính quy a Tư tưởng Nếu L là một tập hợp chính quy thì L được sinh ra từ một RG (văn phạm tuyến tính trái hoặc tuyến tính phải) nào đó Do đó, một FA có thể được biểu diễn bởi một RG b Giả mã Giải thuật xây dựng RG tuyến ... dụng học tập công tác giảng dạy Chương GIỚI THIỆU CHUNG 1.1 Nêu toán Bài toán: “Tìm hiểu xây dựng chương trình mô thuật toán hỗ trợ học tập giảng dạy môn học automata ngôn ngữ hình thức Môn học. .. cầu toán Bài toán: “Tìm hiểu xây dựng chương trình mô thuật toán hỗ trợ học tập giảng dạy môn học automata ngôn ngữ hình thức gồm hai phần là: Nghiên cứu, tìm hiểu thuật toán môn automat ngôn ngữ. .. “Tìm hiểu xây dựng chương trình mô thuật toán hỗ trợ học tập giảng dạy môn học automata ngôn ngữ hình thức em đạt mục tiêu đề ra: Tìm hiểu chung lý thuyết automat ngôn ngữ hình thức Tìm hiểu thuật

Ngày đăng: 30/12/2015, 14:44

Từ khóa liên quan

Mục lục

  • MỞ ĐẦU

  • Chương 1. GIỚI THIỆU CHUNG

    • 1.1. Nêu bài toán

    • 1.2. Yêu cầu bài toán

  • Chương 2. CƠ SỞ LÝ THUYẾT

    • 2.1. Ngôn ngữ hình thức

      • 2.1.1. Khái niệm ngôn ngữ hình thức

      • 2.1.2. Các khái niệm liên quan

    • 2.2. Văn phạm

      • 2.2.1. Khái niệm văn phạm

      • 2.2.2.Các khái niệm liên quan

      • 2.2.3. Phân loại văn phạm

    • 2.3. Automata hữu hạn

      • 2.3.1 Khái niệm chung về automat

      • 2.3.2. Các loại automat

  • Chương 3. CÁC THUÂT TOÁN

    • 3.1. Các thuật toán biến đổi trên automat

      • 3.1.1. Thuật toán kiểm tra đoán nhận chuỗi

      • 3.1.2 Tối giản automat

      • 3.1.3. Chuyển NFA sang DFA

      • 3.1.4 Chuyển NFAɛ sang NFA

      • 3.1.5 Chuyển NFAɛ sang DFA

    • 3.2. Các thuật toán biến đổi giữa automata và văn phạm

      • 3.2.1. Chuyển FA sang văn phạm chính quy

      • 3.2.2. Chuyển văn phạm sang FA

    • 3.3.Các thuật toán biến đổi trên văn phạm

      • 3.3.1. Chuyển văn phạm tuyến tính phải thành văn phạm tuyến tính trái(ngược lại)

      • 3.3.2. Rút gọn văn phạm phi ngữ cảnh

  • Chương 4. CÀI ĐẶT CHƯƠNG TRÌNH

    • 4.1. Cài đặt thuật toán

    • 4.2. Thiết kế, xây dựng chương trình

  • KẾT LUẬN

    • 1.Kết quả đạt được

    • 2.Hướng phát triển

  • TÀI LIỆU THAM KHẢO

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

Tài liệu liên quan