Karmaşıklık-teorik


13

Ana sayma fonksiyonu , indirgenen , daha az bir asal sayıların sayısı olarak tanımlanır veya eşit olan , x .π(x)x

Bir karar problemini 'den aşağıdaki gibi tanımlayabiliriz:π(x)

İkili olarak yazılmış iki ve n sayısı verildiğinde π ( x ) = n olup olmadığına karar verin .xnπ(x)=n

Bir arkadaşım ve ben bugün bu sorundan bahsediyorduk. Bu sorun için bir psödopolinom-zaman algoritması var - sayıların kaçının asal olduğunu görmek için her adımda deneme bölümünü kullanarak kadar sayın ve bunun n'ye eşit olup olmadığını kontrol edin . Yeni tarif ettiğim algoritma sadece polinom yardımcı alanı kullanmak için uygulanabileceğinden, sorun PSPACE'de de var.xn

Ancak, bu sorunu daha düşük bir karmaşıklık sınıfına yerleştirmenin bir yolunu bulmakta zorlanıyorum. Problem için bir polinom zaman doğrulayıcısının nasıl oluşturulacağını göremiyorum, bu yüzden NP'de olup olmadığından emin değilim ve onu polinom hiyerarşisine sokmanın bir yolunu düşünemiyorum.

Bu sorun için en uygun karmaşıklık sınıfı nedir?

Teşekkürler!


genellikle bu tür sorunlar Riemann varsayımına bağlı olma eğilimindedir ....
seninle

Yanıtlar:


11

Bu çok açık bir sorundur. Sorunun "doğal olarak" sığabileceği bazı sınıflar çizeceğim.

Tanımınız çalışmak için biraz garip, sorunun mevcut herhangi bir karmaşıklık sınıfına uyması zor. Tanımladığınız dil dillerin kesişimidir ve { ( x , n ) | π ( x ) n } . Yani örneğin { ( x , n ) | π ( x ) n } sınıfımdaydı{(x,n)|π(x)n}{(x,n)|π(x)n}{(x,n)|π(x)n} sonra { ( x , n ) | π ( x ) n } olacaktır c o K . Bu, bir "bir dilin kesiştiği durumuna olurdu çünkü sert tanımladığınız dili karakterizasyonu vererek yapar K bir dille c o K sıkı bağlı vermek".K{(x,n)|π(x)n}coKKcoK

"Compute " problemi # P'de bir problemdir , burada # P F P S P A C E "Belirsiz, polinom TM'nin kabul yollarının sayısını hesapla" şeklindeki problem sınıfıdır. Açıkçası q x sayısını tahmin eden belirsiz bir TM oluşturabiliriz ve sonra (AKS ile) q'nun asal olup olmadığını test eder .π(X)#P#PFPSPACEqxq

#PPP{(x,n)|π(x)n}{(x,n)|π(x)n}PP (kabul edilen yolların sayısını dengelemek için yukarıda adı geçen TM'ye biraz şekerleme yaparak).


3

= ,

[m0m<2log2(x+1)]b
eğer x < möyleyse reddet
eğer b=1öyleyse:
eğer m < nöyleyse kabul et başka reddet
Başka:
m asal ise başka reddetmeyi kabul et

.


Özellikle, doğruluk tablosu indirimleri altında PP kapatıldığı için probleminiz PP'de de .


2

Pratikte, cevabı daha hızlı veya daha yavaş alabilirsiniz :-(

Π (x) için oldukça iyi yaklaşımlar vardır. Böylece böyle bir yaklaşımı hesaplarsınız ve çok uzaktaysa π (x) ≠ n olduğunu bilirsiniz. Örneğin, n ≥ x ise, anything (x) ≠ n'nin hiçbir şey hesaplamadan olduğunu biliyorum.

O (x ^ (1/2)) içinde çalışan π (x) 'nin çift mi yoksa tek mi olduğunu belirleyen hızlı bir algoritma vardır. Bu algoritmayı çalıştırabilir ve n'nin paritesinin yanlış olduğunu ve işiniz bittiğini algılayabilir. N, π (x) 'e yakın rastgele bir tamsayı ise elli şansa sahiptir.

Bunun dışında, π (x) hesaplamaktan daha hızlı olan herhangi bir yöntem bilmiyorum. Bu çok rahatsız edici - π (10 ^ 25) hesaplaması gereken bir program yazarsam ve açıkça yanlış olmayan bir sonuç alırsam, o zaman sonucumun tekrarlanmasından başka doğru olup olmadığını kontrol etmenin bir yolu yoktur. hesaplama. Ve sadece programımı kullanarak hesaplamayı tekrarlayamazsınız, farklı bir program yazmanız gerekir, aksi takdirde programımda π (x) 'den biraz farklı bir fonksiyon hesaplamasını sağlayan herhangi bir hata olup olmadığını tespit edemezsiniz.

π (x) yaklaşık O (n ^ (2/3)) 'de makul bir şekilde kolayca hesaplanabilir ve bazı gerçekten derin matematiklerle daha hızlı hesaplanabilir.


1
Bu ilginç, ama soru daha çok sorunu içeren karmaşıklık sınıfları hakkında.
usul
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.