前の質問から次のように、私はレクリエーション数学の問題としてリーマン仮説で遊んでいます。その過程で、私はかなり興味深い再発に至りました。そして、その名前、その縮約、素数間のギャップの可解性に対する扱いやすさについて興味があります。
簡潔に言えば、各素数間のギャップを、先行する素数候補の繰り返しとして定義できます。たとえば、ベースが場合、次の素数は次のようになります。
それとも、私たちはで見るように、このアウトをプロット:。
順方向に繰り返される各素数候補を評価することにより、素数に対してプロセスを繰り返すことができます。次の素数p_2を取得するとします。候補関数は次のようになります。
どこ:
(上記のとおり)。
各コンポーネント関数が整数値でのみゼロになることは簡単にわかります。また、三角関数システムのコンテキストで加算と乗算のプロパティを活用することにより、これがANDおよびXOR形の関係を巧みにキャプチャする方法を簡単に示すことができます。方程式。
再発は次のようになります。
...問題全体は、多項式時間でこの関数の演算子を評価できるかどうかにかかっています。これは、事実上、エラトステネスのふるいの一般化です。
繰り返しを示すPythonコードの動作:
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
簡単な例:
>>> [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]
問題は、私は数学的にもコンピューター科学者としても頭を悩ませていることです。具体的には、私が持つ有能ないですフーリエ解析定義すると、均一なカバーを、かと複素平面一般的に、私は、このアプローチは、いずれかのフラットアウトであることを心配している間違ったまたは非表示3SAT問題の潜んでいる恐怖が上昇、それをすることNP完全性。
したがって、ここで3つの質問があります。
- 上記の簡潔な繰り返しを考えると、多項式の時間と空間におけるゼロの位置を決定論的に計算または推定することは可能ですか?
- そうであるか、そうでない場合、ポリタイムまたはポリスペースソリューションを扱いにくいものにする他のサブ問題を隠していますか?
- 奇跡(1)と(2)が続いた場合、この再発を満足させるために、高レベルからどのような動的プログラミングの改善を行いますか?明らかに、複数の関数を介した同じ整数に対する反復は、洗練されておらず、非常に無駄です。