ภาษาปกติที่ไม่สามารถแสดงออกได้ด้วยการดำเนินการ regex เพียง 2 ครั้ง


12

ฉันคิดว่าภาษาปกติทั้งหมดสามารถแสดงออกด้วยการแสดงออกปกติ (ถ้าภาษาเป็นปกติมันสามารถแสดงด้วย regex) แต่ฉันได้รับแจ้งว่าคุณต้องการการดำเนินงานปกติทั้งสาม (การต่อเชื่อมสหภาพและดาว) ที่จะถือ

ตัวอย่างเช่นผมได้รับการบอกว่าถ้าฉันสามารถเพียงใช้ยูเนี่ยนและการ concatenationการดำเนินงาน regex (2 จาก 3) จะมีภาษาปกติฉันไม่สามารถอธิบายที่มีเพียงสองคน

เช่นเดียวกันกับ Kleene Star และ Union ตัวอย่างนี้มีอะไรบ้าง

คำตอบ:


19

ด้วยการรวมกันและการต่อกันเท่านั้นคุณจะไม่สามารถอธิบายภาษาที่ไม่มีขีด จำกัด ได้ การรวมกันและการต่อข้อมูลสามารถผลิตได้หลายเงื่อนไขอย่าง จำกัด มีเพียงยูเนี่ยนและดาว Kleene คุณไม่สามารถอธิบายภาษาเช่นเพราะมีวิธีการเชื่อมที่ก่อให้เกิดการแสดงออกเท่านั้นไม่มีกับที่ก่อให้เกิดการแสดงออกเพียงขด้วยการเรียงต่อกันเท่านั้นและดาว Kleene คุณไม่สามารถอธิบายภาษาเช่น\}a b L = { a , b }L={ab}abL={a,b}


3
{a,b}

ดังนั้นทำไมฉันไม่สามารถอธิบาย L = {a, b} โดยไม่มีสหภาพ? เป็นเพราะพวกเขาไม่สามารถแสดงเป็นองค์ประกอบแยกต่างหากกับดาวและเรียงต่อกันได้หรือไม่ มันสามารถทำได้แค่ ab, bb, aba และอื่น ๆ ?
user3295674

@ user3295674 อย่างแน่นอน
DylanSp

และบางอย่างเช่น L = {a *} จะเป็นไปไม่ได้หากมีเพียงการรวมตัวและการต่อแถวใช่ไหม? ขอบคุณมาก!
user3295674

ฉันไม่เข้าใจด้วยซ้ำว่าดาวจะถูกกำหนดอย่างไรหากไม่มีการต่อข้อมูล
G. Bach


4

A(ab)(a(ab)b)(aa)

หากตอนนี้อนุญาตให้ใช้ดาว แต่ไม่ใช่ดาวซ้อนกันแสดงว่าเป็นปัญหาที่เกิดขึ้น (เป็นเวลาอย่างน้อย 45 ปี) เพื่อทราบว่าสามารถรับภาษาปกติทั้งหมดได้หรือไม่ คำถามนี้เป็นที่รู้จักกันเป็นปัญหาความสูงดาวทั่วไป มันคล้ายกับปัญหาระดับความสูงของดาวที่กล่าวถึงโดย Yuval Filmus ด้วยความแตกต่างที่ตอนนี้ได้รับอนุญาต

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