Aşağıdaki örnek bir algoritmanın A bu alır O(nlog(n)) kelime-Ram bir sorunu çözmek için gerekebilir O(n2log(n)3)ile gösterilen tüm hesaplamaları tam olarak gerçekleştiren 1 bantlı Turing Makinesi (TM) üzerindeA. Sorunun 1 bant TM ile ilgili olduğunu anlıyorum ve bunu sadece cevabımda kullanıyorum. Bu, Emil Jeřábek'in sözlerini ele alan bir düzenlemedir.
Aşağıdaki genel sonucu bulacağız . TM'nin çözebileceğini kanıtlamak içinO(T(n)2) çözülmüş bir problem O(T(n)) bir algoritma ile ARAM üzerinde, öyle değil yeterli çalışmaATM. Bir akıllı algoritma gerekebilir. Aynı şey, bir kişininO(nlog(n))havai. Gerektiğinde akıllı bir algoritmanın varlığını kanıtlamak, en azından, hemen olmaktan çok uzak görünüyor. Bu, temelde yalnızca TM'nin tüm RAM hesaplamalarını (algoritmanın simülasyonunu) simüle etmeyi / yürütmeyi öneren diğer yanıtlarla uyumlu değildir .Agibi bir TM karmaşıklığını duyurmak O(T(n)2) veya O(T(n)nlog(n)).
Sorun: Bize bir dizi / tablo verilditab ile n=2k üzerinde saklanan her biri tamsayılar log(n)bit. Bize ikinci bir dizi veriliyord ile log(n) her biri bir dizi kayıt log(n)bit. Herhangit∈[0..log(n)−1], tanımlıyoruz Xt=1 Eğer tab[i] MOD d[t]=tab[n/2+i] MOD d[t] ∀i∈[0..n/2−1]. Aksi takdirde,Xt=0. Çıktı∑log(n)−1t=0Xt. Ben girdi ile bir bant olarak verildiğini düşünüyorumnlog(n)+log(n)log(n) İkili basamaklar, Emil Jeřábek'in yorumlarını ele almak için.
Algoritma ARAM'de kelime boyutuna sahip bir RAMw=log(n) ihtiyaçlar O(nlog(n)+log(n)2) = O(nlog(n))ikili dize giriş verilerini okumak için. Ancak verileri okuduktan sonra sadece şu kelimelerle çalışabilir:log(n)boyut. AlgoritmaA herhangi birini hesaplar Xt içinde O(n) her şeyden geçerek i∈[0..n/2−1]ve durumun test edilmesi. Ana döngüAolduğu İÇİNt=0,1,2,…log(n)−1: hesaplamak Xt. Toplam karmaşıklıkO(nlog(n)) (veri okuma) + O(nlog(n)) (hesaplamaları yapıyor), yani A hepsini içinde yapabilir O(nlog(n)) RAM üzerinde.
Algoritma A1-teyp TM üzerinde: Bir-teyp TM'nin ihtiyacı olduğunu savunuyorumO(n2log(n)2) sabit zaman t. TM açısından,At iki ikili dizginin eşitliğini test etmeye eşdeğerdir O(nlog(n)). Örneğin, MOD işlemitab[i] MOD d[t] bit kaldırma ile eşdeğer olabilir 0 nın-nin tab[i]. Bu gibi durumlarda,At uzunluklu bit dizileri üzerinde eşitlik testine eşdeğerdir n(log(n)−1)/2. İki uzunluk dizesinin eşitliğinin test edilmesinin iyi bilinmektedir.m gerektirir O(m2)1-teyp TM üzerinde, ancak şu anda gerçekten bir referans bulamıyorum. Ancak, ps. TM yürütür ana döngüyü arasındaA, en azından harcamak zorunda O((nlogn)2) her biri için t=0,1,2,…log(n)−1, biten O(n2log(n)3).
ps. Bit dizeleri üzerinde eşitlik testininmbit olabilir değil ile tellerde palyndrome-teste göre daha hızlı olmasım bitler (pali sendromunun en azından O(m2)süresi). Palindromu çözmek için eşitlik testi için herhangi bir TM algoritmasını değiştirebiliriz. Eşitlik testi TM'nin iki tamsayı ile başladığını varsayalım: biri başın solunda, diğeri sağda (bu TM için en basit giriş formudur). Sol konumlar üzerindeki her hareket sağ konumlar üzerinde yansıtılabilir (yansıtılabilir). Yansıtılmış bir TM üretiyoruz: ilk TM bir konumda olduğunda−x<0 (solda), yansıtılmış TM konumunda x(sağda). Eğer bir TM eşitlik testiniO(m2), bu değiştirilmiş yansıtılmış TM palindromu O(m2).
Ayrıca, orada bazı eşitlik testi TM algoritmaları vardır ve hepsi ikinci dereceden zaman gerektirir, çünkü biraz zikzak gerekir, örneğin courses.cs.washington.edu/courses/cse431/14sp/scribes/ adresindeki Turing Machine Örnek 2'ye bakın . lec3.pdf