จะพิสูจน์ภาษาได้อย่างไร?


48

มีหลายวิธีในการพิสูจน์ว่าภาษาไม่ปกติแต่ฉันต้องทำอย่างไรเพื่อพิสูจน์ว่าภาษาบางอย่างเป็นปกติ

ตัวอย่างเช่นหากฉันได้รับเป็นปกติฉันจะพิสูจน์ได้อย่างไรว่าต่อไปนี้เป็นปกติเช่นกันL LL

L:={wL:uv=w for uΣL and vΣ+}

ฉันสามารถวาดออโตเมติก จำกัด แบบไม่มีการกำหนดเพื่อพิสูจน์สิ่งนี้ได้หรือไม่?


1
มีการพิมพ์ผิดในคำจำกัดความของคุณโปรดแก้ไขเพื่อแก้ไข L
Ran G.

2
"การวาด" นั้นไม่มีข้อพิสูจน์ คุณต้องให้ NFA และพิสูจน์ว่ายอมรับภาษา
Raphael

ผมคิดว่าคำนิยามภาษาที่ยังไม่ได้ทำให้ความรู้สึก ...
hugomg

2
อย่างไรก็ตามภาษาเฉพาะนั้นไม่เกี่ยวข้องหากคำถามคือ "ฉันสามารถวาด NFA เพื่อพิสูจน์ว่าเป็นเรื่องปกติ" @Corium เราสามารถแก้ไขคำถามเพื่อสะท้อนคำถามทั่วไปได้มากขึ้น: "วิธีการพิสูจน์ว่าเฉพาะนั้นปกติหรือไม่" L
Ran G.

คำตอบ:


48

ใช่หากคุณสามารถทำสิ่งใดสิ่งหนึ่งต่อไปนี้:

สำหรับภาษาแล้วเป็นปกติ มีโมเดลที่เทียบเท่ากันมากกว่าแต่มีรูปแบบทั่วไปLL

นอกจากนี้ยังมีคุณสมบัติที่มีประโยชน์นอกโลก "การคำนวณ" ก็ปกติเช่นกันL

  • มัน จำกัด
  • คุณสามารถสร้างได้โดยการดำเนินการบางอย่างในภาษาปกติและการดำเนินการเหล่านั้นจะปิดสำหรับภาษาปกติเช่น

    • สี่แยก
    • เสริม
    • homomorphism,
    • กลับรายการ
    • ซ้ายหรือขวาฉลาด
    • การถ่ายทอดปกติ

    และอีกมากมายหรือ

  • ใช้ทฤษฎีบท Myhill – Nerodeถ้าจำนวนคลาสที่เทียบเท่าสำหรับมี จำกัดL

ในตัวอย่างที่ให้มาเรามีค่า (ค่าปกติ) บางค่าเป็นพื้นฐานและต้องการพูดบางอย่างเกี่ยวกับภาษาได้มาจากภาษานั้น ทำตามแนวทางแรก - สร้างแบบจำลองที่เหมาะสมสำหรับ - เราสามารถสรุปได้ว่าแบบใดที่เทียบเท่ากับเราต้องการ มันจะยังคงเป็นนามธรรมแน่นอนเนื่องจากไม่เป็นที่รู้จัก ในแนวทางที่สองเราสามารถใช้โดยตรงและใช้คุณสมบัติปิดไปในการสั่งซื้อที่จะมาถึงคำอธิบายสำหรับL'L L L L L L LLLLLLL


4
มันก็อาจจะคุ้มค่าที่จะพิสูจน์ว่าการพิสูจน์ภาษามี จำกัด ก็เพียงพอที่จะแสดงให้เห็นว่ามันเป็นเรื่องปกติ ที่สามารถเป็นประโยชน์โดยเฉพาะอย่างยิ่งในการพิสูจน์ที่ไม่ใช่เชิงสร้างสรรค์โดยกรณี
Patrick87

2
regexp ของที่พบในภาษาการเขียนโปรแกรมสามารถทำได้มากกว่าภาษาปกติ คุณต้อง จำกัด โครงสร้าง "แบบคลาสสิก"
David Lewis

4
@DavidLewis: ในเว็บไซต์นี้คุณอาจสันนิษฐานได้ว่าโดย "การแสดงออกปกติ" ความคิดดั้งเดิมมีความหมาย
Raphael

@ DavidLew ฉันเห็นด้วยเราควรหลีกเลี่ยง "regexp" ในบริบทของทฤษฎีเพื่อหลีกเลี่ยงความสับสน
Raphael

โปรดทราบว่าสำหรับหนึ่งในสี่กระสุนแรกคุณจะต้องมีหลักฐานแสดงว่าการเป็นตัวแทนของคุณถูกต้องแน่นอน
Raphael

10

วิธีการเบื้องต้น

  1. ออโต จำกัด (อาจเป็น nondeterministic โดยมีการเปลี่ยนว่าง)
  2. นิพจน์ทั่วไป
  3. สมการเชิงเส้นขวา (หรือซ้าย แต่ไม่ใช่ทั้งคู่) เช่นโดยที่และเป็นปกติK LX=KX+LKL
  4. ไวยากรณ์ปกติ (ประเภท 3)
  5. การดำเนินการอนุรักษ์ภาษาปกติ (การใช้งานบูลีน, ผลิตภัณฑ์, ดาว, การสุ่ม, morphisms, ผกผันของ morphisms, การกลับรายการ ฯลฯ )
  6. ได้รับการยอมรับโดย monoid จำกัด

วิธีการทางตรรกะ (มักใช้ในการตรวจสอบอย่างเป็นทางการ)

  1. ตรรกะลำดับที่สองแบบ Monadic (ทฤษฎีบทของBüchi)
  2. ตรรกะเชิงเส้นตรง (ทฤษฎีบทของ Kamp)
  3. ทฤษฎีบทต้นไม้ของราบิน (Monadic ตรรกะลำดับที่สองกับผู้สืบทอดสองคน) ทรงพลังมาก.

วิธีการขั้นสูง

  1. บทแทรกที่ซับซ้อน ดูตัวอย่าง
    [1] J. Jaffe, บทแทรกที่จำเป็นและเพียงพอสำหรับภาษาปกติ, Sigact News - SIGACT 10 (1978) 48-49
    [2] A. Ehrenfeucht, R. Parikh, และ G. Rozenberg, บทแทรกสำหรับชุดปกติ, SIAM J. Comput 10 (1981), 536-541
    [3] S. Varricchio, สภาพปั๊มสำหรับชุดปกติ, SIAM J. Comput 26 (1997) 764-771

  2. คำสั่งซื้อเสมือน ดู
    [4] W. Bucher, A. Ehrenfeucht, D. Haussler, ตามข้อบังคับทั้งหมดที่เกิดจากความสัมพันธ์ที่ได้รับมาTheor คอมพิวเต วิทย์ 40 (1985) 131–148
    [5] M. Kunz, คำตอบปกติของความไม่เท่าเทียมกันทางภาษาและคำสั่งเสมือนจริง

  3. การสนับสนุน -rational seriesN

  4. วิธีการทางพีชคณิตตามTransductions (ดูปฏิบัติการการรักษาภาษาปกติ )


4

คำตอบของ Ran G. ให้รายการแบบจำลองที่เทียบเท่าอย่างกว้างขวางซึ่งสามารถใช้เพื่อระบุภาษาปกติ (และรายการจะดำเนินต่อไป, ออโตมาตาสองทาง, ตรรกะ MSO แต่ครอบคลุมโดยลิงก์ภายใต้ 'โมเดลที่เทียบเท่ากันมากขึ้น) ') และเมื่อราฟาเอลเน้นเราจำเป็นต้องมีข้อโต้แย้งเพื่อโน้มน้าวให้ผู้ชมเห็นว่าการเป็นตัวแทนที่เลือกนั้นถูกต้องแน่นอน

พิจารณาคำถามอีกครั้งโดยเพิ่ม "ตัวอย่างเช่น " นั่นหมายความว่าเราจะต้องให้ถูกต้องก่อสร้างที่ได้รับการใด ๆ ของรุ่นดังกล่าวข้างต้นเราสมมติระบุภาษา , ผลัดกันว่ารูปแบบเป็นหนึ่งสำหรับL'ซึ่งมักจะเป็นชนิดเดียวกันของรูปแบบ แต่ไม่จำเป็นต้องเป็น: เราสามารถเช่นเริ่มต้นด้วย FSA กำหนดสำหรับและจบลงด้วยการเป็นหนึ่งที่ nondeterminitic สำหรับL'L L L L LLLL

ซึ่งรวมถึงความเป็นไปได้ที่จะใช้การดำเนินการปิด: ในการดำเนินงานให้ชัดเจนในตัวอย่างที่เรามี *L=(ΣL)Σ

