Доведення (не) простежуваності цього N-го первинного повторення


18

Як випливає з мого попереднього запитання , я грав із гіпотезою Рімана як питання рекреаційної математики. У ході цього процесу я дійшов до досить цікавого повторення, і мені цікаво його назва, його скорочення та простежуваність до розв'язуваності проміжку між простими числами.

Вкрай кажучи, ми можемо визначити розрив між кожним простим числом як повторення попередніх прайменів- кандидатів . Наприклад, для нашої бази p0=2 наступним простим числом буде:

p1=min{x>p0cos(2π(x+1)/p0)+1=0)}

Або, як ми бачимо, побудувавши це : .p1=3

Ми можемо повторити процес для простих праймерів, оцінюючи кожен кандидат, який повторюється вперед. Припустимо, ми хочемо отримати наступний прайм, . Наша функція кандидата стає:p 2np2

p2=min{x>p1fp1(x)+((cos(2π(x+1)/p1)+1)(cos(2π(x+2)/p1)+1))=0}

Де:

fp1(x)=cos(2π(x+1)/p0)+1 , як зазначено вище.

Неважко помітити, що кожна компонентна функція стає лише нульовою для цілих значень, і так само легко показати, як це чітко фіксує наші відносини у формі AND- та XOR, використовуючи властивості додавання та множення в контексті системи тригонометричної рівняння.

Рецидив стає:

fp0=0p0=2fpn(x)=fpn1(x)+k=2pn1(cos(2π(x+k1)/pn1)+1)pn=min{x>pn1fpn(x)=0}

... де вся проблема залежить від того, чи можемо ми оцінити оператора за цією функцією в поліноміальний час. Це, по суті, узагальнення сита Ератостена .min

Робочий код 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-повнота.

Таким чином, у мене тут три питання:

  1. З огляду на моє короткочасне повторення, чи можна детерміновано обчислити чи оцінити розташування нулів у поліноміальному часі та просторі?
  2. Якщо так чи ні, то чи приховує якісь інші підпроблеми, які б зробили рішення поліметалічного чи поліпросторового нерозбірливим?
  3. І якщо якимось дивом (1) і (2) витримаєте, які динамічні вдосконалення програмування ви б зробили, задовольняючи цю повторюваність, з високого рівня? Зрозуміло, що ітерація над одними і тими ж цілими кількома функціями є неелегантною та досить марною.

І для тих, хто все ще тут, незважаючи на мою стіну тексту: я не впевнений, що це зводить себе до зети Рімана, тим самим надаючи їй таку ж складність. Я не вірю, що це робить.
МістерГомес

1
ff(pn)

1
Я не стежу за усім у твоєму дописі. Я думаю, ви маєте на увазі NP-повний, а не NP. Взагалі довести, що теоретична функція чисел не відповідає NP, є досить складним завданням, оскільки вони часто не мають / приховують будь-яку комбінаторну структуру, яка б дозволила нам створити гаджети для скорочення.
Каве

1
f(x)

f

Відповіді:


1

Наступний документ показує, що PRIMES знаходиться в P (він також виграв премію Gödel у 2006 році):

http://www.cse.iitk.ac.in/users/manindra/algebra/primality_v6.pdf

Встановивши рішення N-ї процедури мінімізації основного алгоритму AKS PRIMES (за модулем віднімання), ми можемо ефективно отримати відстежуване рішення відношення рецидиву (якщо ви зможете довести, що простий розрив задається відношенням рецидиву).

Вихідні коди можна знайти в Інтернеті. Я не вказую на них тут, тому що я їх особисто не перевіряв.

n


1
Сторінка Rosettacode повністю неправильно названа. Це не тест первинності AKS, а це перерахунок пробного поділу на всі цілі числа менше n. З іншого боку, зауваживши, що первинність є в Р, і побачити, чи проливає це світло на початкове питання, варто запитати.
DanaJ

Добрий момент ... Я це
виправлю

1
nlgn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.