ฉันกำลังเล่นกับคำถามที่น่าสนใจและยังคงเปิดอยู่ " ตัวอักษรของเครื่องจักรทัวริงเทปเดี่ยว " (โดย Emanuele Viola) และเกิดขึ้นด้วยภาษาต่อไปนี้:
โดยที่คือจำนวน1วินาทีในสตริง x
ตัวอย่างเช่นถ้า x = 01101111 ดังนั้น n = 8, m = 3, k = 2; ดังนั้น
เครื่องทัวริงสามารถรับรู้ L ด้วยเทปเดียวและสัญลักษณ์ 3 ตัวอักษรในขั้นตอนO ( n log n )หรือไม่
หากเราใช้ 4 สัญลักษณ์คำตอบคือใช่:
- ตรวจสอบว่าแทน0 s ด้วยϵและ1 s ด้วย2และในเวลาเดียวกันเก็บm 1 s ทางด้านขวา;
- แล้วนับจำนวน s โมดูโลเมตรในO ( n log n )
ตัวอย่างเช่น:
....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