ความซับซ้อนของการแยกภาษาปกติเป็นไวยากรณ์ที่ไม่มีบริบท


20

ได้รับการแสดงออกปกติ , จะมีผู้ใดขอบเขตที่ไม่น่ารำคาญกับขนาดของไวยากรณ์บริบทที่เล็กที่สุดสำหรับR 1R n ?R1,,RnR1Rn


??? พยายามนึกภาพสิ่งนี้ มีเคล็ดลับหรือไม่? จุดตัดของเป็นปกติ สามารถหา DFA ที่น้อยที่สุด (นับรัฐ wrt) ผ่านวิธีการมาตรฐานซึ่งก็เป็น CFG Rn
vzn

@vzn: คุณพูดถูก ปัญหาคือว่า DFA นี้และดังนั้น CFG อาจมีขนาดใหญ่มาก ฉันสงสัยว่าถ้าใครสามารถใช้พลังพิเศษของ CFG เพื่อรับคำอธิบายที่กระชับยิ่งขึ้นของการแยก
สูงสุด

การคาดเดาไม่ได้ สงสัยว่า CFL ทุกตัวที่รับรู้ (เช่นเทียบเท่ากับ) RL ไม่ได้ใช้สแต็กหรือสามารถแปลงเป็นหนึ่งที่ไม่เพิ่มขึ้นในรัฐและขั้นต่ำเช่น PDA (นับรัฐ wrt) มีขนาดเล็กที่สุด DFA ไม่เคยได้ยิน / เห็นหลักฐานนี้ มันอาจจะไม่ยาก เป็นคำถามที่ง่ายจะมีใด ๆ PDA ที่ตระหนักถึง RL ที่มีขนาดเล็กกว่า DFA หรือไม่? คิดว่าไม่
vzn

@vzn: การคาดเดาที่มีประโยชน์ แต่เท็จให้เป็นส่วนหนึ่งของภาษา Dyck ในสองประเภทของวงเล็บที่ความลึกสูงสุดคือการทำรังk มี CFG คือL kขนาดO ( k )แต่น้อย DFA (แม้ผมคิดว่าน้อยที่สุด NFA) มีขนาดO ( 2 k ) LkkLkO(k)O(2k)
Max

ภาษา Dyckเป็น CFL แต่ไม่ใช่ RLs ... ? แต่เห็นไหมว่าคุณกำลังจำกัดความลึกในการซ้อนสูงสุด ... ดังนั้นคุณสามารถสร้างภาษาเดียวกันกับทางแยก RL ได้หรือไม่? อะไรคือข้อพิสูจน์ว่า DFA ที่น้อยที่สุดมีขนาดใหญ่? คือรัฐ ? คุณไม่ได้กำหนดเกณฑ์ขั้นต่ำหรือที่อื่น ๆ & เอารัฐเป็นกรณีธรรมชาติ แต่มันไม่ได้เป็นเพียงคนเดียว O(2k)
vzn

คำตอบ:


6

นี่เป็นคำถามที่ดีมากและตั้งอยู่ในความสนใจของฉัน ฉันดีใจที่คุณถามมันว่า Max

ให้ DFA ของที่มีมากที่สุดO ( n )รัฐแต่ละคนจะได้รับ มันจะดีถ้ามี PDA ที่มีสถานะย่อยเป็นทวีคูณที่ยอมรับการแยกภาษา DFA อย่างไรก็ตามฉันขอแนะนำว่า PDA ดังกล่าวอาจไม่มีอยู่จริงnO(n)

พิจารณาภาษาที่ใช้ทำสำเนา ทีนี้ จำกัด ไว้ที่การคัดลอกสายอักขระความยาว n

พิจารณาอย่างเป็นทางการว่า -copy : = { x xn:= }{xx|x{0,1}n}

เราสามารถเป็นตัวแทนของคัดลอกเป็นจุดตัดของn DFA ของขนาดที่มากที่สุดO ( n ) แต่มีขนาดเล็กที่สุด DFA ที่ยอมรับnคัดลอกมี2 Ω ( n )รัฐnnO(n)n2Ω(n)

