ฉันจะพิสูจน์ได้ว่าภาษานี้ไม่มีบริบทได้อย่างไร


11

ฉันมีภาษาต่อไปนี้

{0i1j2k0ijk}

ฉันกำลังพยายามที่จะกำหนดระดับภาษาของ Chomsky ที่เหมาะสม ฉันสามารถดูว่ามันสามารถใช้ไวยากรณ์ไวต่อบริบทได้อย่างไรดังนั้นฉันจึงรู้ว่ามันไวตามบริบทอย่างน้อยที่สุด ดูเหมือนว่าเป็นไปไม่ได้ที่จะสร้างด้วยไวยากรณ์ที่ไม่มีบริบท แต่ฉันมีปัญหาในการพิสูจน์ว่า

ดูเหมือนว่าจะผ่านบทแทรก - สูบน้ำเพราะถ้าทั้งหมดถูกวางไว้ในส่วนที่สามของคำใด ๆ (ส่วนที่มีทั้งหมดวินาที) มันสามารถปั๊มและหลายครั้งตามที่คุณต้องการและมันจะอยู่ในภาษานั้น หากฉันผิดคุณสามารถบอกฉันได้ว่าทำไมถ้าฉันพูดถูกฉันยังคงคิดว่าภาษานี้ไม่ใช่บริบทดังนั้นฉันจะพิสูจน์ได้อย่างไร2 v xuvwxy2vx


ฉันไม่แน่ใจว่าจะพิสูจน์ได้อย่างไร แต่การทำให้มั่นใจว่าฉัน <= j <= k ต้องใช้บริบท (ค่าของตัวแปรก่อนหน้า)
Kevin


@ ราฟาเอลฉันอ่านโพสต์นั้นก่อนหน้านี้และไม่รู้วิธีนำไปใช้กับตัวอย่างของฉันเพราะมันเป็นนามธรรม ด้วยความสัมพันธ์ของตัวละครแต่ละตัว>> จำนวนตัวละครก่อนหน้านี้ฉันไม่เห็นวิธีที่จะแยก uxyzv ออกเป็นคำเพื่อใช้บทแทรกของ Ogden BlueMagister และ jmad ขยายตัวในโพสต์อื่นเพื่อให้ชัดเจนสำหรับตัวอย่างของฉัน
justausr

@ ราฟาเอลฉันไม่เห็นด้วยว่านี่เป็นแอปพลิเคชันที่น่าสนใจของกรณีทั่วไป การเลือกวิธีการที่จะใช้และตัวอย่างที่จะนำไปใช้นั้นไม่ใช่เรื่องง่าย
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


7

คุณสามารถบังคับให้ปั๊มอยู่ในบางแห่งโดยใช้บทแทรกของ Ogdenตัวอย่างเช่นโดยการทำเครื่องหมาย 0 ทั้งหมด

สมมติว่าเป็นบริบทฟรีจากนั้นบทแทรกของ Ogden จะให้คุณให้มันเป็นw = 0 p 1 p 2 pซึ่งอยู่ในภาษาและคุณ "ทำเครื่องหมาย" 0 ทั้งหมด จากนั้น factorisation ใดW = U x Y Z วีจะต้องดังกล่าวว่ามีความเป็น0ในXหรือZ คุณสามารถสมมติx = a kและz = b m ได้ตั้งแต่x xและz zพี>0W=0พี1พี2พีW=ยูxYZโวลต์0xZx=akz=bmxxzz ต้องเป็นสตริงย่อยของภาษาของคุณ

  1. ถ้าดังนั้นw = u x 2 y z 2 vมี 0 มากกว่า 1z=0...0w=ux2yz2v

  2. ถ้าและz = 1..1ดังนั้นw = u x 2 y z 2 vมีมากกว่า 1 มากกว่า 2x=0..0z=1..1w=ux2yz2v

  3. ถ้าและz = 2..2ดังนั้นw = u x 2 y z 2 vมี 0 มากกว่า 1x=0..0z=2..2w=ux2yz2v

ดังนั้นไม่ได้เป็นคำของภาษาของคุณ ดังนั้นจึงไม่มีบริบทยูx2YZ2โวลต์

