ตามที่แนะนำในการแสดงความคิดเห็นต่อคำถามฉันจะพยายามให้คำตอบสำหรับคำถาม (น่าเสียดายที่บางส่วน) อย่างน้อยที่สุดเท่าที่ฉันได้เข้าใจปัญหาด้วยตัวเอง (นี่ก็หมายความว่าคุณอาจพบข้อผิดพลาด วิธีที่จะอธิบายสั้น ๆ หรือชัดเจนมากขึ้นหนึ่งในจุดด้านล่างอย่าลังเลที่จะแก้ไขคำตอบตามนั้น):
อันดับแรกเราควรทราบว่าเราไม่จำเป็นต้องคำนวณออโตเมติกสากลของภาษาหากเราต้องการคำนวณ factorizations ของภาษา
จากบทความที่กล่าวถึงในความคิดเห็นของฉัน there มีการโต้ตอบ 1-1 ระหว่างปัจจัยด้านซ้ายและด้านขวาของภาษาปกตินั่นคือเนื่องจากปัจจัยด้านซ้ายของภาษาปัจจัยด้านขวาที่สอดคล้องกันจะถูกกำหนดโดยเฉพาะและในทางกลับกัน แม่นยำยิ่งขึ้นเรามีสิ่งต่อไปนี้:
Letเป็นตัวประกอบของLจากนั้น
นั่นคือปัจจัยด้านซ้ายใด ๆ คือจุดตัดของการหารที่ถูกต้องและ ปัจจัยที่ถูกต้องใด ๆ คือจุดตัดของผลคูณหารซ้าย ตรงกันข้ามสี่แยกบวกลบคูณหารซ้ายของเป็นปัจจัยทางด้านขวาของและสี่แยกบวกลบคูณหารขวาของใด ๆเป็นปัจจัยทางด้านซ้ายของLL Y = ⋂ x ∈ X x - 1 L , X = ⋂ y ∈ Y L y - 1 , L L L L(X,Y)L
Y=⋂x∈Xx−1L,X=⋂y∈YLy−1,
LLLL
โปรดทราบว่าสำหรับภาษาปกติมีเพียงชุด จำกัด ของผลบวกซ้ายและขวาและดังนั้นหรือปัญหาลดการคำนวณความฉลาดทางซ้ายและขวาของภาษาและจากนั้นเพื่อคำนวณเสถียรปิดนั่นคือ superset น้อยที่สุดของการหารที่ปิดภายใต้สี่แยก เหล่านี้เป็นอย่างแม่นยำแล้วปัจจัยที่เหมาะสมและปัจจัยทางด้านซ้ายและจากนั้นก็มักจะง่ายที่จะเห็นซึ่งคู่เป็นส่วนย่อยของLล∩L
ตัวอย่าง
ในการอธิบายประเด็นข้างต้นให้พิจารณาตัวอย่างแรกในคำถาม (ซึ่งฉันคิดว่ามันไม่ถูกต้องในกระดาษด้วย):
Let\ ตอนนี้ผลหารซ้ายของคือเซตสำหรับนั่นคือคำเหล่านั้นในที่สามารถนำหน้าด้วยคือ . เมื่อใดที่สำหรับแตกต่างกัน ? ในกรณีนี้หากและสามารถเพิ่มเป็นคำใน L x - 1 L x ∈ Σ * U Σ * x x U ∈ L Y - 1 L = x - 1 L x , y ที่x Y LL=Σ∗abΣ∗Lx−1Lx∈Σ∗uΣ∗xxu∈Ly−1L=x−1Lx,yxyLด้วยคำต่อท้ายเดียวกันอย่างแม่นยำ นี่หมายถึงการทำให้มันเป็นคำศัพท์ที่คุ้นเคยมากขึ้นพวกมันคือ Nerode-สมมูลและคำต่อท้ายที่ต้องการผนวกเข้ากับคำในคลาส Nerode นั้นเป็นผลหารที่เหลืออย่างแม่นยำ
สำหรับเราเห็นว่าคลาส Nerode-สมมูลของเรานั้นL
- a b aN1 , ชุดของคำไม่ได้มีเป็นปัจจัยและลงท้ายด้วย, aba
- b a bN2ชุดคำที่ลงท้ายด้วยและไม่ได้มีเป็นปัจจัยและ bab
- a b N 3 = LN3ชุดคำที่มีเป็นตัวประกอบนั่นคือabN3=L
พวกเขาสามารถเพิ่มด้วยชุดต่อไปนี้ (นั่นคือเหล่านี้เป็นผลหารซ้ายของคำในชั้นเรียนที่เกี่ยวข้อง):
- S1=x−1Lสำหรับในประกอบด้วยคำทั้งหมดใน (คำใด ๆ ที่สามารถเติมด้วยคำที่มีเป็นปัจจัยและทำให้กลายเป็นคำใน ) และที่ คือxN1LabLbΣ∗S1=L∪bΣ∗
- S2=x−1Lสำหรับในเป็นภาษาตัวเองนั่นคือและxN2S2=L
- S3=x−1Lสำหรับในจะเห็นได้ชัด\นั่นก็คือเราได้พบสามปัจจัยทางขวาของLในฐานะที่เป็นการเสถียรของพวกเขานั้นมีเพียงเล็กน้อยและสิ่งเหล่านั้นเป็นปัจจัยที่ถูกต้องแม่นยำxN3Σ∗LS2⊂S1⊂S3∩S1,S2,S3
ดังนั้นชุดตัวประกอบของเราเป็นของแบบฟอร์มS_3)FL(P1,S1),(P2,S2),(P3,S3)
ตอนนี้สำหรับปัจจัยด้านซ้ายเราใช้สมการของการเริ่มต้นคำตอบนี้:Pi
Pi=⋂x∈SiLx−1
1}
สำหรับอัตราผลตอบแทนนี้สำหรับเราได้รับและเราได้รับLคุณสามารถดูสิ่งนี้ได้โดยการตรวจสอบ (ข้ออ้างที่นิยมกันมากที่สุดสำหรับการขี้เกียจเกินกว่าที่จะพิสูจน์หลักฐานอย่างเป็นทางการ) หรือโดยการคำนวณความฉลาดทางขวา (ซึ่งค่อนข้างคล้ายคลึงกันแม้ว่าจะไม่สมบูรณ์ในการคำนวณความฉลาดทางซ้าย) เราให้ความเป็นจริงโดยที่ไหนP1L∪Σ∗aP2Σ∗P3LFL=u,v,w
- u=(P1,S1)=(Σ∗abΣ∗∪Σ∗a,Σ∗abΣ∗∪bΣ∗)
- v=(P2,S2)=(Σ∗,Σ∗abΣ∗)และ
- w=(P3,S3)=(Σ∗abΣ∗,Σ∗)
สรุป
เพื่อสรุป (ตามที่คุณขอขั้นตอนง่าย ๆ ):
- สำหรับการคำนวณความเป็นจริงของภาษาให้คำนวณความฉลาดทางซ้ายของก่อนLL
- คุณสามารถทำได้ในภาษาของกระดาษโดยการสร้าง DFAขั้นต่ำสำหรับและจากนั้นสำหรับแต่ละสถานะใน (ที่สอดคล้องกันเป็นคลาส Nerode-สมมูลต่อกับหารซ้าย) คำนวณอนาคตของในดังนั้นการได้รับความฉลาดทางซ้ายของภาษาสำหรับแต่ละรัฐALqAqA
- การรวบรวมความฉลาดทางซ้ายที่ได้รับด้วยวิธีนี้ทำให้ส่วนย่อยของปัจจัยที่เหมาะสมSR
- Compute แล้วปิด -stable ของซึ่งสามารถทำได้ในทางปฏิบัติโดยการสร้างจุดตัดของชุดย่อยของใด ๆและการเพิ่มส่วนย่อยที่ได้รับในลักษณะนี้จะS_R∩SRSRSR
- ชุดร่วมกันกับทุกแยกจากขั้นตอนก่อนหน้านี้แล้วชุดของปัจจัยทางขวาของLSRL
- เพื่อให้ได้ปัจจัยทางด้านซ้ายให้เราสามารถคำนวณบวกลบคูณหารขวาของLL
- เหล่านี้เป็นชุดของแบบฟอร์มสำหรับ\ ตอนนี้สิ่งเหล่านี้มีเพียงจำนวน จำกัด อีกครั้งและสำหรับเรามีถ้าหากว่าสำหรับ , , นั่นคือพวกเขาสามารถนำหน้าคำในภาษาด้วยชุดสตริงเดียวกันได้อย่างแม่นยำปี∈ Σ * x ≠ Y L Y - 1 = L x - 1ยู∈ Σ * U x ∈ L ⇔ U Y ∈ LLy−1y∈Σ∗x≠yLy−1=Lx−1u∈Σ∗ux∈L⇔uy∈L
- การคำนวณพิจารณาบรรดารัฐในเช่นว่ามีอยู่ในอนาคตของคิวการรวมกันของอดีตของรัฐเหล่านั้นประกอบด้วยความฉลาดทางขวาหนึ่งครั้ง ค้นหาจำนวนทั้งหมดเหล่านี้ q A x qLx−1qAxq
- คุณรู้ว่าคุณทำเสร็จแล้วเมื่อคุณพบปัจจัยที่เหลือมากเท่าที่คุณมีปัจจัยที่ถูกต้อง
- หาคู่พวกซ้ายและขวาปัจจัยดังกล่าวว่าL นี่คือ\X ⋅ Y ⊆ L F LX,YX⋅Y⊆LFL
- Universal Automatonโดย Lombardy และ Sakarovitch (ในตำราในตรรกะและเกมเล่ม 2: Logic และ Automata: ประวัติศาสตร์และมุมมอง , 2007)