Chương trình minh họa hoạt động automat dayChuong | CƠ SƠ LY THUYET Lang Các automat day chấp nhận một lớp ngôn ngữ rộng hơn lớp các ngôn ngữ được chap nhận bởi các automat hữu hạn, lớp
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM TP.HCM
Trang 2LỜI NÓI ĐẦU
oad,
Mén học ngôn ngữ hỉnh thức va automat có rất nhiều ứng dụng trong lĩnh
vực khoa học may tinh như xây dựng các trình biên dịch, nhận dạng và chuyên đôi
vita các ngôn ngữ khác nhau Do đỏ môn học này là môn học bat buộc đối với
các sinh viên nghành CNTT trong các trường | dai học Tuy nhién việc giảng dạy
và học môn nay con gap nhiều khỏ khăn do thiếu các chương trình hỗ trợ để minhhoa, Dd án được xảy dựng không ngoài mục đích cung cấp công cụ hỗ trợ cho
việc day va học trong đỏ tap trung xảy dựng chương trình minh họa hoạt động của
automat day,
Chương trình củn nhiều hạn chế va sai sót, mong các bạn thông cảm
Thanh phê Hỗ Chi Minh, ngày 15 thắng 6 nằm 2006
Hi ml Ki ier
SVTH: Nguyễn Thai Khánh Quyên I
Trang 3Chương trình minh họa hoạt động automat day
Chuong |
CƠ SƠ LY THUYET
Lang
Các automat day chấp nhận một lớp ngôn ngữ rộng hơn lớp các ngôn ngữ
được chap nhận bởi các automat hữu hạn, lớp này có quan hệ chặt chẽ với các
thiết bị và quá trình của kĩ thuật tính toán đặc biệt là các công cụ dé dịch và phan
lich ngôn ngữ lap trinh
Một automat day bao gốm:
Một bang vao trên dé có ghi một bộ chữ kết thúc
Một dau đọc dé đọc ki hiệu trên bang vào mỗi lan chỉ doc một kí hiệu rỗi
dich sang phải một vị trí hoặc không doc và đứng nguyên tại chỗ
Một tap hữu han các trạng thải điều khiến
Một bang day trên dé ghi một từ thuộc bảng chữ kết thúc hoặc không kết
Trang 4Chương trình minh họa hoạt động automat day
Ta có thể định nghĩa một cách hình thức như sau;
L/ Các định nghĩa:
Lí Dinh nghĩa 1:
Automat day không tiễn định là bộ bay M=<K,V,W,Ø,g,,z,,F>, trong đó:
K là tập hợp hữu hạn không rỗng các trạng thái
V là bang chữ kết thúc(bảng chữ vào),
W la bang chữ không kết thúc.
g, © X là trạng thái đầu
F eX là trạng thai kết thúcz„ eW là ký hiệu dau trên bang day
œ là ánh xạ từ tập con của Kx(VUte})x Wo vào P(KxW”)
Quả trình chap nhận của tử œ =a;,a) a, e V* của automat day M diễn ra
như sau:
Từ wm dược ghi trên băng vào Lúc dau máy ở trạng thai qo, trên băng day
chỉ chứa ki hiệu z) ở day, dau đọc/phi lúc đầu ở ki hiệu zụ, đầu đọc đọc kí hiệu a,trên bang vào, ki hiệu z ở trên đỉnh bang day, tùy theo gia trị của ø (q,b,z) (b hoặc
a, hoặc là z } máy có thể chuyển sang trạng thai p nào đó, đầu đọc có thể đứng yên hoặc chuyển sang đọc a,., (tuỳ theo b là a, hay £ ) thay z trên bang day bằng y e W
va dau đọc phì chuyên lên vị tri cuỗi cùng trên băng day Quá trình này có thể mỗ
tả một cách hình thức bằng việc chuyển đổi các cầu hình như trong các định nghĩa
Sau
2/ Dinh nghĩa 2:
Cho automat day M=<K,V,W, o,9,.2,,.F> Một cầu hình của M là một bộ
hà <q,œ.y =, trong đó qeK, a eV*,y eW*,
Cho @ =ai,aa, ,a V*, y =XI,Xạ, ,Xmc6 W* Dưới tac dung của anh xa chuyén
trạng thai, M có thé chuyển từ cầu hình này sang cầu hình khác theo nguyễn tắc
sau:
a) Neu <p,y >eo (q,ãp.XmJ thi cau hinh <q, äiäz ,XịX1 Xm” CO thé chuyén
sang cầu hinh <p,lạ 8y,X¡Xz Xm.¡ÿ > và kí hiệu:
<Q, aị8ạ 8y,XỊXa Km> | <page ay XK Ry >
bì Nếu <p,y >eø (q,e,x,) thi cau hình <q, aạa; ay,XỊX x„> có thể chuyển
đến cầu hình <p,ayaạ ay,XịXạ Xm.¡y > và được ki hiệu như sau:
<q), ñyña ft,XỊX3 Mg L <P,4I81-.-81XI|Xa -Xm.|}Ÿ >
SVTH: Nguyễn Thái Khánh Quyên 3
Trang 5Chương trình minh họa hoạt động automat day
3/ Dir hi
Cho automat day không tiên định M=<K,V,W,o,q,,2,.F> và từ o eV*,
Chúng ta nói rằng automat M chap nhận từ vai trạng thai kết thúc nếu ton tai
một dãy hữu hạn các cau hình œ »,o \, ,Œ „ sao cho:
a) & g=<qy,0 zZo> gọi là cầu hình đầub) œ „=<p,E ,y >, pe F gọi là cầu hình kết thúc
trạng @ p,@ |, ,Œ „ của M sao cho:
a) @ g=<qu,to ,Z4> gọi là cầu hình dau
b) a, Fe je) với mọi i (Ì=0,1,2, m)
c) Œ m=<p,E ,E > gọi la cau hình kết thúc
Tập hop các từ được chap nhận bởi bang nhé rỗng kỉ hiệu là N(M).
5/ Vị dụ |:
Cho automat day tien dinh M1=<{q0.q1,42},4a,b},{Zo21},0 o.20> với o
dược cho như sau:
<qu,aabb,zp> |<qi,aab,z¿z¡> |<qi.bb,zaz\z4> |<qa.b,zaz\> <qa,£ 20> |Zq,,E ,£>
Và <qu,abaab,z„> |<qi,baab,zgz¡> <qa,aab,zy>
Dé dang thầy ring @ ¡c N(M) con @ ;e N(M]), o2¢T(M) Tổng quát chúng
ta có thể chứng minh được rằng N(M)}=T(M} {a"b" , n>=0}
6/ Ví dụ 2:
Xét automat đây không tiên định M2== {qui}, 10,1), {20212210 su 2n 9 >
đ đây œ được xác định như sau:
& (qu,0.,zn0}={Sqn.Zazi>}
SVTH: Nguyễn Thái Khánh Quyễn 4
Trang 6Chương trình minh họa hoạt động automat đẩy
các cấu hình như sau:
Trang 7Chương trình minh họa hoạt động automat day
Đường nét đứt là day dịch chuyên các cau hình di đến chap nhận từ 110011
với bang đây rồng Day địch chuyển này như sau:
-Cũng như đối với automat hữu hạn chúng ta có thé mô tả automat day
không tiên định bằng sơ đồ chuyển trạng thái Giữa 2 nút kí hiệu bởi p,q có một
cạnh định hướng từ q đến p và được kí hiệu bởi (a,z/y ) nêu (p.y )e ơ (q,a,z),
aeVtz‡c};p.qeK;zeW; y eW*
1I/ Các định lý:
L/ Định til:
Ngôn ngữ L được chấp nhận bởi automat day MI với ban dây rỗng khi vả
chi khi ton tại một automat đây M2 chấp nhận L với trạng thái kết thúc
Chứng minh:
Gia sử L được chấp nhận bởi automat M2=<K,V,W, ø,4,.z,,Ê> với trạng
thái kết thúc Chúng ta xây dựng MI như sau:
MI=<K+/ {So,S}.V,We [x),ơ “Sox >, ở đây SeSẽK,xeW, a"
được cho nhu sau:
-Với mọi q<K, mọi ae V hoặc a=e , với mọi ze W, ø '(q.a,z) chứamọi phan tử của ø (q,a,2)
-Với mọi qeF, mọi ze WU {x}, Ø `(q.£ ,z) chứa <§,£ >.
-Với mọi ze Wu {x}, o `(S,z ,Z)=(<§,z >}
-Ø *(Se.€ ,X)={<qu,XZoœ>}
Bay giờ ta cần chứng minh T(M2)=N(M1)Lấy œ < T(M2) khi do ton tại một day dịch chuyển các cấu hình sao cho :
<Qo 0) Zo> k Kp, sy >.peF,y eW*
Suy ra :<S¡ 0X? <qu.œ ,XZ¿> L ae |<p.e XY > <S.c XY >k ve
-<S,c ,r > hay œ eN(MI)
Lay w eN(MI),lúc đó <S¿,e ,x> } }<q,e ,e >, với qeK và do đồ ta có:
<Sy,t x> | <qg, ,xZ> } F<p,e xy >Ƒ <S,e xy > ở đây
p€F.y `=xy(xe W) Thêm vào đó <S,¢ ,xy > L avs <S,e >
SVTH: Nguyễn Thai Khanh Quyền 6
Trang 8Chương trình minh họa hoạt động automat đây
Vậy <qo.0 xZ4> |<p.e xy > hay <qo,@ x2o> ƑÈ F<p.e.y >, peF
có nghĩa law e T(M2)
Bay giờ gia sử L được chap nhận bởi MI=<K,V,W,øØ,g,.z ,ệ > với băng
nhớ rồng Ta xảy dựng automat M2=<K {So,S},V,Wv [x},o *.qo.x,{S}> ở đây
S;„SeK,xeW, Z" được cho như sau:
-Với moi ge K, mọi ae V hoặc a=e , moi ze W, ơ `'(q,a,z)=ø (q,a,2) -Với mọi qeK, ø `(q,e ,z) chứa <S,e >.
-Ø “(So,€ ,X)={<qQa,xZe>}
Nếu « €N(MI) thi <qo,@ ,Z¿> k k<p.e >
Ta có <Sg,@ x> } <qo,0 , XZg> L oY <p.e x> _ <S,¢,e>
Suy ra œ e T(M2).
Nếu œ €T(M2) thi <So,@ ,x> L sẽ <S,z „y>.ycW*
Do định nghĩa ø ` nên trước khi đến cấu hình <S,e ,y > ta phái có cấu hình
<q.£ x> Điều này có nghĩa là ton tại dãy cấu hình <So,@ ,x> +
vs Feqve ,x> |K§,e ,y > và rõ rằng y =e Thêm vào đó <So,@ ,x> | <qo, ,XZ¿> L
Vị dụ 4: Cho văn phạm phi ngữ cảnh G=< (a,b},(S,A},S,P> trong đó P< (Sa,
S>bSA, A>b, S>bS, ADaS} Theo định lý trên ta có thể xây dựng automat day
chấp nhận L(G) như sau:
M=<{a} fa.b} (a,b,S.A),ơ, q, S, @> trong đó o được xác định như sau:
ø (q,£ ,3)= (<q,a>,<q,ASb>,<q,Ab>})ơ(q,£ ,A)= (<q,b>,<q.Sa>}
ø (q,a,a)= {<q,£ >}
ø (q,b,b)={<q,e >}
3/ Định lý 3;
Giả sử M=<K,V,W,ø,ø,„.z, vệ > là automat day không tiên định bat ky, lúc
đó tên tar vẫn phạm phi ngữ cánh G sao cho L(G)<N(M).
SVTH: Nguyễn Thai Khánh Quyên — 7
Trang 9Chương trinh minh họa hoạt động automat day
I/ Phần 1: nhập thông số automat day gồm:
+5 textbox: chứa thông tin của các thành phần K, V, W, F, o (Delta)
+15 nút (button): cho phép nhập thông tin vào các thành phần K, V, W, F,
ơ bao gồm
© 4 nút tạo: xuất man hình dé nhập số phan tử can tạo trong các tập
K, V, W, F gọi form tạo phần tử
I Textbox dé nhập số phan
tử cần tao
2 Nút tạo
— Teo | aor 3, Nút thoát form, không
thực hiện tạo phân tử mới
© 5 nút thêm trong đó 4 nút thêm của các thành phần K, V,W, F gọi
form thêm phan từ:
I Textbox để nhập phan tử cần
thêm
= 2 Nút thêm
3 Nút thoát form, không
[Them | La = thuc hién thém phan tử
2
© Núi thêm của Delta gọi form nhập anh xa Delta:
SVTH: Nguyễn Thái Khánh Quyên 8
Trang 10Chương trình minh họa hoạt động automat day
1 Textbox dé nhập chi số cua
phan tử can xóa
Nhap chi so phan tu can xoe‹ | 1 2 Núi xóa
3 Nút thoát form, không
i Xoa | Cancel | s
thực hiện xóa phan tử
e Nut nhập lại cua Delta: cho phép nhập lại các anh xạ Delta
2/ Phần 3 mỏ tá hoạt động của automat đây gom
Đây các textbox chứa bang chữ vào
Diy các textbox chứa bang chữ không ket thúc
Textbox biếu điển quả trình biến đối
Nut nhập tu: gọi torm đẻ nhập từ can kiểm tra
Trang 11Chương trình minh họa hoạt động automat đẩy
-Nút kiểm tra: thực hiện kiểm tra từ và xuất kết quả ra man hình
-Nút chạy từng bước: thực hiện kiểm tra từ lừng, bước một
-Nút bước kế tiếp: chuyển sang bước kiểm tra tiếp theo
Toàn bộ giao diện chính như sau:
13.Cac nút tạo, thêm, xóa
của K,V,W,F
14.Các nút thêm, xóa, nhập lại của Delta
z0 = (<a), z0x1>
bd se) 14
SVTH: Nguyễn Thái Khánh Quyên 10
Trang 12Chương trình minh họa hoạt động automat diy
Il Tổ chức cấu trúc dữ liệu:
Trong lớp COtomatDayÐlg ta lưu trừ dữ liệu của K.V,W.F, bang chữ vào
va bang chữ không kết thúc
ES =
K:CStringArray V:CStringArray W:CStringA ray
class COtomatDayDlg : public CDialog
(
protected:
CStringArray K, — “chứa dit liệu của tập trạng thai K CStringArray V; — //chứa dé liệu của bảng chữ vào V
CStringArray W; //chửa dit liệu của bảng chữ không kết thúc W
CStringArrayF, /chứa dif liệu của tập trạng thái kết thúc F CStringArray A; /chứa dữ liệu
CStringArrayZ, — /chứa dit liệu
Đôi với Delta, ta xảy dựng lớp CDelta dé lay đữ liệu từ form
SVTH: Nguyễn Thái Khánh Quyên H
Trang 13Chương trình mình họa hoạt động automat đây
V:CString W:CStnng
K-CStringArray
SVTH: Nguyén Thai Khanh Quyén 12
Trang 14Chương trình minh họa hoạt động automat đây
class CDelta
{
public:
CStringArray K; /chứa dit liệu của tập trang thai K
CString V; //chứa đữ liệu của bảng chữ vào V
CString W; I/chứa dit liệu của bảng chữ không kết thúc W
J/Đỗi với tập W*, ta khai bao 9 biến tương ứng với từng combobox
Sơ đỗ quy trình kiếm tra từ:
SVTH: Nguyễn Thái Khánh Quyên 13
Trang 15Chương trình minh họa hoạt động automat day
Qht: trạng thai hiện tai
CheckIn(Qht,&F): kiểm tra từ được chip nhận với trang thai kết
SVTH: Nguyễn Thái Khánh Quyên
Trang 16Chương trinh minh họa hoạt động automat đây
void C!Otomatl2ayDlg OnKiemTra()
|
‘TODO: Add your control notification handler code here
‘khoi tao gia tri ban dau
for (Zpos - Z.GetStze()-Ì;Zpos>=0;:2pos )
SV111: Nguyễn Thai Khánh Quyền
Trang 17Chương trình minh họa hoạt động automat đây
Trang 18Chương trình minh họa hoạt động automat đẩy
{
ViewStatic(" > Khong chap nhan !");
retum;
//Xu li truong hop co 2 quy tac
if (i<n && j<n && j!=l)
Trang 19Chương trình minh họa hoạt động automat day
Trang 20Chương trình minh họa hoạt động automat day ¬
}
SVTH-NguyễnThiKhahQuyn | THƯVIN l9
Trang 21Chương trình minh họa hoạt động automat đầy
1V/ Ưu và nhược điểm của chương trình
L/ Uu điểm:
Chương trình dé sử đụng và tiện lợi trong các thao tác nhập xuất
Hỗ trợ các chức năng thêm, xóa thuận tiện cho người ding trong thao tac chỉnh
sửa, thay đổi chương trình
Xử lý tốt những bài toán có nhiều hưởng di
Đặc biệt chương trình đưa ra kết quả thực hiện từng bước, dé dang cho người dùngkiêm tra, tham khảo kết quả trong quá trình học
2/ Nhược điểm:
Giao điện nhỏ, chưa đẹp
Không có các ứng dụng đổ họa vào chương trình
SVTH: Nguyễn Thái Khánh Quyên 20
Trang 22Chương trình minh hoa hoạt động automat day
Cho automat đây tiên định Ml =< {qo,q:.q›}.(a.b},{Zo.Z¡},Ø qo.zo> với ø
được cho như sau:
Ø (Qu,£ Zo)" {<qo.E >}
-Nhắn nút tạo của tập K trên form sẽ xuất hiện hộp thoại yêu cầu nhập số lượng trạng thái của tập K
-Khi đó tập các trạng thái tự động được cập nhật vào tập
K=¡q0,q1.q2}
Thong so Otomat Dạy ——————————
aoe, Celtel)
-Nếu can thêm một trang thái khác vảo tap K, nhắn nút thêm va nhập
phần tử can thêm vào
SVTIH: Nguyễn Thái Khánh Quyên 2
Trang 23Chương trình mình họa hoạt động automat đây
-Thực hiện tương tự cho các phan tử khác ta sẽ được tập K bat kỷ
như ÿ muôn
- -Nếu muốn xóa phan tử thứ i trong tập K ta nhắn nút xóa va nhập
chỉ sô i dé xóa (i=1,2 ,n).
Nhap chi so phan tu can xoa oa
Lưu ý sau khi xóa một phần tử thì chỉ số được cập nhật lại Ví dụ:
Tập K=(I,2,3), chỉ số im!) ứng với giá trị là 1, khi xóa phan | thi K={2,3}, khi đó chỉ số i=l ứng với giá trị là 2
Bước 2: Nhập bang chữ kết thúc V, thực hiện tương tự như bước | Bước 3: Nhập bang chữ kết thúc W, thực hiện tương tự như bước |
Bước 4: Nhập ánh xạ o
-Nhắn vào nút thêm, xuất hiện hộp thoại để nhập thông tin vào, ta
click chọn từng phan tu theo yéu cau cua bai toan
[5: Kx (VU fe}) x W> P(K x W*)
SVTH: Nguyễn Thái Khanh Quyền —
.
Trang 24Chương trình mình họa hoạt động automat day
Sau khi nhập xong tat cả các thông tin, dit liệu được trình bảy như
Bước 6: Thực hiện kiếm tra
-Cé 2 nút dé thực hiện kiếm tra:
Nút kiểm tra: xuất kết qua nhanh ra màn hình
Nút chạy từng bước: thực hiện kiểm tra từng bước mới xuất
ket qua ra man hình
-Nếu chọn nút kiêm tra ta được kết qua ngay lập tức trên man hình-Néu chọn chạy từng bước ta sẽ thấy được quy trình đọc tir một cách
rò rang hơn Quy trình đọc như sau
o BỊ: đầu đọc tại vị trí thứ nhất của từ œ ¡=aabb là a,
đầu đọc/ ghi tại 20, máy ở trạng thái q0, nhắn vào
nút bước kẻ tiếp dé qua bước 2
SVTII: Nguyễn Thai Khánh Quyên
Trang 25Chương trình minh họa hoạt động automat đây
_RIIERTTTTTT+
m¬ [Bang veo
| ¬— | bu.
SCRE
© B2: -Chon kiểu kiểm tra, xuất hiện hộp thoại yêu
cầu chọn hướng đi, đối với ví dụ này ta chọn hướng
thứ 2
— Hoal dong Otomat Day '
(q0, ø, 20) ={<q0, >} va (q0, a z0) ={‹q1, z0z1>}
Ban chon so
-Nhan OK, ta thấy đầu đọc tại vị tri thứ hai của từ
œ ¡=aabb là a, đầu đọc/ghi tại z1, máy ở trạng thái q1, nhắn vào nút bước kế tiếp
Trang 26Chương trình minh họa hoạt động automat day
SVTH: Nguyễn Thái Khánh Quyên
© B3: Dầu đọc tại vị trí thứ ba của từ @ ¡=aabb là b,
đầu doc/ghi tại z1, máy ở trạng thái q!
Hoại dong Otomat Day
[efefefef [TT TT”
ca“ po cat ebb s01 > na
cow }- < q1, bb, z0z1z1 > Ouse
© B4: Đầu doc tai vị trí thứ tư của từ œ ;=aabb là b,
đầu đọc/ghi tại z1, máy ở trạng thái q2
Hatt Geng Dinas Day
Trang 27+ Hoat dong Otomat Day
hương trình minh họa hoạt động automat đã
Minn SCP CTP
| Cen cos Fan: ange
rime te 8 mar
LỆ EErFE
[ mu ][ Kema ][Datungkeec |[ Beeekeue ]
© Bố: Đầu doc đọc hết từ , dầu đọc/ghi rỗng, máy ở
trạng thái q2
Hoại dang Otomat DWýT——————
[eJs fe hE Tr Br te |
Dau dọc |— < ql bb z0z1z1 > |wu I= £92 Bae > — Bang veo
Bang dap ioeqlae> v =
Chay tung base | [ Bune ke tep
© B7: đưa ra kết luận từ @ ¡=aabb được chấp nhận
Trang 28Chương trình minh họa hoạt động automat day
- Hoat dong Otomat Day
Tương tự với @ y=abaab, kết qua từ @ ; không được chấp nhận
SVTH: Nguyễn Thái Khánh Quyên
Trang 29Chương trình mình họa hoạt động automat đây
Otamat Day
| Chương trình minh họa hoạt động Otomat đây
How dong OrometDay = = |
Xét automat đây không tiên định M2 =<{qu;q¡} {0.1} {20,21.2Z2}.0 ,Qo.20.$ > ¿
ở đây o được xác định như sau: