มีหลายวิธีในการพิสูจน์ว่าภาษาไม่ปกติแต่ฉันต้องทำอย่างไรเพื่อพิสูจน์ว่าภาษาบางอย่างเป็นปกติ
ตัวอย่างเช่นหากฉันได้รับเป็นปกติฉันจะพิสูจน์ได้อย่างไรว่าต่อไปนี้เป็นปกติเช่นกันL ′
ฉันสามารถวาดออโตเมติก จำกัด แบบไม่มีการกำหนดเพื่อพิสูจน์สิ่งนี้ได้หรือไม่?
มีหลายวิธีในการพิสูจน์ว่าภาษาไม่ปกติแต่ฉันต้องทำอย่างไรเพื่อพิสูจน์ว่าภาษาบางอย่างเป็นปกติ
ตัวอย่างเช่นหากฉันได้รับเป็นปกติฉันจะพิสูจน์ได้อย่างไรว่าต่อไปนี้เป็นปกติเช่นกันL ′
ฉันสามารถวาดออโตเมติก จำกัด แบบไม่มีการกำหนดเพื่อพิสูจน์สิ่งนี้ได้หรือไม่?
คำตอบ:
ใช่หากคุณสามารถทำสิ่งใดสิ่งหนึ่งต่อไปนี้:
สำหรับภาษาแล้วเป็นปกติ มีโมเดลที่เทียบเท่ากันมากกว่าแต่มีรูปแบบทั่วไปล
นอกจากนี้ยังมีคุณสมบัติที่มีประโยชน์นอกโลก "การคำนวณ" ก็ปกติเช่นกัน
คุณสามารถสร้างได้โดยการดำเนินการบางอย่างในภาษาปกติและการดำเนินการเหล่านั้นจะปิดสำหรับภาษาปกติเช่น
และอีกมากมายหรือ
ในตัวอย่างที่ให้มาเรามีค่า (ค่าปกติ) บางค่าเป็นพื้นฐานและต้องการพูดบางอย่างเกี่ยวกับภาษาได้มาจากภาษานั้น ทำตามแนวทางแรก - สร้างแบบจำลองที่เหมาะสมสำหรับ - เราสามารถสรุปได้ว่าแบบใดที่เทียบเท่ากับเราต้องการ มันจะยังคงเป็นนามธรรมแน่นอนเนื่องจากไม่เป็นที่รู้จัก ในแนวทางที่สองเราสามารถใช้โดยตรงและใช้คุณสมบัติปิดไปในการสั่งซื้อที่จะมาถึงคำอธิบายสำหรับL'L ′ L ′ L L L L ′
วิธีการเบื้องต้น
วิธีการทางตรรกะ (มักใช้ในการตรวจสอบอย่างเป็นทางการ)
วิธีการขั้นสูง
บทแทรกที่ซับซ้อน ดูตัวอย่าง
[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
คำสั่งซื้อเสมือน ดู
[4] W. Bucher, A. Ehrenfeucht, D. Haussler, ตามข้อบังคับทั้งหมดที่เกิดจากความสัมพันธ์ที่ได้รับมาTheor คอมพิวเต วิทย์ 40 (1985) 131–148
[5] M. Kunz, คำตอบปกติของความไม่เท่าเทียมกันทางภาษาและคำสั่งเสมือนจริง
การสนับสนุน -rational series
วิธีการทางพีชคณิตตามTransductions (ดูปฏิบัติการการรักษาภาษาปกติ )
คำตอบของ Ran G. ให้รายการแบบจำลองที่เทียบเท่าอย่างกว้างขวางซึ่งสามารถใช้เพื่อระบุภาษาปกติ (และรายการจะดำเนินต่อไป, ออโตมาตาสองทาง, ตรรกะ MSO แต่ครอบคลุมโดยลิงก์ภายใต้ 'โมเดลที่เทียบเท่ากันมากขึ้น) ') และเมื่อราฟาเอลเน้นเราจำเป็นต้องมีข้อโต้แย้งเพื่อโน้มน้าวให้ผู้ชมเห็นว่าการเป็นตัวแทนที่เลือกนั้นถูกต้องแน่นอน
พิจารณาคำถามอีกครั้งโดยเพิ่ม "ตัวอย่างเช่น " นั่นหมายความว่าเราจะต้องให้ถูกต้องก่อสร้างที่ได้รับการใด ๆ ของรุ่นดังกล่าวข้างต้นเราสมมติระบุภาษา , ผลัดกันว่ารูปแบบเป็นหนึ่งสำหรับL'ซึ่งมักจะเป็นชนิดเดียวกันของรูปแบบ แต่ไม่จำเป็นต้องเป็น: เราสามารถเช่นเริ่มต้นด้วย FSA กำหนดสำหรับและจบลงด้วยการเป็นหนึ่งที่ nondeterminitic สำหรับL'L L ′ L L ′
ซึ่งรวมถึงความเป็นไปได้ที่จะใช้การดำเนินการปิด: ในการดำเนินงานให้ชัดเจนในตัวอย่างที่เรามี *
ดังนั้นประเด็นของฉันคือคำตอบนั้นยอดเยี่ยม แต่เราควรเพิ่ม "จากเป็นก่อสร้างเมื่อไม่สร้างภาษาเฉพาะตั้งแต่เริ่มต้นL ′
ในบางครั้งคุณจะพบภาษาที่ระบุว่า "สตริงทั้งหมดที่สตริงย่อย -element ทั้งหมดของตาม" โดยที่คือค่าคงที่คงที่ ในกรณีนั้นภาษาจะเป็นปกติ แนวคิดในที่นี้คือการกำหนดออโตเมติกอัน จำกัด บางแห่งซึ่งรัฐ "จดจำ" สัญลักษณ์อินพุตเพิ่งเห็นล่าสุดเช่นเดียวกับคำตอบของคำถามนี้k s k k<some property>
อีกวิธีหนึ่งที่ไม่ได้รับการคุ้มครองโดยคำตอบข้างต้นคือการเปลี่ยนแปลงแน่นอนหุ่นยนต์ ตัวอย่างง่ายๆให้เราแสดงว่าภาษาปกติปิดภายใต้การดำเนินการสลับแบบกำหนดไว้ดังนี้: คุณสามารถแสดงการปิดภายใต้การสับเปลี่ยนโดยใช้คุณสมบัติการปิด แต่คุณยังสามารถแสดงมันได้โดยตรงโดยใช้ DFAs สมมติว่าเป็น DFA ที่ยอมรับ (สำหรับ ) เราสร้าง DFAดังนี้:
รุ่นที่มีความซับซ้อนมากขึ้นของวิธีการนี้เกี่ยวข้องกับการคาดเดา ตัวอย่างเช่นให้เราแสดงว่าภาษาปกติปิดใต้การกลับรายการนั่นคือ (ที่นี่ .) นี่เป็นหนึ่งในการดำเนินการปิดมาตรฐานและการปิดภายใต้การพลิกกลับอย่างง่ายดายดังต่อไปนี้จากการควบคุมการแสดงออกปกติ (ซึ่งอาจถือได้ว่าเป็นคู่ของการเปลี่ยนแปลงหุ่นยนต์ จำกัด นิพจน์ทั่วไป) - เพียงแค่ย้อนกลับนิพจน์ปกติ แต่คุณสามารถพิสูจน์ได้ว่าการปิดบัญชีโดยใช้ NFA สมมติว่าเป็นที่ยอมรับโดย DFA\ เราสร้าง NFA
(เราสามารถกำจัดหากเราอนุญาตให้เริ่มต้นหลายสถานะ) องค์ประกอบการเดาที่นี่คือสถานะสุดท้ายของคำหลังจากกลับรายการ
การคาดเดามักเกี่ยวข้องกับการยืนยันเช่นกัน ตัวอย่างง่ายๆอย่างหนึ่งคือการปิดภายใต้การหมุน : สมมติว่าเป็นที่ยอมรับโดย DFA\ เราสร้าง NFAซึ่งทำงานดังนี้ NFA คาดเดาแรกx) จากนั้นตรวจสอบว่าและ , ย้ายจากไปยังไม่ใช่ non-deterministically นี่สามารถทำเป็นกรงเล็บดังนี้:
อีกตัวแปรหนึ่งของเทคนิครวมเคาน์เตอร์ที่มีขอบเขต เป็นตัวอย่างให้เราพิจารณาเปลี่ยนการปิดการแก้ไขระยะทาง : ให้ DFAสำหรับ , e สร้าง NFAสำหรับดังต่อไปนี้:
ภาษาเป็นปกติ IFF คุณสามารถเขียนสแกนเนอร์ที่ตัดสินใจในสายโดยพลการไม่ว่าจะเป็นหรือไม่พวกเขาเป็นภาษาที่ใช้ไม่มากไปกว่าการแก้ไขจำนวนหน่วยความจำ - คือการรับรู้สามารถทำได้ในO (1)พื้นที่
การแปลงการแสดงออกปกติเป็นวิธีหนึ่งที่จะพิสูจน์การปิดภายใต้การดำเนินการบางอย่าง สองตัวอย่างที่ง่ายที่สุดที่มีการปิดภายใต้การกลับรายการและการปิดภายใต้homomorphism
ด้วยนิพจน์ทั่วไปเป็นตัวแทนของภาษาเราสามารถสร้างนิพจน์ทั่วไปสำหรับซึ่งเป็นภาษาที่ตรงกันข้ามของคำทั้งหมดในซึ่งเรียกซ้ำ:
ทุกการกระทำที่เกิดขึ้นในกฎสุดท้าย R ตัวอย่างเช่นคุณสามารถตรวจสอบว่า *โครงสร้างอุปนัยกำหนดว่าภาษาของเป็นแน่นอน ( 0 ∗ 1 ∗ ) R = 1 ∗ 0 ∗ r R L R
อีกตัวอย่างง่ายๆคือการปิดภายใต้โฮโมมอร์ฟิซึม ให้โฮโมมอร์ฟิซึมและนิพจน์ทั่วไปสำหรับภาษาเราสามารถรับนิพจน์ปกติสำหรับโดยแทนที่ทุกตัวอย่างของในโดย . r L h ( L ) σ r h ( σ )
อีกวิธีหนึ่งคือการสร้างภาษาโดยใช้การดำเนินการที่คุณรู้ว่าพวกเขาจะปิด นี่คือส่วนขยายเพื่อแสดงการแสดงออกปกติในขณะที่คุณมีการดำเนินการอื่น ๆ อีกมากมาย (ย้อนกลับสตริง, ประกอบ, แยก, ตัดออกชิ้นเพียงเก็บส่วน homomorphisms และผกผัน homomorphisms ... )