ภาษานี้รู้จักสัญลักษณ์ 3 ตัว TM ใน O (n log n) หรือไม่?


10

ฉันกำลังเล่นกับคำถามที่น่าสนใจและยังคงเปิดอยู่ " ตัวอักษรของเครื่องจักรทัวริงเทปเดี่ยว " (โดย Emanuele Viola) และเกิดขึ้นด้วยภาษาต่อไปนี้:

L={x{0,1}n s.t. |x|=n=2m and count1(x)=km;n,m,k1}

โดยที่คือจำนวน1วินาทีในสตริง xcount1(x)1

ตัวอย่างเช่นถ้า x = 01101111 ดังนั้น n = 8, m = 3, k = 2; ดังนั้นxL

เครื่องทัวริงสามารถรับรู้ L ด้วยเทปเดียวและสัญลักษณ์ 3 ตัวอักษรในขั้นตอนO ( n log n )หรือไม่ {ϵ,0,1}O(nlogn)

หากเราใช้ 4 สัญลักษณ์คำตอบคือใช่:

  • ตรวจสอบว่าแทน0 s ด้วยϵและ1 s ด้วย2และในเวลาเดียวกันเก็บm 1 s ทางด้านขวา;|x|=2m0ϵ12m 1
  • แล้วนับจำนวน s โมดูโลเมตรในO ( n log n )2mO(nlogn)

ตัวอย่างเช่น:

....01101111....... input x  (|x| = 8 = 2^3)
000.021.1212.0001.. div 2, first sweep (000. can safely be used as a delimiter)
000.022.1222.00011. div 2, second sweep
000.022.2222.000111 div 2, third sweep --> m = 3 (= log(n) )
000..22.2222....111 cleanup (original 1s are preserved as 2)
000..22.2221102.... start modulo m=3 calculation
000..22.2210022.... mod 3 = 2
000..22.2000222.... mod 3 = 0
000..22.0012222.... mod 3 = 1
000..20112.2222.... mod 3 = 2
000..11122.2222.... ACCEPT

|x|=n=2mxcount1(x)1L={10}

xL

1
Θ(nlogn)o(nlogn)O(nlogn)

คำตอบ:


10

คุณไม่สามารถใช้แนวคิดเดียวกันกับสิ่งที่คุณมีสำหรับกรณีของสัญลักษณ์ 4 ตัวโดยมีการแก้ไขดังต่อไปนี้:

  • ประมวลผลคู่สัญลักษณ์พร้อมกันเสมอ
  • (00,01,10,11)(ϵ0,ϵ1,0ϵ,1ϵ)ϵϵ
  • ใช้เคล็ดลับที่คล้ายกันสำหรับขั้นตอน "mod 2"

O(1)


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