Önceki sorumdan şu şekilde , eğlence matematiği olarak Riemann hipotezi ile oynuyorum . Bu süreçte oldukça ilginç bir tekrarlamaya geldim ve adı, indirimleri ve asal sayılar arasındaki boşluğun çözülebilirliğine yönelik izlenebilirliği merak ediyorum.
Tersine, her asal sayı arasındaki boşluğu , önceki aday primerlerin tekrarı olarak tanımlayabiliriz . Örneğin, için bir sonraki asal:
Ya da, bunu çizerek gördüğümüz gibi : .
İleriye doğru tekrarlanan her adayın baş değerlendirmesini değerlendirerek işlemi asalet için tekrarlayabiliriz. Bir sonraki prime ulaşmak istediğimizi varsayalım, . Aday fonksiyonumuz:
Nerede:
, yukarıdaki gibi.
Her bileşen fonksiyonunun sadece tamsayı değerlerinde sıfır olduğunu görmek kolaydır ve trigonometrik bir sistem bağlamında toplama ve çarpma özelliklerini kullanarak AND ve XOR şeklindeki ilişkilerimizi akıllıca yakaladığını göstermek de eşit derecede kolaydır. denklemleri.
Tekrarlama şöyle olur:
... tüm problemin operatörünü polinom zamanda bu fonksiyon üzerinden değerlendirip değerlendiremeyeceğimize bağlı . Bu aslında Eratosthenes Elekinin genelleştirilmesidir .
Nüksü göstermek için çalışan Python kodu:
from math import cos,pi
def cosProduct(x,p):
""" Handles the cosine product in a handy single function """
ret = 1.0
for k in xrange(2,p+1):
ret *= -cos(2*pi*(x+k-1)/p)+1.0
return ret
def nthPrime(n):
""" Generates the nth prime, where n is a zero-based integer """
# Preconditions: n must be an integer greater than -1
if not isinstance(n,int) or n < 0:
raise ValueError("n must be an integer greater than -1")
# Base case: the 0th prime is 2, 0th function vacuous
if n == 0:
return 2,lambda x: 0
# Get the preceding evaluation
p_nMinusOne,fn_nMinusOne = nthPrime(n-1)
# Define the function for the Nth prime
fn_n = lambda x: fn_nMinusOne(x) + cosProduct(x,p_nMinusOne)
# Evaluate it (I need a solver here if it's tractable!)
for k in xrange(p_nMinusOne+1,int(p_nMinusOne**2.718281828)):
if fn_n(k) == 0:
p_n = k
break
# Return the Nth prime and its function
return p_n,fn_n
Kısa bir örnek:
>>> [nthPrime(i)[0] for i in range(20)]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
Sorun şu ki, şimdi hem matematiksel olarak hem de bir bilgisayar bilimcisi olarak başımın üstündeyim. Özellikle, Fourier analizi , üniforma kapakları tanımlamak veya genel olarak karmaşık düzlemle yetinmiyorum ve bu yaklaşımın ya yanlış ya da 3SAT probleminin gizlenen bir dehşetini gizlediğinden endişeliyim NP-tamam.
Burada üç sorum olacak:
- Yukarıdaki kısa tekrarım göz önüne alındığında, polinom zaman ve uzaydaki sıfırların yerini belirleyici olarak hesaplamak veya tahmin etmek mümkün mü?
- Eğer öyleyse ya da değilse, bir çoklu zaman ya da çok-alan çözümünü inatçı kılacak başka alt problemleri gizliyor mu?
- Ve eğer bir mucize (1) ve (2) dayanırsa, bu rekürrensi yüksek seviyeden tatmin etmek için hangi dinamik programlama geliştirmelerini yaparsınız? Açıkçası, birden fazla işlev yoluyla aynı tamsayılar üzerinde yineleme yetersiz ve oldukça israflıdır.