RAM ve Turing makinesi karmaşıklığı arasında büyük boşluklar


9

Sadece P'deki problemleri göz önüne alırsak, bilinen en hızlı kelime-RAM algoritması ile belirli sorunlar için bilinen en hızlı Turing makinesi algoritması arasında büyük boşluklar var mı? Özellikle genel çıkarları olan doğal sorunlar için geniş boşluklar varsa ilgileniyorum.


6
bir RAM makinesi, tepegözlü bir Turing makinesi tarafından simüle edilebilir O(nlogn)çalışma zamanında. Yani gerçekten büyük boşluklar olmayacak.
Shaull

@Shaull Herhangi bir doğal / popüler sorun için bu boyutta bir boşluk var mı?
Lembik

3
Palindrome alır Ω(n2) tek bantlı TM (ve O(n)RAM). eecs.yorku.ca/course_archive/2008-09/W/6115/palindrome.pdf
SamM

6
Shaull'un yorumu yalnızca belirsiz makineler için ve bildiğim kadarıyla iki bantlı TM ortamında doğrudur. Atıf, Shaull?
Ryan Williams

1
@ qbt937 - Vay be, ne geçmişten gelen bir patlama :) Bir (çünkü şimdi bir tane) yoktu çünkü bir alıntı kaynağı yoktu inanıyorum, ve iyi Ryan Williams doğru olabilir.
Şubat'ta

Yanıtlar:


6

Bir RAM makinesinde zamanında hesaplayabileceğiniz herhangi bir sorunun olduğu bilinmektedir. T(n), bir Turing Makinesinde en fazla zamanda yapabilirsiniz T(n)2. Kullanılan belleğin toplam boyutununT(n), çünkü bu daha fazla yazma işlemi yaptığınız anlamına gelir. T(n), yani RAM belleğinden her şey aldığınızda Turing makinesi en kötü durumda T(n)istenen elemanı banttan sırayla bulma zamanı. Bellek erişiminin yanı sıra, geri kalan işlemler de aynı zamana sahip olmalıdır. Ve böylece sınırı elde edersiniz.


2
RAM'ler girişin uzunluğunu (ve dolayısıyla bu uzunluktaki partiyi) logaritmik zamanda hesaplayabilir, ancak temel Turing Makineleri bu pariteyi hesaplamak için doğrusal zamana ihtiyaç duyar.

1

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/21]. Aksi takdirde,Xt=0. Çıktıt=0log(n)1Xt. 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/21]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ğundax<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


Palindromlar için alt sınır sadece doğal olmayan tek bantlı model için geçerlidir. Bir TM üzerindeki iki dizenin eşitliğini doğrusal zamanda test etmek kolaydır. Aynı şey, daha uzun girişlerin iki dizisinin eşitliği için de geçerlidir. Ayrıca, sorunun herhangi bir anlam ifade edebilmesi için, her iki makine modeli için de girişler aynı olmalı, yani sonlu bir alfabe üzerinde dize olarak yazılmalıdır. Bu nedenle, RAM'inizin her girişi okumak ve bir kelimeye dönüştürmek için O (log n) zamanına ihtiyacı vardır, bu da bu işlemi anlamsız hale getirir.
Emil Jeřábek

@Emil Jeřábek, cevabımı sadece 1 bant TM hakkında düşündüğümü belirtmek için düzenleyeceğim. Bir TM'nin eşitliği doğrusal zamanda test edebileceğini söylediğinizde, 2 bantlı bir TM olduğunu düşünürsünüz. Ancak, tüm sorunun 1 bantlı TM'ler hakkında olduğunu anladım. Giriş formuyla ilgili olarak, en azından bazı kelime RAM'leri için haklı olabileceğinizi itiraf etmeliyim. Ama bildiğim kadarıyla, bir C ++ int dizisi, tamsayı birbiri ardına ayırıcı olmadan, sanki bir bit dizisini depolamış gibi saklar. 16 bitlik 10 int tam olarak 160 bit işgal ediyor, değil mi? Durum böyle olmasa bile, bu şekilde çalışan bir makine inşa edilebilir.
Daniel Porumbel

3
Karmaşıklık teorisindeki standart Turing makinesi modeli çok bantlıdır. Burada C ++ 'ın ne kadar alakalı olduğunu göremiyorum, C ++' ı değil, RAM modelini tartışıyoruz. Bu modelde, ayrı bellek konumları uzunluğa sahip olabilirO(logn), ancak yine de yalnızca bir tanesinde (veya O(1)) bellek konumu. Özellikle, girişe aynı anda yalnızca bir konumdan erişebiliriz: “okuma” yapmanızı sağlayacak hiçbir işlem yoktur.lognkonumları girin ve bunları tek bir kelimeye birleştirin ”.
Emil Jeřábek

İki olasılık vardır: (1) Giriş konumu [0] ilk sayının ilk bitini, konum [1] ilk sayının ikinci bitini içerir, vb. Sonra ihtiyacı varO(nlogn)Turing makinesi gibi RAM'de okuma zamanı. Böylece, tek bantlı TM'lerde bile, sadece ikinci dereceden bir hızlanma elde edersiniz. (2) Girilen konum [0] ilk sayıyı, konum [1] ikinci sayıyı vb. İçerir. Bu durumda, bu formun girdisini işleyemediğinden, bir TM'de sorun anlamsızdır. Böylece, hiçbir hızlanma elde etmezsiniz, ancak sadece makine modellerinden birinde ifade edilebilir bir problem vardır.
Emil Jeřábek

@Emil Jeřábek, Yorumlarınızı takiben, bir sorun ve açık bir şekilde alan bir RAM algoritması önermek için soruyu düzenledim O(nlog(n))Verileri okumak için (teypten). Artık alakalı olmayan bazı görüşlerimi kaldırdım. Umarım bu işaret ettiğin problemi çözer.
Daniel Porumbel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.