ในทำนองเดียวกันถ้าเรา จำกัด ตัวเราให้เป็นตัวอักษรแบบไบนารีสแต็กฉันก็สงสัยว่า PDA ที่เล็กที่สุดที่รับ -copy นั้นมีสถานะเป็นจำนวนมากn

PS รู้สึกอิสระที่จะส่งอีเมลถึงฉันถ้าคุณต้องการที่จะหารือเพิ่มเติม :)


5

ฉันไม่คิดว่าจะมีขอบเขตล่างหรือบนที่ไม่สำคัญ
สำหรับขอบเขตที่ต่ำกว่าให้พิจารณาภาษาสำหรับk ที่แน่นอน ขนาดของไวยากรณ์ที่ไม่ใช้บริบทที่เล็กที่สุดคือลอการิทึมในขนาดของนิพจน์ทั่วไปของL 1ในขณะที่ขนาดของออโตมาตาเล็กที่สุดสำหรับL 1นั้นเป็นเชิงเส้นตรงในขนาดของRegex ของL 1 ความแตกต่างของเลขชี้กำลังนี้ยังคงเหมือนเดิมหากเราตัดL 1กับภาษาอื่น ๆ สำหรับขอบเขตบนให้พิจารณาภาษาL 2ที่ประกอบด้วยอย่างแน่นอนL1={a2k}kL1L1L1L1
L2deBruijn ลำดับของความยาวnมันเป็นที่รู้จักกันว่าขนาดของไวยากรณ์ที่เล็กที่สุดสำหรับL 2เป็นกรณีที่เลวร้ายที่สุดคือO ( nnL2ดังนั้นความแตกต่างของหุ่นยนต์ "ที่เล็กที่สุด" สำหรับL2เป็นเพียงปัจจัยลอการิทึมข้อเสนอ 1 ในO(nlogn)L2

ขอบเขตล่างหรือบนทั่วไปที่ไม่สำคัญจะขัดแย้งกับผลลัพธ์เหล่านั้นเนื่องจากสิ่งที่เป็นจริงสำหรับจุดตัดของภาษาจะต้องเป็นจริงสำหรับจุดตัดของ1ภาษาn1


หมายเหตุเกี่ยวกับขนาดของไวยากรณ์ที่เล็กที่สุดสำหรับ deBruijn-Sequence เดียวนั้นค่อนข้างน่าสนใจ คุณช่วยกรุณาอ้างอิงได้ไหม ขอขอบคุณ.
Michael Wehar

นอกจากนี้ฉันอาจเข้าใจผิด แต่ดูเหมือนว่าคุณจะระบุปัญหาสำหรับนิพจน์ทั่วไปเดียว (แทนที่จะเป็นผลิตภัณฑ์ของนิพจน์ทั่วไป) หรือไม่
Michael Wehar

@MichaelWehar อือฉันพิจารณาเพียงนิพจน์ทั่วไปเดียวเท่านั้น เพราะถ้ามันควรจะเป็นจริงสำหรับการตัดกันของภาษาแล้วมันจะต้องเป็นจริงสำหรับการตัดกันเล็กน้อย ฉันไม่ทราบวิธีการปรับคำถามเพื่อแยกกรณีเหล่านี้ออก ฉันได้เพิ่มการอ้างอิงควรจะทำอย่างนั้นทันทีขอโทษ n
john_leo

1
ขอขอบคุณ! คุณสามารถอธิบายตัวอย่างเฉพาะได้ นี่คือคำกล่าวง่ายๆที่นำไปสู่การดำรงอยู่ของตัวอย่างดังกล่าว ให้ n รับ มีความยาวสตริง 2 ^ n n นอกจากนี้ยังมีเครื่องทัวริงไม่เกิน 2 ^ n เครื่องที่มีสถานะ n / log (n) มากที่สุด ดังนั้นบางสตริง x ของความยาว n ซึ่งไม่มีเครื่องทัวริงที่น้อยกว่า n / log (n) สถานะยอมรับภาษา {x} ดังนั้น {x} จึงได้รับการยอมรับจาก DFA ที่มี n state และไม่สามารถยอมรับโดย PDA ที่มีสถานะน้อยกว่า n / log (n)
Michael Wehar

5

ให้ฉันตัดสินใจเกี่ยวกับ Michael เป็นครั้งที่สองนี่เป็นคำถามที่น่าสนใจ แนวคิดหลักของไมเคิลสามารถนำมารวมกับผลลัพธ์จากวรรณกรรมได้ดังนั้นจึงให้ขอบเขตล่างที่คล้ายกันกับการพิสูจน์ที่เข้มงวด

ฉันจะอ้างถึงขอบเขตของขนาด CFG ในแง่ของจำนวนทั้งหมดของสัญลักษณ์ตัวอักษรในการแสดงออกปกติขอหมายเลขนี้จะแสดงโดยk (ดังที่ john_leo ตั้งข้อสังเกตเราจะไม่พบขอบเขตที่มีประโยชน์ใด ๆ ในแง่ของจำนวนนิพจน์ทั่วไปที่มีส่วนร่วมในทางแยก)nk

ทั้ง OP และ Michael ไม่จำเป็นต้องพูดถึงเรื่องนี้ แต่ขอบเขตบนของ (ตามจำนวนสถานะ) สำหรับการแปลงจุดตัดของนิพจน์ทั่วไปเป็น NFA สามารถพิสูจน์ได้อย่างง่ายดาย สำหรับเร็กคอร์ดนี่คือ: แปลงนิพจน์ทั่วไปเป็น Glushkov ออโตมาตาซึ่งไม่ใช่การส่งคืนทั้งหมด จากนั้นใช้การสร้างผลิตภัณฑ์เพื่อรับ NFA สำหรับจุดตัดของภาษาเหล่านี้ (ฉันคิดว่าหนึ่งสามารถปรับปรุงขอบเขตเป็น2 k + 12k+12k+1หรือดังนั้น) state NFA สามารถถูกแปลงเป็นไวยากรณ์เชิงเส้นขวา (ซึ่งเป็นกรณีพิเศษของ CFG) ขนาดO ( s 2 )sO(s2)(ถ้าเราวัดขนาดไวยากรณ์เป็นจำนวนรวมของสัญลักษณ์บนด้านขวามือซ้ายและโปรดักชั่น) จึงทำให้ขนาด ) แน่นอนว่าขอบเขตนี้ฟังดูน่ากลัวหากคุณมีแอปพลิเคชันที่ใช้งานได้จริง การพยายามพิสูจน์ขอบเขตที่ดีขึ้นโดยใช้ความซับซ้อนของการเปลี่ยนผ่าน nondeterministic แทนความซับซ้อนของรัฐที่ควบคุมไม่ได้สำหรับการประเมินขนาดของ NFA อาจคุ้มค่ากับความพยายามO(4k)

