คือ {ww '| HamDist (w, w ')> 1} ไม่มีบริบทหรือ


13

หลังจากอ่านคำถามล่าสุด"เป็นส่วนเติมเต็มของบริบทหรือไม่" {www...}; ฉันจำปัญหาที่คล้ายกันฉันไม่สามารถพิสูจน์ได้ว่า:

คือบริบทฟรีL={www,w{0,1}|w|=|w|HamDist(w,w)>1}

ที่นี่เราต้องการให้ทั้งสองสายแตกต่างกันอย่างน้อยสองตำแหน่ง (ระยะ Hamming จะต้องมากกว่า )1

ไม่มีบริบทหากเราต้องการ (นั่นคือทั้งสองสตริงจะต้องแตกต่างกัน)HamDist(w,w)1

ฉันสงสัยว่าภาษานั้นไม่มีบริบท: ถ้าเราตัดมันด้วยค่าปกติ เราจะได้รับกรณีที่ PDA ควร "จดจำ" สองตำแหน่งในลำดับย้อนหลังหลังจากถึงครึ่ง ของสตริง0101010

อัปเดต:หากเราตัดด้วยค่าปกติเราจะได้รับภาษาที่ไม่มีบริบทตามที่แสดงโดย domotorp ในคำตอบของเขา; ที่ซับซ้อนกว่าเล็กน้อยด้วย (อีกถึง "ติดตาม" ของ) ยังแนะนำไม่ควรเป็นแบบไม่มีบริบทLR={0101010}LRR={01010101010}1L


w w R LRง่ายกว่าจริง ๆ เพราะมันเป็นคำที่ไม่ตรงกับรูปแบบ (ตัดด้วย ) wwR
domotorp

@domotorp: ถูกต้อง! เปลี่ยนไปเป็นคี่คงที่ s (ถ้าคำตอบของคุณอาจจะดัดแปลงยัง สำหรับแปลกคงที่ ){ ( 0 1 0 ) k } k1{(010)k}k
Marzio De Biasi

หนึ่งความคิดเห็นสุดท้าย: มันไม่ได้ช่วยเริ่มต้นด้วยศูนย์นำเนื่องจากภาษาปลอดบริบทถูกปิดสำหรับวงจรกะทุกประเภท คุณสามารถผลักมันไปที่สแต็กทำเครื่องหมายสัญลักษณ์สุดท้ายด้วยสัญลักษณ์พิเศษทำส่วนที่เหลือของอัลกอริทึมที่แสร้งทำเป็นว่าสแต็กเริ่มต้นที่นั่นและท้ายที่สุดจะว่างเปล่า (ใช้นี้ -transitions แต่ที่ยังง่ายต่อว่าเช่น PDA เทียบเท่ากับคนที่ไม่มี.)ϵ
domotorp

มันอาจจะง่ายกว่าที่จะคิดเกี่ยวกับตัวอักษร {0,1,2} และพิจารณาสตริงที่มีสอง 1 วินาทีและ 2 วินาที มันไม่ได้อยู่ในภาษาของคุณหากระยะห่างระหว่าง 1s และระยะห่างระหว่าง 2s ทั้งคู่เป็น n
Kaveh

คำตอบ:


4

จุดตัดที่มีR={0101010แม้กระทั่งคำที่มีความยาว}จะไม่มีบริบทเนื่องจาก PDA สามารถจดจำตำแหน่งที่สองได้ ก่อนอื่นเรามาดูกันว่าภาษานี้Lคืออะไร ส่วนประกอบของมันคือ RL={0a10b10c10db=n/2c=n/2a+d=n/2} } ดังนั้น L={0a10b10c10dbn/2cn/2a+dn/2} } เราสามารถเขียนสิ่งนี้เป็น L={0a10b10c10db>n/2c>n/2a+d>n/2b,c,a+d<n/2} }

3กรณีแรกสามารถตรวจสอบได้ง่ายและกรณีที่สี่ก็สามารถทำได้

b>n/2 : เริ่มวางในสแต็กจนกระทั่ง 1 แรกจากนั้นเริ่ม popping จากสแต็กจนกว่าจะไม่ว่างเปล่า หลังจากที่ว่างเปล่าอีกครั้งเริ่มวางในสแต็กจนกว่าเราจะถึงที่สอง 1 จากนั้นในกองป๊อปอัพ

c>n/2 : เหมือนกัน

a+d>n/2 : เริ่มวางในสแต็กจนกระทั่ง 1 แรกจากนั้นเริ่ม popping จากสแต็กจนกว่าจะไม่ว่างเปล่า หลังจากที่ว่างเปล่าอีกครั้งเริ่มวางในสแต็กจนกว่าเราจะถึง 1 ที่สามจากนั้นในกองป๊อปอัพ

b,c,a+d<n/2 : เริ่มใส่ในกองจนกระทั่ง 1 แรกจากนั้นเริ่ม popping จากกองจนกว่าจะไม่ว่างเปล่า หลังจากที่มันว่างเปล่าอีกครั้งเริ่มวางในกองจนกว่าจะถึง + n / 2 (เดาไม่ใช่ deterministically บางระหว่างสองและสาม 1) จากนั้นป๊อปอัพสแต็คa+n/2


ขอบคุณ domotorp ฉันกำลังอ่านความคิดของคุณ ฉันคิดว่าคือ{ 0 a 1 0 b 1 0 c 0 c 1 0 d( n / 2 = a + b + c = c + d + 1 ) [ ( a = c ) ( c = d ) }RL{0a10b10c0c10d (n/2=a+b+c=c+d+1)[(a=c)(c=d)}(สองครึ่งทางซ้าย) รวมตัวกลับด้าน (สองครึ่งทางขวา) ดังนั้นคุณจะได้รับอย่างไร b=n/2c=n/2a+d=n/2
Marzio De Biasi

เป็นที่ HamDist ที่มากที่สุด1 สิ่งนี้จะเกิดขึ้นอย่างแน่นอนหากการแข่งขันสองในสามครั้งคือหนึ่งอยู่ในตำแหน่งเดียวกันในครึ่งแรกเช่นเดียวกับอีกครึ่งหนึ่ง ถ้า 1 สองตัวนี้เป็น 1 ตัวแรกและตัวที่สองเราจะได้ b = n / 2ถ้าพวกมันเป็นอันดับสองและสามเราจะได้ c = n / 2และถ้าพวกมันเป็น 1 และสามอันดับแรกเราจะได้ b + c = n / 2หรือเทียบเท่า a + d = n / 2RL1b=n/2c=n/2b+c=n/2a+d=n/2(ที่ฉันโกงนิดหน่อยด้วยค่าคงที่ ) ±1
domotorp

นี่ตอบคำถามเต็มหรือไม่?
Michaël Cadilhac

LR={...bn/2cn/2...}LR={...b>n/2c>n/2b,c<n/2}LR={...(b<n/2b>n/2)(c<n/2c>n/2)}a+d

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