ดังนั้นประเด็นของฉันคือคำตอบนั้นยอดเยี่ยม แต่เราควรเพิ่ม "จากเป็นก่อสร้างเมื่อไม่สร้างภาษาเฉพาะตั้งแต่เริ่มต้นL LL


1
ฉันไม่แน่ใจว่าสิ่งที่คุณได้รับ หากฉันมีโมเดลสำหรับฉันสามารถแปลงเป็นโมเดลอื่นที่เทียบเท่าได้ L
กราฟิลส์

@ ราฟาเอลขออภัยฉันทำจุดของฉัน คำตอบก่อนหน้านี้ดูเหมือนจะอธิบายว่าเราสามารถสร้างคำอธิบายของภาษา (เช่นหุ่นยนต์การดำเนินงาน ฯลฯ ) ฉันเห็นด้วย. อย่างไรก็ตามคำถามดูเหมือนจะเกี่ยวกับคุณสมบัติการปิดดูตัวอย่างที่กำหนด จุดนั้นฉันหายไปในคำตอบอื่น ๆ : เพื่อพิสูจน์คุณสมบัติการปิดคุณถือว่าคุณมีคำอธิบายและสร้างใหม่
Hendrik Jan

1
โอ้นี่ ! ตอนนี้ฉันเข้าใจแล้วไม่ดี ฉันเห็นด้วยด้านนี้หายไปจากคำตอบของ Ran L
Raphael

1
ฉันไม่แน่ใจว่าทำไมมันหายไป (หรือสิ่งที่ขาดหายไป) สมมติว่าคุณมีปกติและคุณต้องการที่จะพิสูจน์เป็นปกติเช่นเดียวคุณสามารถเริ่มต้นด้วย 's DFA และใช้มันเพื่อสร้าง DFA สำหรับLแต่สิ่งนี้ถูกปกคลุมด้วย "สร้าง DFA สำหรับ " .. ไม่มีข้อ จำกัด ในการใช้ออโตเมติกสำหรับงานนั้น (และโดยธรรมชาติถ้าถูกกำหนดผ่านคุณจะถูกบังคับให้ใช้ออโตเมติก .. ) . เช่นเดียวกันกับ regexp การปิดไวยากรณ์ ฯลฯ L L ' L L L ' L L ' L 'LLLLLLLLL
Ran G.

1
โอวตกลง. ที่จริงแล้วฉันอยากจะแก้ไขคำถามและลบส่วน "ตัวอย่าง" เพื่อทำให้คำถามทั่วไปและอ้างอิงสำหรับคำถามที่คล้ายกันในอนาคต .. (:
Ran G.

4

ในบางครั้งคุณจะพบภาษาที่ระบุว่า "สตริงทั้งหมดที่สตริงย่อย -element ทั้งหมดของตาม" โดยที่คือค่าคงที่คงที่ ในกรณีนั้นภาษาจะเป็นปกติ แนวคิดในที่นี้คือการกำหนดออโตเมติกอัน จำกัด บางแห่งซึ่งรัฐ "จดจำ" สัญลักษณ์อินพุตเพิ่งเห็นล่าสุดเช่นเดียวกับคำตอบของคำถามนี้k s k ksks<some property>kk


4

อีกวิธีหนึ่งที่ไม่ได้รับการคุ้มครองโดยคำตอบข้างต้นคือการเปลี่ยนแปลงแน่นอนหุ่นยนต์ ตัวอย่างง่ายๆให้เราแสดงว่าภาษาปกติปิดภายใต้การดำเนินการสลับแบบกำหนดไว้ดังนี้: คุณสามารถแสดงการปิดภายใต้การสับเปลี่ยนโดยใช้คุณสมบัติการปิด แต่คุณยังสามารถแสดงมันได้โดยตรงโดยใช้ DFAs สมมติว่าเป็น DFA ที่ยอมรับ (สำหรับ ) เราสร้าง DFAดังนี้:

L1SL2={x1y1xnynΣ:x1xnL1,y1ynL2}
Ai=Σ,Qi,Fi,δi,q0iLii=1,2Σ,Q,F,δ,q0
  • ชุดสถานะคือซึ่งองค์ประกอบที่สามจำได้ว่าสัญลักษณ์ต่อไปคือ (เมื่อ 1) หรือ (เมื่อ 2)Q1×Q2×{1,2}xiyi
  • สถานะเริ่มต้นคือ\q0=q01,q02,1
  • รัฐยอมรับเป็น\}F=F1×F2×{1}
  • ฟังก์ชันการเปลี่ยนแปลงถูกกำหนดโดยและ\δ(q1,q2,1,σ)=δ1(q1,σ),q2,2δ(q1,q2,2,σ)=q1,δ2(q2,σ),1

