บทที่ 3 (ต่อ) ไวยากรณ์เรกูลาร์
<noun> <article> <noun> <article> a ไวยากรณ์เรกูลาร์ ทุกภาษาต้องมีไวยากรณ์รองรับ ไวยากรณ์ทำหน้าที่กำหนดกฎเกณฑ์ในการสร้างภาษา <sentence> <noun> <noun> <article> <noun> <article> a <article> the <noun > doc
ไวยากรณ์เรกูลาร์ <> คือตัวแปร(Variable) เช่น <sentence> สัญลักษณ์ที่ไม่ได้ล้อมรอบด้วยเครื่องหมาย <> เรียก เทอร์มินอล เช่น a, the, doc, cat สามารถใช้ไวยากรณ์เรกูลาร์ (Regular Grammar) อธิบายภาษาเรกูลาร์ได้อีก นอกจากใช้นิพจน์เรกูลาร์ และไฟไนต์ออโตมาตา
ไวยากรณ์เรกูลาร์ (Regular Grammar) นิยาม กำหนดให้ไวยากรณ์ G = (V,T,S,P) ไวยากรณ์ G จะเป็น เรกูลาร์เมื่อ G อยู่ในรูปอย่างใดอย่างหนึ่งต่อไปนี้ V1t1V2 (ไวยากรณ์แบบ Right-linear) V1t2 หรือ V1V2t1 (ไวยากรณ์แบบ Left-linear) V1t2 โดยที่ และ
ตัวอย่างที่ 1 ไวยากรณ์เรกูลาร์ G = (V,T,S,P)โดยที่ V = {V1,V2} T = {a,b} S = {V1} P : V1a V1 | abV2 V2a | b ไวยากรณ์นี้ถือว่าเป็นไวยากรณ์แบบ Right-linear
ตัวอย่างที่ 2 ไวยากรณ์เรกูลาร์ G = (V,T,S,P)โดยที่ V = {S} T = {a,b} S = {S} P : SabS Sa ไวยากรณ์นี้ถือว่าเป็นไวยากรณ์แบบ Right-linear และสามารถสร้างสตริงจากไวยากรณ์ G ได้หลายสตริง เช่น SabSaba SabSababSabababa สรุปภาษาของไวยากรณ์เรกูลาร์ G ได้ L(G) = (ab)*a
แบบฝึกหัด
ข้อ 1 G = (V,T,S,P)โดยที่ V = {S} T = {a,b,c} S = {S} P : SabcS Sab* ข้อ 2 G = (V,T,S,P)โดยที่ V = {S} T = {a,b} S = {S} P : SSabS Sb
การลดรูปสถานะของไฟไนต์ออโตมาตา
การลดรูปสถานะของไฟไนต์ออโตมาตา ไฟไนต์ออโตมาตาสามารถอธิบายภาษาเรกูลาร์ได้ ไฟไนต์ออโตมาตาที่ยาวซับซ้อน ทำความเข้าใจได้ยาก สามารถลดรูปไฟไนต์ออโตมาตาได้
หลักการลดรูปสถานะของไฟไนต์ออโตมาตา e d c qj qi q a b พยายามกำจัดสถานะที่ไม่ใช่สถานะเริ่มต้นและสถานะสุดท้าย ในที่นี้คือ q สร้างนิพจน์เรกูลาร์ที่ต้องใช้ในการเดินจากสถานะเริ่มต้น qi ไปยังสถานะสุดท้าย qj และจาก qj ไป qi
ตัวอย่างที่ 1 การลดรูปสถานะของไฟไนต์ออโตมาตา e d c qj qi q a b ce*b ae*d ce*d qj qi ae*b
ตัวอย่างที่ 2 การลดรูปสถานะของไฟไนต์ออโตมาตา 1 qk qi qj 1 0,1 0,10*1 10*0 qk qi 0,1
แบบฝึกหัด
จงทำการลดรูปสถานะของไฟไนต์ออโตมาตาดังต่อไปนี้ 1 1 qk qi qj 1 1 1 qk qi qj 1