Như sau câu hỏi trước đây của tôi , tôi đã chơi với giả thuyết Riemann như một vấn đề của toán học giải trí. Trong quá trình đó, tôi đã đi đến một sự tái phát khá thú vị và tôi tò mò về tên của nó, mức giảm và khả năng chuyển đổi của nó đối với khả năng giải quyết của khoảng cách giữa các số nguyên tố.
Nói một cách chặt chẽ, chúng ta có thể định nghĩa khoảng cách giữa mỗi số nguyên tố là sự lặp lại của các số nguyên tố ứng cử viên trước . Ví dụ: đối với cơ sở của chúng tôi , số nguyên tố tiếp theo sẽ là:
Hoặc, như chúng ta thấy bằng cách vẽ ra điều này : .
Chúng ta có thể lặp lại quy trình cho số nguyên tố bằng cách đánh giá từng số nguyên tố ứng viên định kỳ về phía trước. Giả sử chúng ta muốn lấy số nguyên tố tiếp theo, . Chức năng ứng cử viên của chúng tôi trở thành:
Ở đâu:
, như trên.
Thật dễ dàng để thấy rằng mỗi hàm thành phần chỉ trở thành số 0 trên các giá trị nguyên và cũng dễ dàng thể hiện cách thức này nắm bắt các mối quan hệ hình AND và XOR của chúng ta một cách khéo léo, bằng cách khai thác các thuộc tính của phép cộng và phép nhân trong bối cảnh của một hệ thống lượng giác phương trình.
Sự tái phát trở thành:
... Trong đó toàn bộ vấn đề xoay quanh việc chúng ta có thể đánh giá toán tử qua hàm này trong thời gian đa thức hay không. Trên thực tế, đây là một sự khái quát của Sàng của Eratosthenes .
Mã Python hoạt động để chứng minh sự tái phát:
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
Một ví dụ nhanh:
>>> [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]
Vấn đề là, bây giờ tôi đang ở trên đầu, cả về mặt toán học và là một nhà khoa học máy tính. Cụ thể, tôi không đủ khả năng phân tích Fourier , với việc xác định bìa đồng phục hoặc với mặt phẳng phức nói chung, và tôi lo lắng rằng cách tiếp cận này là sai lầm hoặc che giấu nỗi kinh hoàng về vấn đề 3SAT nâng cao nó lên NP đầy đủ.
Vì vậy, tôi có ba câu hỏi ở đây:
- Với sự tái phát ngắn gọn của tôi ở trên, có thể tính toán xác định hoặc ước tính vị trí của các số 0 trong thời gian và không gian đa thức không?
- Nếu vậy hoặc nếu không, nó có ẩn bất kỳ bài toán con nào khác có thể làm cho một giải pháp đa thời gian hoặc đa không gian không thể truy cập được không?
- Và nếu bằng một phép màu nào đó (1) và (2) giữ vững, bạn sẽ thực hiện những cải tiến lập trình động nào để đáp ứng sự tái phát này, từ cấp độ cao? Rõ ràng, việc lặp lại trên cùng một số nguyên thông qua nhiều chức năng là không phù hợp và khá lãng phí.