รุ่นที่มีความซับซ้อนมากขึ้นของวิธีการนี้เกี่ยวข้องกับการคาดเดา ตัวอย่างเช่นให้เราแสดงว่าภาษาปกติปิดใต้การกลับรายการนั่นคือ (ที่นี่ .) นี่เป็นหนึ่งในการดำเนินการปิดมาตรฐานและการปิดภายใต้การพลิกกลับอย่างง่ายดายดังต่อไปนี้จากการควบคุมการแสดงออกปกติ (ซึ่งอาจถือได้ว่าเป็นคู่ของการเปลี่ยนแปลงหุ่นยนต์ จำกัด นิพจน์ทั่วไป) - เพียงแค่ย้อนกลับนิพจน์ปกติ แต่คุณสามารถพิสูจน์ได้ว่าการปิดบัญชีโดยใช้ NFA สมมติว่าเป็นที่ยอมรับโดย DFA\ เราสร้าง NFA

LR={wR:wΣ}.
(w1wn)R=wnw1LΣ,Q,F,δ,q0Σ,Q,F,δ,q0 , ที่ไหน
  • ชุดของรัฐเป็น\}Q=Q{q0}
  • สถานะเริ่มต้นคือq'_0q0
  • รัฐยอมรับไม่ซ้ำกันคือq_0q0
  • ฟังก์ชันการเปลี่ยนแปลงถูกกำหนดไว้ดังนี้:และสำหรับสถานะใด ๆและ ,\}δ(q0,ϵ)=FqQσΣδ(q,σ)={q:δ(q,σ)=q}

(เราสามารถกำจัดหากเราอนุญาตให้เริ่มต้นหลายสถานะ) องค์ประกอบการเดาที่นี่คือสถานะสุดท้ายของคำหลังจากกลับรายการq0


การคาดเดามักเกี่ยวข้องกับการยืนยันเช่นกัน ตัวอย่างง่ายๆอย่างหนึ่งคือการปิดภายใต้การหมุน : สมมติว่าเป็นที่ยอมรับโดย DFA\ เราสร้าง NFAซึ่งทำงานดังนี้ NFA คาดเดาแรกx) จากนั้นตรวจสอบว่าและ , ย้ายจากไปยังไม่ใช่ non-deterministically นี่สามารถทำเป็นกรงเล็บดังนี้:

R(L)={yxΣ:xyL}.
LΣ,Q,F,δ,q0Σ,Q,F,δ,q0q=δ(q0,x)δ(q,y)Fδ(q0,x)=qyx
  • รัฐมี\} นอกเหนือจากสถานะเริ่มต้นรัฐที่มีที่เป็นรัฐที่เราเดาเป็นรัฐในปัจจุบันและระบุว่าเราอยู่ที่ส่วนหนึ่งของการป้อนข้อมูล (เมื่อ 1) หรือที่เป็นส่วนหนึ่งของการป้อนข้อมูล (เมื่อ 2)Q={q0}Q×Q×{1,2}q0q,qcurr,sqqcurrsyx
  • สุดท้ายรัฐเป็น : เรายอมรับเมื่อ QF={q,q,2:qQ}δ(q0,x)=q
  • การเปลี่ยนดำเนินการคาดเดาQδ(q0,ϵ)={q,q,1:qQ}q
  • การเปลี่ยน (สำหรับทุกและ ) จำลอง DFA ดั้งเดิมδ(q,qcurr,s,σ)=q,δ(qcurr,σ),sq,qcurrQs{1,2}
  • การเปลี่ยน , สำหรับทุกและ , ทำการย้ายจากส่วนไปยังส่วนที่สิ่งนี้จะได้รับอนุญาตเฉพาะเมื่อเราถึงสถานะสุดท้ายในส่วนδ(q,qf,1,ϵ)=q,q0,2qQqfFyxy

