การค้นหาการแยกตัวประกอบสูงสุดของภาษาปกติ


13

Let ภาษาL⊆Σ∗เป็นปกติ

การแยกตัวประกอบของLเป็นคู่สูงสุด(X,Y)ของชุดคำด้วย

  • X⋅Y⊆L
  • X≠∅≠Y ,

โดยที่X⋅Y={xy | x∈X,y∈Y} }

(X,Y)(X′,Y′)≠(X,Y)X′⋅Y′⊆L Y ⊈ Y ′X⊈X′Y⊈Y′

มีขั้นตอนง่าย ๆ ในการค้นหาว่าคู่ใดมีค่าสูงสุด?

ตัวอย่าง:

Let * ชุดถูกคำนวณ: F = { u , v , w }L=Σ∗abΣ∗F={u,v,w}

  • u=(Σ∗,Σ∗abΣ∗)

  • v=(Σ∗aΣ∗,Σ∗bΣ∗)

  • w=(Σ∗abΣ∗,Σ∗)

ที่\}Σ={a,b}

ตัวอย่างอื่น:

L = Σ ∗ a Σ F = { q , r , s , t }Σ={a,b}และ Factorization setด้วยL=Σ∗aΣF={q,r,s,t}

  • q=(Σ∗,L)

  • r=(Σ∗a,Σ+L)

  • s=(Σ∗aa,ϵ+Σ+L)

  • t=(L,ϵ+L)


4
ฉันขอแนะนำให้อ่านบทความต่อไปนี้ (โดยเฉพาะหมวดย่อย 4.1) โดย Jacques Sakarovitch: perso.telecom-paristech.fr/~jsaka/PUB/Files/TUA.pdf
— ยี่ห้อ Cornelius

1
ฉันสงสัยว่าคุณอาจต้องการเฉพาะเจาะจงมากขึ้นเกี่ยวกับปัญหาคือประโยคสุดท้ายของคำถามของคุณหรือไม่ เราได้รับและเราต้องการทดสอบว่าหรือไม่? เป็นหน้าที่ของเราที่จะแจกแจงทั้งหมดที่มากที่สุดหรือไม่? หากหลังเป็นที่ชัดเจนหรือไม่ว่ารายการนี้มีขนาด จำกัด หรือมีขนาดพหุนาม อาจไม่เหมาะสมที่จะขออัลกอริทึมในการแจกแจงความเป็นไปได้ทั้งหมดหากมีหลายสิ่งที่อธิบาย นอกจากนี้คุณต้องการที่จะระบุว่าภาษาเป็นตัวแทนเมื่อมีการเสนอให้กับเราและวิธีการที่จะแสดง? (เช่น DFA, NFA, regexp)( X , Y ) ( X , Y ) L X , YX,Y(X,Y)(X,Y)LX,Y
— DW

2
ฉันไม่เข้าใจตัวอย่างของคุณ กำลังควรจะเป็นทุกคู่สูงสุด? ดูเหมือนว่าจะไม่ถูกต้อง ...vu,v,wv
— Raphael

1
ตัวอย่างนี้นำมาจากกระดาษข้างต้น ควรเป็นคู่สูงสุด ฉันยังไม่เข้าใจวิธีการนวณเพราะมันดูเหมือนว่าไม่จำเป็นต้องอยู่ใน{L} ฉันจะโพสต์ตัวอย่างอื่น v L Lu,v,wvL
— ลอร่า

1
@ ราฟาเอลฉันคิดว่าถูกต้อง ปล่อย , ,เป็นตัวประกอบเนื่องจาก (พิจารณาสตริงใด ๆ ที่ มีแล้วลำดับใด ๆ's และ / หรือ ' s แล้วในที่สุด : สตริงนี้จะต้องมีบางจุดที่แรกปรากฏขึ้นเพื่อให้เป็นจุดที่มันมี ) ฉันไม่ได้มีการพิสูจน์ว่ามันเป็นสูงสุด แต่ฉันไม่สามารถหาชุดใด ๆ ที่มีขนาดใหญ่ที่เป็นตัวประกอบของL} X = Σ * Σ * Y = Σ *ขΣ * ( X , Y ) X ⋅ Y = LขขขขX ' , Y ' LvX=Σ∗aΣ∗Y=Σ∗bΣ∗(X,Y)X⋅Y=LaabbbabX′,Y′L
— DW

คำตอบ:


8

ตามที่แนะนำในการแสดงความคิดเห็นต่อคำถามฉันจะพยายามให้คำตอบสำหรับคำถาม (น่าเสียดายที่บางส่วน) อย่างน้อยที่สุดเท่าที่ฉันได้เข้าใจปัญหาด้วยตัวเอง (นี่ก็หมายความว่าคุณอาจพบข้อผิดพลาด วิธีที่จะอธิบายสั้น ๆ หรือชัดเจนมากขึ้นหนึ่งในจุดด้านล่างอย่าลังเลที่จะแก้ไขคำตอบตามนั้น):

อันดับแรกเราควรทราบว่าเราไม่จำเป็นต้องคำนวณออโตเมติกสากลของภาษาหากเราต้องการคำนวณ 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

  1. Universal Automatonโดย Lombardy และ Sakarovitch (ในตำราในตรรกะและเกมเล่ม 2: Logic และ Automata: ประวัติศาสตร์และมุมมอง , 2007)

3
ดี! ขอให้ทราบว่าสามารถถอดรหัสได้สำหรับภาษาปกติและปัจจัยเหล่านี้ ,จบลงด้วยการเป็นปกติเนื่องจากคุณสมบัติการปิด ดังนั้นเราจึงไม่เพียงสามารถคำนวณสัญลักษณ์แสดงหัวข้อย่อยสุดท้ายในการสรุปได้อย่างมีประสิทธิภาพ แต่เรายังสามารถกรองคู่สูงสุดได้ด้วย X YA⊆BXY
— กราฟิลส์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.