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


13

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

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

  • XYL
  • XY ,

โดยที่XY={xy | xX,yY} }

(X,Y)(X,Y)(X,Y)XYL Y Y XXYY

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

ตัวอย่าง:

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 = LX ' , Y ' LvX=ΣaΣY=ΣbΣ(X,Y)XY=LaabbbabX,YL
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=xXx1L,X=yYLy1,
LLLL

โปรดทราบว่าสำหรับภาษาปกติมีเพียงชุด จำกัด ของผลบวกซ้ายและขวาและดังนั้นหรือปัญหาลดการคำนวณความฉลาดทางซ้ายและขวาของภาษาและจากนั้นเพื่อคำนวณเสถียรปิดนั่นคือ superset น้อยที่สุดของการหารที่ปิดภายใต้สี่แยก เหล่านี้เป็นอย่างแม่นยำแล้วปัจจัยที่เหมาะสมและปัจจัยทางด้านซ้ายและจากนั้นก็มักจะง่ายที่จะเห็นซึ่งคู่เป็นส่วนย่อยของLL

ตัวอย่าง

ในการอธิบายประเด็นข้างต้นให้พิจารณาตัวอย่างแรกในคำถาม (ซึ่งฉันคิดว่ามันไม่ถูกต้องในกระดาษด้วย):

Let\ ตอนนี้ผลหารซ้ายของคือเซตสำหรับนั่นคือคำเหล่านั้นในที่สามารถนำหน้าด้วยคือ . เมื่อใดที่สำหรับแตกต่างกัน ? ในกรณีนี้หากและสามารถเพิ่มเป็นคำใน L x - 1 L x Σ * U Σ * x x U L Y - 1 L = x - 1 L x , y ที่x Y LL=ΣabΣLx1LxΣuΣxxuLy1L=x1Lx,yxyLด้วยคำต่อท้ายเดียวกันอย่างแม่นยำ นี่หมายถึงการทำให้มันเป็นคำศัพท์ที่คุ้นเคยมากขึ้นพวกมันคือ Nerode-สมมูลและคำต่อท้ายที่ต้องการผนวกเข้ากับคำในคลาส Nerode นั้นเป็นผลหารที่เหลืออย่างแม่นยำ

สำหรับเราเห็นว่าคลาส Nerode-สมมูลของเรานั้นL

  • a b aN1 , ชุดของคำไม่ได้มีเป็นปัจจัยและลงท้ายด้วย, aba
  • b a bN2ชุดคำที่ลงท้ายด้วยและไม่ได้มีเป็นปัจจัยและ bab
  • a b N 3 = LN3ชุดคำที่มีเป็นตัวประกอบนั่นคือabN3=L

พวกเขาสามารถเพิ่มด้วยชุดต่อไปนี้ (นั่นคือเหล่านี้เป็นผลหารซ้ายของคำในชั้นเรียนที่เกี่ยวข้อง):

  • S1=x1Lสำหรับในประกอบด้วยคำทั้งหมดใน (คำใด ๆ ที่สามารถเติมด้วยคำที่มีเป็นปัจจัยและทำให้กลายเป็นคำใน ) และที่ คือxN1LabLbΣS1=LbΣ
  • S2=x1Lสำหรับในเป็นภาษาตัวเองนั่นคือและxN2S2=L
  • S3=x1Lสำหรับในจะเห็นได้ชัด\นั่นก็คือเราได้พบสามปัจจัยทางขวาของLในฐานะที่เป็นการเสถียรของพวกเขานั้นมีเพียงเล็กน้อยและสิ่งเหล่านั้นเป็นปัจจัยที่ถูกต้องแม่นยำxN3ΣLS2S1S3S1,S2,S3

ดังนั้นชุดตัวประกอบของเราเป็นของแบบฟอร์มS_3)FL(P1,S1),(P2,S2),(P3,S3)

ตอนนี้สำหรับปัจจัยด้านซ้ายเราใช้สมการของการเริ่มต้นคำตอบนี้:Pi

Pi=xSiLx1
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_RSRSRSR
  • ชุดร่วมกันกับทุกแยกจากขั้นตอนก่อนหน้านี้แล้วชุดของปัจจัยทางขวาของLSRL
  • เพื่อให้ได้ปัจจัยทางด้านซ้ายให้เราสามารถคำนวณบวกลบคูณหารขวาของLL
  • เหล่านี้เป็นชุดของแบบฟอร์มสำหรับ\ ตอนนี้สิ่งเหล่านี้มีเพียงจำนวน จำกัด อีกครั้งและสำหรับเรามีถ้าหากว่าสำหรับ , , นั่นคือพวกเขาสามารถนำหน้าคำในภาษาด้วยชุดสตริงเดียวกันได้อย่างแม่นยำปีΣ * x Y L Y - 1 = L x - 1ยูΣ * U x L U Y LLy1yΣxyLy1=Lx1uΣuxLuyL
  • การคำนวณพิจารณาบรรดารัฐในเช่นว่ามีอยู่ในอนาคตของคิวการรวมกันของอดีตของรัฐเหล่านั้นประกอบด้วยความฉลาดทางขวาหนึ่งครั้ง ค้นหาจำนวนทั้งหมดเหล่านี้ q A x qLx1qAxq
  • คุณรู้ว่าคุณทำเสร็จแล้วเมื่อคุณพบปัจจัยที่เหลือมากเท่าที่คุณมีปัจจัยที่ถูกต้อง
  • หาคู่พวกซ้ายและขวาปัจจัยดังกล่าวว่าL นี่คือ\X Y L F LX,YXYLFL

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

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