สำหรับเทคนิคอื่น ๆ ให้ดูที่การสนทนา: วิธีการพิสูจน์ว่าภาษาไม่ได้เป็นบริบท


นี่สำหรับภาษาเดียวกับที่ฉันมีหรือไม่ ดูเหมือนว่าจะเป็นภาษาที่คล้ายกันซึ่ง 0 ทั้งหมด 1 และ 2 มีความยาวเท่ากัน ภาษานี้มีจำนวน 2> = จำนวน 1> = จำนวน 0
justausr

1
ใช่มันคือ แต่เมื่อใช้บทแทรกรูปแบบใด ๆ ก็ตามคุณจะต้องเลือกคำศัพท์ (และฉันเลือก ): บทแทรกของ Ogden ควรจะใช้ได้กับพวกมันทั้งหมด 0พี1พี2พี
jmad

Gotcha ฉันไม่เคยได้ยินบทแทรกของ ogden ดังนั้นฉันจะต้องตรวจสอบมัน ฉันถูกต้องระบุว่ามันล้มเหลวในบทแทรก?
justausr

@ เพียงแค่ฉันไม่มีจนกระทั่งเมื่อไม่นานมานี้ (และต้องขอบคุณการสนทนาที่ฉันพูดถึง) และใช่คุณพูดถูก: บทแทรกทำเกือบเหมือนกัน แต่ไม่เลือกว่าจะให้ปั๊มที่ไหนที่นี่ไร้ประโยชน์
jmad

5

บทแทรกควรแก้ปัญหาของคุณเกี่ยวกับส่วนที่สามของคำ ทราบว่าเมื่อคุณแยก , การรวมกันของใด ๆU v n W x n Yยังอยู่ในภาษารวมทั้งเมื่อn = 0 ลองดูZ=ยูโวลต์WxYยูโวลต์nWxnYn=0

แก้ไข: ในฐานะjmad รัฐ Pumping Lemma เป็นเหมือนเกม:

  1. บทแทรกซึมช่วยให้คุณได้รับพี
  2. คุณให้คำของภาษาที่มีความยาวอย่างน้อยหน้าsพี
  3. lemma ของปั๊มน้ำเขียนใหม่เช่นนี้: ด้วยเงื่อนไขบางอย่าง ( | v x y |pและ| v y |1 )s=ยูโวลต์xYZ|โวลต์xY|พี|โวลต์Y|1
  4. คุณให้จำนวนเต็มn0
  5. ถ้าไม่ได้อยู่ในL , คุณชนะLไม่บริบทฟรียูโวลต์nxYnZLL

ดังนั้นสิ่งที่คุณต้องทำก็คือระบุคำแบ่งออกเป็น 3 กรณีและแสดงให้เห็นว่าในแต่ละกรณีคุณสามารถค้นหาคำที่ที่คำที่เป็นผลลัพธ์ไม่ได้อยู่ในภาษานั้นn

เมื่อคุณแยกให้นึกถึงกรณีทั้งหมดที่v x yสามารถตกลงได้ คุณทราบว่าถ้าv x yไม่ตกอยู่ใน 2 ของแล้วมันเป็นเรื่องง่ายที่จะสูบ 0 และ 1 จนกว่าพวกเขาจะมีจำนวนมากกว่า 2 และคุณมีคำที่ไม่ได้อยู่ในภาษา ข้อเสนอแนะของฉันคือว่าถ้าv x yตกอยู่ใน 2 ดินแดนคุณสามารถทำให้vและyหายไปโดยการตั้งค่าn = 0ดังนั้นคุณจึงv n x y n z = us=ยูโวลต์xYZโวลต์xYโวลต์xYโวลต์xYโวลต์Yn=0 Z จากนั้นโดยการกำจัด 2 คุณสามารถไปถึงคำที่ไม่ได้อยู่ในภาษายูโวลต์nxYnZ=ยูxZ


คุณกำลังพูดว่าใส่ uvwxy ทั้งหมดในส่วนที่มี 2 หรือไม่?
justausr

หากได้รับคำที่ถูกต้อง ฉันจะอธิบายอย่างละเอียดในคำตอบของฉัน
Blue Magister

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