อีกตัวแปรหนึ่งของเทคนิครวมเคาน์เตอร์ที่มีขอบเขต เป็นตัวอย่างให้เราพิจารณาเปลี่ยนการปิดการแก้ไขระยะทาง : ให้ DFAสำหรับ , e สร้าง NFAสำหรับดังต่อไปนี้:

Ek(L)={xΣ: there exists yL whose edit distance from x is at most k}.
Σ,Q,F,δ,q0LΣ,Q,F,δ,q0Ek(L)
  • ชุดสถานะคือซึ่งรายการที่สองนับจำนวนการเปลี่ยนแปลงที่ทำได้Q=Q×{0,,k}
  • สถานะเริ่มต้นคือ\q0=q0,0
  • รัฐยอมรับเป็น\}F=F×{0,,k}
  • ทุกเรามีการเปลี่ยนซิก)q,σ,iδ(q,σ),iδ(q,i,σ)
  • แทรกจะถูกจัดการโดยการเปลี่ยนสำหรับทุกเช่นที่<kq,i+1δ(q,i,σ)q,σ,ii<k
  • การลบถูกจัดการโดยการเปลี่ยนสำหรับทั้งหมดอย่างที่ .δ(q,σ),i+1δ(q,i,ϵ)q,σ,ii<k
  • การทดแทนคือการจับโดยการเปลี่ยนสำหรับเช่นที่<kδ(q,σ),i+1δ(q,i,τ)q,σ,τ,ii<k

3

ภาษาเป็นปกติ IFF คุณสามารถเขียนสแกนเนอร์ที่ตัดสินใจในสายโดยพลการไม่ว่าจะเป็นหรือไม่พวกเขาเป็นภาษาที่ใช้ไม่มากไปกว่าการแก้ไขจำนวนหน่วยความจำ - คือการรับรู้สามารถทำได้ในO (1)พื้นที่


O (1) space คุณหมายถึงอะไร ไม่ว่าในกรณีใดก็ตามสิ่งนี้ถูกปกคลุมด้วยข้อเท็จจริงที่ว่า DFA นั้นพอเพียง มันอาจจะคุ้มค่าที่จะบันทึกความเท่าเทียมนี้อย่างชัดเจนในแง่ของการเขียนโปรแกรม
กราฟิลส์

ใช่มันเป็นเพียงมุมมองที่แตกต่าง
reinierpost

3

การแปลงการแสดงออกปกติเป็นวิธีหนึ่งที่จะพิสูจน์การปิดภายใต้การดำเนินการบางอย่าง สองตัวอย่างที่ง่ายที่สุดที่มีการปิดภายใต้การกลับรายการและการปิดภายใต้homomorphism

ด้วยนิพจน์ทั่วไปเป็นตัวแทนของภาษาเราสามารถสร้างนิพจน์ทั่วไปสำหรับซึ่งเป็นภาษาที่ตรงกันข้ามของคำทั้งหมดในซึ่งเรียกซ้ำ:rLLRL

  • ϵR=ϵ , ,\σR=σR=
  • (r1+r2)R=(r1R+r2R) , , R(r)R=(rR)(r1r2)R=r2Rr1R

ทุกการกระทำที่เกิดขึ้นในกฎสุดท้าย R ตัวอย่างเช่นคุณสามารถตรวจสอบว่า *โครงสร้างอุปนัยกำหนดว่าภาษาของเป็นแน่นอน ( 0 1 ) R = 1 0 r R L R(r1r2)R=r2Rr1R(01)R=10rRLR

อีกตัวอย่างง่ายๆคือการปิดภายใต้โฮโมมอร์ฟิซึม ให้โฮโมมอร์ฟิซึมและนิพจน์ทั่วไปสำหรับภาษาเราสามารถรับนิพจน์ปกติสำหรับโดยแทนที่ทุกตัวอย่างของในโดย . r L h ( L ) σ r h ( σ )h:ΣΔrLh(L)σrh(σ)


0

อีกวิธีหนึ่งคือการสร้างภาษาโดยใช้การดำเนินการที่คุณรู้ว่าพวกเขาจะปิด นี่คือส่วนขยายเพื่อแสดงการแสดงออกปกติในขณะที่คุณมีการดำเนินการอื่น ๆ อีกมากมาย (ย้อนกลับสตริง, ประกอบ, แยก, ตัดออกชิ้นเพียงเก็บส่วน homomorphisms และผกผัน homomorphisms ... )


2
ที่กล่าวถึงแล้วในคำตอบของ Ran
กราฟิลส์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.