ความซับซ้อนของการตรวจสอบว่าคำสองคำมีการแทรกสอดในภาษา


9

สำหรับภาษาที่คงที่ในตัวอักษรให้เราพิจารณาปัญหาต่อไปนี้ซึ่งฉันเรียกว่า -INTERLEAVING :LAL

  • อินพุต: สองคำu,vA
  • เอาต์พุต: มีinterleavingของและอยู่ในหรือไม่uvL

นี่คือการสอดแทรกคำสองคำและเป็นคำที่สามารถได้รับสังหรณ์ใจโดยการใช้ตัวอักษรของตัวและขณะที่การรักษาลำดับญาติของพวกเขา อย่างเป็นทางการเป็น interleaving ของและถ้าเราสามารถแบ่งพาร์ติชันออกเป็นสอง subsequences เคล็ดหนึ่งซึ่งเท่ากับและอื่น ๆ ซึ่งเท่ากับวีตัวอย่างเช่น "bheleloll" เป็น interleaving ของ "hello" และ "bell"uvwuvwuvuv

ความซับซ้อนของปัญหา -INTERLEAVING ขึ้นอยู่กับภาษาคืออะไร? LLโดยเฉพาะอย่างยิ่ง:

  • ถ้าเป็นปกติเราสามารถแก้ปัญหาด้วยอัลกอริธึมแบบไดนามิกบนสองสายซึ่งแสดงให้เห็นว่าอยู่ในคลาส NL มันเป็นเรื่องยากสำหรับบางภาษาปกติหรือไม่? อย่างไรก็ตามสำหรับภาษาปกติบางปัญหานั้นชัดเจนใน L (logspace ที่กำหนดขึ้น) มีการระบุลักษณะของภาษาที่เป็นปัญหาใน L หรือไม่?L
  • ถ้าไม่ปกติปัญหายังคงอยู่ใน NL เมื่อมีความซับซ้อนของพหุนามแบบออนไลน์ที่ซับซ้อน (ดูที่นี่สำหรับความคิดนี้หรือคำถามก่อนหน้าของฉัน ) อย่างไรก็ตามสิ่งนี้ไม่ครอบคลุมเช่นทุกภาษาที่ไม่มีบริบท แต่บางคนอื่น ๆ (เช่น palindromes) ยังสามารถแสดงให้เห็นว่าเป็น NL (เช่นโดยการทำอัลกอริทึมแบบไดนามิกพร้อมกันจากจุดเริ่มต้นและจากจุดสิ้นสุด) มีภาษาที่ไม่มีบริบทซึ่ง -interleaving ปัญหาคือ NP-hard หรือไม่?LLL

คำตอบ:


6

สำหรับคำและสำหรับสองจำนวนเต็มกับเราแสดงโดย subwordของWยิ่งกว่านั้นเราปล่อยให้แทนคำที่ว่างเปล่าw=w1wi,j1ijw(i,j)wiwi+1wjww(0,0)

  • ปล่อย u=u1um และ v=v1vn เป็นสองคำภายใต้การพิจารณา
  • สมมติว่าภาษาไม่มีบริบท L ถูกระบุโดยไวยากรณ์ที่ไม่มีบริบทในรูปแบบปกติของ Chomsky

สร้างโปรแกรมแบบไดนามิกที่รัฐ [i,j,r,s,A] ถูกระบุโดย

  • จำนวนเต็มสองจำนวน i,j กับ 1ijm หรือ i=j=0
  • จำนวนเต็มสองจำนวน r,s กับ 1rsn หรือ r=s=0
  • สัญลักษณ์ที่ไม่ใช่ขั้ว A ในไวยากรณ์ที่ไม่มีบริบท

สำหรับทุก ๆ รัฐให้ตัดสินใจว่าในไวยากรณ์ที่ไม่ใช้บริบทมีบางส่วนมาจากที่ไม่ใช่เทอร์มินัล A และนั่นลงท้ายด้วยการแทรกสองคำบางส่วน u(i,j) และ w(r,s). การตัดสินใจนี้สามารถทำได้อย่างง่ายดายหากมีการจัดการสถานะในลำดับที่ถูกต้อง (รหัสย่อยสั้น ๆ ก่อนหน้าย่อยอีกต่อไป)

โดยรวมแล้วนี่จะให้อัลกอริธึมเวลาพหุนามสำหรับ L- การแก้ปัญหาการใช้ภาษาที่ไม่มีบริบท L.


ขอบคุณ! แน่นอนฉันไม่ได้สังเกตเห็นว่าตัวแปรของen.wikipedia.org/wiki/CYK_algorithmนี้จะทำงานเพื่อแสดงว่าปัญหาอยู่ใน P สำหรับภาษาที่ไม่มีบริบท ที่กล่าวว่าเราไม่เห็นวิธีการแสดงให้เห็นว่าปัญหาเกิดขึ้นใน NL โดยใช้อัลกอริธึมนี้: เราดูเหมือนจะต้องทำการเดาจำนวนลอการิทึม (ความสูงของต้นไม้) แต่ละการเดาจะเป็นลอการิทึม (เช่นตำแหน่งใน สตริง) มีความคิดเห็นเกี่ยวกับเรื่องนี้ไหม?
a3nm

2
@ a3nm ไม่ว่าจะเป็นคำที่ว่างเปล่าของ CFL เป็น P-hard อยู่แล้ว
Sylvain

@Sylvain: ตกลงเป็น P-hard แต่เป็นหน้าที่ของ CFL :) จำไว้ว่าในปัญหาของฉันภาษา (หรือ CFL สำหรับมัน) ได้รับการแก้ไขและการป้อนข้อมูลเป็นเพียงสองสายดังนั้นฉันไม่คิดว่าอาร์กิวเมนต์นี้ใช้
a3nm

2
@ a3nm ขออภัยฉันพลาดความจริงที่ว่าภาษาได้รับการแก้ไขแล้ว จากนั้นผู้สมัครที่เป็นธรรมชาติจะเป็น LogCFL-hardness
Sylvain

@Sylvain: ถูกต้องขอบคุณ! ดังนั้นฉันเดาว่าปัญหาคำว่า LogCFL-hard แม้สำหรับภาษา CFL คงที่ (เช่นภาษาที่ยากที่สุดของ Greibach) ดังนั้นโดยเฉพาะอย่างยิ่งมีภาษา CFL ที่ปัญหาของฉันคือ LogCFL-hard (ใช้อินสแตนซ์ที่สตริงที่สองว่างเปล่า ) ในทางกลับกันฉันจินตนาการว่าอัลกอริทึมของ Gamow อยู่ใน LogCFL (?) ยังทำให้ฉันสงสัยเกี่ยวกับภาษาที่ปัญหาของฉันจะง่ายกว่าที่ถูกผูกไว้นี้และวิธีการที่พวกเขาสามารถแบ่งออกเป็น ...
a3nm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.