อีกส่วนหนึ่งกำลังค้นหาภาษาพยานที่สามารถแสดงออกได้อย่างชัดเจนว่าเป็นจุดตัดของการแสดงออกปกติ แต่ก็เป็นเรื่องยุ่งยากที่จะอธิบายด้วย CFG (ที่นี่เราจำเป็นต้องสร้างขอบเขตล่างของขนาดของ CFG ทั้งหมดที่สร้างภาษาซึ่งสามารถมีได้ไม่ จำกัด จำนวนมาก) อาร์กิวเมนต์ต่อไปนี้ให้ขอบล่าง2Ω(k/logk)

พิจารณาภาษาที่ จำกัดที่ W RหมายถึงการพลิกกลับของW แล้ว L nสามารถแสดงเป็นจุดตัดของต่อไปนี้Ln={wwRw{a,b}|w|=n}wRwLnการแสดงออกปกติ:2n+1

  • สำหรับ 1 ri=(a+b)ia(a+b)2(ni1)a(a+b)+(a+b)ib(a+b)2(ni1)b(a+b) ;1in
  • , สำหรับ 1 si=(a+b)a(a+b)2(ni1)a(a+b)i+(a+b)b(a+b)2(ni1)b(a+b)i ;1in
  • =(a+b)3n

kO(n2)

Ln2n/(2n)=2Ω(k/logk)2nnn/(2n); แต่การโต้แย้งดำเนินไปพร้อมกับการแก้ไขที่ชัดเจน

ถึงกระนั้นช่องว่างขนาดใหญ่ยังคงอยู่ระหว่าง O(4n) และขอบเขตล่างดังกล่าวข้างต้น

อ้างอิง:

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