1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Chuyển từ một npda sang một văn phạm phi ngữ cảnh

12 1 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

NHĨM 13-KHMT1-k2 2010 March 23, BỘ CƠNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN Báo Cáo Bài Tập Lớn Môn Automata Đề tài: Chuyển từ NPDA sang văn phạm phi ngữ cảnh Giáo viên hướng dẫn: Trần Hùng Cường Nhóm sinh viên thực hiện: Hoàng Thị Hạnh Nguyễn Văn Long Nguyễn Ngọc Phượng Lớp: KHMT1-K2 Khoa: Công Nghệ Thông Tin Trường: ĐH Công Nghiệp Hà Nội BTL- Môn Automata NHÓM 13-KHMT1-k2 2010 March 23, Chuyển từ NPDA sang văn phạm phi ngữ cảnh I.Lý thuyết: Bổ đề 7.1: Với npda ln có npda tương ứng thỏa mãn hai điều kiệu sau: 1.Chỉ có trạng thái kết thúc npda kết thúc stack rỗng 2.Mọi chuyển trạng thái có dạng: (qi,a,A)={c1,c2, ,cn}qi,a,A)={c1,c2, ,cn}c1,c2, ,cn} đó: ci={c1,c2, ,cn}qj,) (qi,a,A)={c1,c2, ,cn}7.5) hoặc: ci=(qi,a,A)={c1,c2, ,cn}qj,BC) (qi,a,A)={c1,c2, ,cn}7.6) tức di chuyển tăng giảm stack ký hiệu đơn Bây ta vào chứng minh bổ đề 7.1 cách xây dựng NPDA tương đương thỏa mãn điều kiện -Điều kiện 1: Giả sử NPDA có nhiều trạng thái kết thúc qi,qj,qk Ta chuyển hết tất trạng thái kết thúc qj,qk trạng thái kết thúc qi stack rỗng Điều tương đương với việc thêm chuyển dịch delta sau vào (qi,a,A)={c1,c2, ,cn}qj, ,z)->(qi,z), )->(qi,a,A)={c1,c2, ,cn}qi,z)->(qi,z), ), (qi,a,A)={c1,c2, ,cn}qj,,z)->(qi,z), )->(qi,a,A)={c1,c2, ,cn}qk,z)->(qi,z), ), với qi trạng thái kết thúc qj, qk trạng thái kết thúc cịn lại Sau ta gán lại cho qj, qk thành trạng thái không kết thúc Điều kiện thỏa -Điều kiện 2: * Đối với chuyển dịch có dạng: (qi,a,A)={c1,c2, ,cn}qi,a,A)->(qi,a,A)={c1,c2, ,cn}qj,B) tức thay A đỉnh Stack thành B (qi,a,A)={c1,c2, ,cn}số phần tử stack không đổi) BTL- Môn Automata NHÓM 13-KHMT1-k2 2010 March 23, ta tạo trạng thái qt Sau ta dùng trạng thái qt để làm bước trung gian chuyển từ trạng thái qi sang qj thay A đỉnh Stack thành B Bước làm sau: Xóa chuyển trạng thái (qi,a,A)={c1,c2, ,cn}qi,a,A)->(qi,a,A)={c1,c2, ,cn}qj,B) thay chuyển trạng thái: (qi,a,A)={c1,c2, ,cn}qi,a,A)->(qi,a,A)={c1,c2, ,cn}qt,BB) //Thay ký tự A đỉnh Stack thành ký tự B chuyển sang qt (qi,a,A)={c1,c2, ,cn}qt,,B)->(qi,a,A)={c1,c2, ,cn}qj,) //Từ qt, không cần nhận ký tự từ ngõ nhập đỉnh Stack //lúc B (qi,a,A)={c1,c2, ,cn}2 ký tự B) Ta bỏ ký tự B Như thế, bước chuyển trạng thái tương đương với bước chuyển trạng thái (qi,a,A)={c1,c2, ,cn}qi,a,A)->(qi,a,A)={c1,c2, ,cn}qj,B) *Đối với chuyển dịch có dạng: (qi,a,A)={c1,c2, ,cn}qi,a,A)->(qi,a,A)={c1,c2, ,cn}qj,BCDE) tức thay A đỉnh Stack thành BCDE (số ) tức thay A đỉnh Stack thành BCDE) tức thay A đỉnh Stack thành BCDE (số (qi,a,A)={c1,c2, ,cn}số phần tử đỉnh Stack tăng thêm nhiều 1) ta tạo trạng thái qt trung gian Sau dùng trạng thái qt để làm bước trung gian để thay A chuỗi BCDE) tức thay A đỉnh Stack thành BCDE (số F Các bước thực lần lược sau: (qi,a,A)={c1,c2, ,cn}qi,a,A)->(qi,a,A)={c1,c2, ,cn}qt,E) tức thay A đỉnh Stack thành BCDE (số ) //Chuyển sang trạng thái tạm qt thay A DE) tức thay A đỉnh Stack thành BCDE (số Đỉnh stack lúc //này DE) tức thay A đỉnh Stack thành BCDE (số (qi,a,A)={c1,c2, ,cn}qt, ,D)->(qi,a,A)={c1,c2, ,cn}qt,CD) //thay D CD mà không cần đọc ký tự vào Đỉnh stack lúc //này CDE) tức thay A đỉnh Stack thành BCDE (số Trạng thái qt (qi,a,A)={c1,c2, ,cn}qt, ,C)->(qi,a,A)={c1,c2, ,cn}qj,BC) //Thay C BC chuyển xuống trạng thái qj yêu cầu Đỉnh stack lúc BCDE) tức thay A đỉnh Stack thành BCDE (số - Như với bước trung gian ta thực (qi,a,A)={c1,c2, ,cn}qi,a,A)>(qi,a,A)={c1,c2, ,cn}qj,BCDE) tức thay A đỉnh Stack thành BCDE (số ) thỏa mãn dk - Sau chuyển NPDA thảo mãn bổ đề ta chuyển NPDA thành văn phạm - Với chuyển dịch (qi,a,A)={c1,c2, ,cn}7.5) ta sinh luật sinh tương ứng: (qi,a,A)={c1,c2, ,cn}qiAqj)->a - Cịn với chuyển dịch có dạng (qi,a,A)={c1,c2, ,cn}7.6) có tập luật sinh: (qi,a,A)={c1,c2, ,cn}qiAqj)->a(qi,a,A)={c1,c2, ,cn}qjBql)(qi,a,A)={c1,c2, ,cn}qlCqk) ql qk trạng thái lấy tập Q (qi,a,A)={c1,c2, ,cn}q0 qn) - Cuối ta lấy (qi,a,A)={c1,c2, ,cn}q0z)->(qi,z), qf) biến bắt đầu văn phạm với qf biến kết thúc đơn NPDA BTL- Môn Automata NHÓM 13-KHMT1-k2 2010 March 23, *Bước cuối thao tác loại bỏ luật sinh vô dụng Các bước sau: B1: Đầu tiên ta tạo tập biến hữu dụng BHD biến (qi,a,A)={c1,c2, ,cn}qiAqj) có dạng: (qi,a,A)={c1,c2, ,cn}qiAqj)->a B2: Đối với luật sinh (qi,a,A)={c1,c2, ,cn}qiAqj)->a(qi,a,A)={c1,c2, ,cn}qjBql)(qi,a,A)={c1,c2, ,cn}qlCqk) với (qi,a,A)={c1,c2, ,cn}qiAqj) biến không thuộc tập biến hữu dụng BHD (qi,a,A)={c1,c2, ,cn}qjBql),(qi,a,A)={c1,c2, ,cn}qlCqk) thuộc BHD thêm (qi,a,A)={c1,c2, ,cn}qiAqj) vào B3: Lặp bước thêm phần tử vào B4:Đối với luật sinh (qi,a,A)={c1,c2, ,cn}qiAqj)->a(qi,a,A)={c1,c2, ,cn}qjBql)(qi,a,A)={c1,c2, ,cn}qlCqk) mà (qi,a,A)={c1,c2, ,cn}qiAqj) (qi,a,A)={c1,c2, ,cn}qjBql) (qi,a,A)={c1,c2, ,cn}qlCqk) khơng thuộc tập BHD bỏ loại bỏ luật sinh (qi,a,A)={c1,c2, ,cn}thực cần xét (qi,a,A)={c1,c2, ,cn}qiAqj) có thuộc tập BHD khơng thơi (qi,a,A)={c1,c2, ,cn}qjBql) (qi,a,A)={c1,c2, ,cn}qlCqk) thuộc BHD (qi,a,A)={c1,c2, ,cn}qiAqj) thuộc tập này) Như ta Văn phạm G tương đương với NPDA M cho II.Cài đặt: Việc cài đặt chương trình thực chất biến bước chơ thành code: Lớp NPDA: Dựa vào thông số NPDA, làm thỏa mãn điều kiện (bao gồm 7.5 7.6 chưa thỏa) chuyển sang Văn phạm phương thức toVP public class NPDA {c1,c2, ,cn} public int q_; //So trang thai toi da cua npda public String xichma=""; //Cac ky tu ngo nhap public String gama=""; //Cac ky tu chua stack public ArrayList delta=new ArrayList(qi,a,A)={c1,c2, ,cn}); //Ham chuyen public int qst=0; //Trang thai bat dau public String z)->(qi,z), ="z)->(qi,z), "; //Ky tu khoi dau stack public boolean F[]=new boolean[100000]; //Trang thai ket thuc //Khoi tao NPDA, chua lam j het public NPDA(qi,a,A)={c1,c2, ,cn}) {c1,c2, ,cn}} //Chuyen NPDA ve NPDA thoa dieu kien BTL- Môn Automata NHÓM 13-KHMT1-k2 2010 March 23, public void thoadieukien1(qi,a,A)={c1,c2, ,cn}) {c1,c2, ,cn} for (qi,a,A)={c1,c2, ,cn}int i=0; i(qi,z), e(qi,a,A)={c1,c2, ,cn}); for (qi,a,A)={c1,c2, ,cn}int i=0; i=4) {c1,c2, ,cn} //Tao them trang thai q_++; //Lay ham chuyen dich String tam2=tam.substring(qi,a,A)={c1,c2, ,cn}0,tam.indexOf(qi,a,A)={c1,c2, ,cn}">>")); //Lay trang thai can chuyen den String tam3=tam.substring(qi,a,A)={c1,c2, ,cn}tam.indexOf(qi,a,A)={c1,c2, ,cn}">>")); String tam4=tam3.substring(qi,a,A)={c1,c2, ,cn}2,tam3.indexOf(qi,a,A)={c1,c2, ,cn}",")); //Lay danh sach bien can thay the String dsbien=tam3.substring(qi,a,A)={c1,c2, ,cn}tam3.indexOf(qi,a,A)={c1,c2, ,cn}",")+1,tam3.length(qi,a,A)={c1,c2, ,cn})1); //lay ky tu cuoi String tam5=dsbien.substring(qi,a,A)={c1,c2, ,cn}dsbien.length(qi,a,A)={c1,c2, ,cn})-2); delta.add(qi,a,A)={c1,c2, ,cn}tam2+">>(qi,a,A)={c1,c2, ,cn}q"+q_+","+tam5+")"); dsbien=dsbien.substring(qi,a,A)={c1,c2, ,cn}0,dsbien.length(qi,a,A)={c1,c2, ,cn})-1); while (qi,a,A)={c1,c2, ,cn}true) {c1,c2, ,cn} if (qi,a,A)={c1,c2, ,cn}dsbien.length(qi,a,A)={c1,c2, ,cn})(qi,z), )={c1,c2, ,cn}(qi,a,A)={c1,c2, ,cn}q0,Az)->(qi,z), )} (qi,a,A)={c1,c2, ,cn}q0,b,A)={c1,c2, ,cn}(qi,a,A)={c1,c2, ,cn}q1, )} (qi,a,A)={c1,c2, ,cn}q1, ,z)->(qi,z), )={c1,c2, ,cn}(qi,a,A)={c1,c2, ,cn}q2, )} với q0 trạng thái bắt đầu q2 trạng thái kết thúc D.Cài đặt sử dụng: A.Cài để chạy chương trình: Đầu tiên cài Java Runtime từ file “jre-6u17-windows-i586.exe” Sau cài xong chạy trực tiếp ứng dụng viết Java (qi,a,A)={c1,c2, ,cn}Cụ thể vào thư mục “chuong trinh” có file jar, file chạy giống file exe) B.Cài để xem source code: Cài Netbean 6.1 kèm Java vào từ file “jdk-6u7-nb-6_1-windows-ml.exe” Sau cài xong ta vào File chọn Open Project sau chọn đến đường dẫn nơi ta đặt Project chương trình để mở xem source chương trình (qi,a,A)={c1,c2, ,cn}Cụ thể thư mục “ma nguon”) E.Tài liệu tham khảo: BTL- Mơn Automata NHĨM 13-KHMT1-k2 2010 March 23, - Giáo viên hướng dẫn: Trần Hùng Cường - Tập “Giáo trình Automat” thầy PGS, TS Phạm Văn Chung (qi,a,A)={c1,c2, ,cn}ĐH Công nghiệp tp.HCM) - Giáo trình “Lý thuyết Automat ngơn ngữ hình thức” thầy Hồ Văn Quân (qi,a,A)={c1,c2, ,cn}ĐH Bách Khoa Tp.HCM) nhà xuất ĐH Quốc gia tp.HCM * Báo cáo gồm: -Tập báo cáo -Đĩa CD chứa báo cáo, source code, chương trình phần mềm kèm theo BTL- Môn Automata

Ngày đăng: 29/09/2023, 12:53

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w