วิธี ws ด้วย | w | = | s | และจะไม่มีบริบทในขณะที่ w # ไม่ใช่?


9

ทำไม (ถ้ามี) seperatorสร้างความแตกต่างระหว่างสองภาษา#

สมมติว่า:

L={Ws:|W|=|s|W,s{0,1}* * * *,Ws}

L#={W#s:|W|=|s|W,s{0,1}* * * *,Ws}

นี่คือข้อพิสูจน์และคำรามแทนในฐานะLCFL

และด้านล่างฉันเพิ่มหลักฐานสำหรับ :L#CFL

เครื่องหมายสร้างความแตกต่างอย่างแท้จริงหรือไม่? ถ้าเป็นเช่นนั้นทำไม และถ้าไม่ข้อพิสูจน์ข้อใดข้อหนึ่งผิดและอยู่ที่ไหน#

พิสูจน์ว่า :L#CFL

สมมติโดยวิธีการของความขัดแย้งที่CFL ให้เป็นค่าคงที่การสูบสำหรับ รับประกันโดยบทแทรกสำหรับภาษาที่ไม่มีบริบท เราพิจารณาคำว่า s = 0 ^ {m} 1 ^ {p} \ # 0 ^ {p} 1 ^ {m}ที่m = P! + Pเพื่อs ∈ L ตั้งแต่| s | > pตาม lemma ของการปั๊มมีตัวแทนs = uvxyz อยู่เช่นนั้น | vy | > 0 , | vxy | ≤พีและยูวี ^ {J} XY ^ {J} Z ∈ Lสำหรับแต่ละเจ≥ 0LCFLp>0Ls=0m1p#0p1mm=p!+พีsL|s|>ps=uvxyz|vy|>0|vxy|puvjxyjzLj0

เราได้รับความขัดแย้งโดยกรณี:

  • หากหรือมี : สำหรับเราจะได้รับไม่มีดังนั้นขัดแย้งกันvy#i=0uxz#uxzL
  • หากทั้งและถูกทิ้งไว้ที่ : สำหรับเราจะได้รับ อยู่ในรูปแบบโดยที่ดังนั้นLvy#i=0uxzw#x|w|<|x|uxzL

  • หากทั้งและถูกต้อง : คล้ายกับกรณีสุดท้ายvy#

  • หากเหลือไว้ที่ ,จะถูกต้องและ: สำหรับเราจะได้รับว่าเป็นรูปแบบโดยที่ดังนั้นLv#y|v|<|y|i=0uxzw#x|w|>|x|uxzL

  • หากเหลือไว้ที่ ,จะถูกต้องและ: คล้ายกับกรณีสุดท้ายv#y|v|>|y|

  • หากเหลือไว้ที่ ,จะถูกต้องและ: นี่เป็นกรณีที่น่าสนใจที่สุด ตั้งแต่ ,จะต้องมีอยู่ในส่วนหนึ่งของและในส่วนหนึ่ง ดังนั้นมันจึงถือว่าและสำหรับเดียวกัน (อันที่จริงแล้วมันต้องเป็น ) สำหรับแต่ละมันถือได้ว่า ดังนั้นถ้าเกิดว่าv#y|v|=|y||vxy|pv1psy0pv=1ky=0k1kpk<p/2j0uvj+1xyj+1z=0m1p+j·k#0p+j·k1mm=p+j·kจากนั้นจะถือว่านั้นขัดแย้งกัน เพื่อให้บรรลุนี้เราต้องใช้ซึ่งเป็นที่ถูกต้องเท่านั้นหากคือหารด้วยkจำได้ว่าเราเลือกดังนั้นและหารด้วยใด ๆตามที่ต้องการuvj+1xyj+1zLj=(mp)/kmpkm=p+p!mp=p!p!1kp

คำตอบ:


7

