के रूप में इस प्रकार अपने पिछले प्रश्न से , मैं के साथ खेल रहा है रिएमन्न परिकल्पना मनोरंजन गणित के एक मामले के रूप में। इस प्रक्रिया में, मैं एक दिलचस्प पुनरावृत्ति के लिए आया हूं, और मैं इसके नाम, इसकी कटौती, और अभाज्य संख्याओं के बीच अंतर की सॉल्वेबिलिटी के लिए इसकी संवेदनशीलता के रूप में उत्सुक हूं।
बोलने से पहले, हम प्रत्येक अभाज्य संख्या के बीच के अंतर को पूर्ववर्ती प्रत्याशी अपराधों की पुनरावृत्ति के रूप में परिभाषित कर सकते हैं । उदाहरण के लिए, हमारे आधार के लिए , अगला प्रमुख होगा:
या, जैसा कि हम इसे प्लॉट करके देखते हैं : ।
हम प्रत्येक अभ्यर्थी के आगे आवर्ती का मूल्यांकन करके primes के लिए प्रक्रिया को दोहरा सकते हैं। मान लीजिए कि हम अगला प्रधान प्राप्त करना चाहते हैं, । हमारे उम्मीदवार समारोह बन जाता है:
कहाँ पे:
, जैसा कि ऊपर है।
यह देखना आसान है कि प्रत्येक घटक फ़ंक्शन केवल पूर्णांक मानों पर शून्य हो जाता है, और यह दिखाने के लिए समान रूप से आसान है कि यह हमारे AND- और XOR के आकार के रिश्तों को कैसे चतुराई से, त्रिकोणमितीय प्रणाली के संदर्भ में जोड़ और गुणन के गुणों का शोषण करता है। समीकरण।
पुनरावृत्ति बन जाती है:
... जहां पूरी समस्या इस बात पर टिका है कि क्या हम बहुपद समय में इस कार्य पर ऑपरेटर का मूल्यांकन कर सकते हैं । यह वास्तव में, एराटोस्थनीज की छलनी का एक सामान्यीकरण है ।
कार्य पायथन कोड पुनरावृत्ति को प्रदर्शित करने के लिए:
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 समस्या के एक भयावह डर को छुपाता है, इसे ऊपर उठाता है एनपी पूर्णता।
इस प्रकार, मेरे यहाँ तीन प्रश्न हैं:
- ऊपर मेरी प्रवृत्ति पुनरावृत्ति को देखते हुए, क्या यह संभव है कि बहुपद समय और स्थान में शून्य के स्थान का निर्धारण या गणना करना संभव है?
- यदि ऐसा है या नहीं, तो क्या यह किसी अन्य उपप्रणालियों को छिपा रहा है जो एक पॉलीटाइम या पॉलीस्पेस समाधान को असाध्य बना देगा?
- और अगर कुछ चमत्कार (1) और (2) के साथ, उच्च स्तर से, इस पुनरावृत्ति को संतुष्ट करने में आप कौन से गतिशील प्रोग्रामिंग सुधार करेंगे? स्पष्ट रूप से, कई कार्यों के माध्यम से एक ही पूर्णांक पर पुनरावृति असाध्य और काफी बेकार है।