หลักฐานของคุณถูกต้องและฉันผิด ฉันใช้เวลาสักครู่เพื่อตอกย้ำความสับสนของฉัน แต่ด้วยความช่วยเหลือของ Yuval ฉันคิดว่าฉันได้รับ

ลองพิจารณาสามภาษา

L=={xy|x|=|y|,xy},L#={x#yxy}, andL=#={x#y|x|=|y|,xy}.

ที่เราได้เห็นที่นี่ ,L=ไม่มีบริบท เคล็ดลับคือในไวยากรณ์เพื่อสร้างสัญลักษณ์ "ด้านขวา" แต่ให้นับ "ทางด้านซ้าย" ในภายหลัง (หรือวิธีอื่น ๆ ) ทำให้แน่ใจว่าสัญลักษณ์ที่ไม่ตรงกันปรากฏในตำแหน่งที่ตรงกัน เงื่อนไขความยาวเป็นเรื่องเล็กน้อยเนื่องจากจะลดความยาวได้
คุณสามารถสร้าง NPDA ด้วยแนวคิดที่คล้ายกันโดยใช้สแต็กเพื่อจับคู่ตำแหน่ง

L# นอกจากนี้ยังเป็นบริบทฟรี การพิสูจน์นั้นง่ายยิ่งขึ้น: สัญลักษณ์ที่ไม่ตรงกันปรากฏในระยะทางเดียวกันห่างจากจุดเริ่มต้น ตัวคั่น ความยาวไม่เท่ากันสามารถตรวจสอบแยกกันได้ ไม่ใช่ตัวเลือก "เลือก" ระหว่างตัวเลือกที่สอง

ตอนนี้ตามที่คุณแสดง L=#คือไม่บริบทฟรี นี่คือเหตุผลที่หลักฐานสำหรับอีกสองภาษาแตกสลาย

  1. ในด้านไวยากรณ์สำหรับ L=หากเราต้องสร้างตัวคั่นตรงกลางเราไม่สามารถ "กำหนดใหม่" สัญลักษณ์จาก "ซ้าย" ถึง "ขวา"
  2. แทนที่จะ "ยอมรับถ้าความยาวไม่เท่ากันหรือไม่ตรงกัน" เราต้อง "ยอมรับถ้าความยาวไม่เท่ากันและไม่ตรงกัน" ไม่ใช่ระดับไม่สามารถช่วยเราด้วยและ !

ดังนั้นสิ่งที่เดือดลงไปโดยสังหรณ์ใจคือเงื่อนไขของแบบฟอร์ม "xy"และ"|x|=|y|"เป็นทั้ง" ไม่มีบริบท "ในแง่ที่ว่าพวกเขาสามารถตรวจสอบด้วยสแต็ก แต่ไม่ได้ใช้การควบคุมแน่นอนดังนั้น PDA สามารถทำอย่างใดอย่างหนึ่ง แต่ไม่ใช่ทั้งสองอย่าง

PDA สำหรับ L="กลโกง" เนื่องจากไม่ได้ตรวจสอบเงื่อนไขเหล่านี้จริงๆx และ y; มันแยกคำขึ้นในวิธีที่แตกต่าง ไม่สามารถทำได้หากคุณมีตัวคั่น


ภาคผนวก:ฉันกล้าหาญอ้างว่าL=CFLL=#CFLเพราะ CFL ถูกปิดต่อโฮโมมอร์ฟิซึมแบบผกผัน ในขณะที่มันเป็นความจริงที่f(L=#)=L= กับ f ข้อมูลประจำตัวยกเว้นจะลบ #ที่ไม่เกี่ยวข้อง f1(L=)=L#; ไม่มีอะไรสามารถพูดเกี่ยวกับL=#.


ภาคผนวก II:โปรดทราบว่าL={x#y|x|=|y|}ไม่มีบริบท ดังนั้นด้วยLL#=L=# เรามีตัวอย่างที่ดีสำหรับ CFL ที่ไม่ได้ปิดกั้นทางแยก

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