O livro de Arora e Barak apresenta o fatorial como o seguinte problema:
Eles acrescentam, ainda no capítulo 2, que remover o fato de ser primo torna esse problema NP completo, embora isso não esteja relacionado à dificuldade de fatorar números. Parece que pode haver uma redução do SUBSETSUM, mas fiquei preso ao encontrá-lo. Alguma sorte por aqui?
Edição 1º de março: A recompensa é para a prova de completude do usando a redução determinística de Karp (ou Cook).
cc.complexity-theory
np-hardness
factoring
Michaël Cadilhac
fonte
fonte
Respostas:
Esta não é uma resposta, mas está perto. A seguir, é uma prova de que o problema é NP-difícil sob reduções aleatórias.
Existe uma relação óbvia com a soma do subconjunto, que é: suponha que você conheça os fatores de : p 1 , p 2 , ... , p k . Agora, você deseja encontrar um subconjunto S de p 1 … p k de modo queN p1 p2 … pk S p1 ... pk
O problema com a tentativa de usar essa idéia para mostrar o problema é NP-hard é que se você tem um problema de soma subconjunto com números , t 2 , ... , t k , você pode não necessariamente encontrar números primos em tempo polinomial, tais que log p i ct t i (onde por α , quer dizer, aproximadamente, proporcional ao). Este é um problema real, porque, uma vez subconjunto de soma não é fortemente NP-completo, você precisa encontrar estes log p i para grandes inteiros t i .t1 t2 … tk logpi∝ti ∝ logpi ti
Agora, suponha que exigem que todos os inteiros ... t k em um subconjunto problema da soma estão entre x e x ( 1 + 1 / k ) , e que a soma é de aproximadamente 1t1 … tk x x(1+1/k) . O problema da soma do subconjunto ainda será NP-complete e qualquer solução será a soma dosk/2inteiros. Nós podemos mudar o problema de números inteiros para reais se deixarmost ' i estar entretieti+112∑EutEu k / 2 t′i ti , e em vez de exigir o montante a ser exatamenteé, exigimos que seja entreses+1ti+110k s s . Só precisamos especificar nossos números com cerca de4logkbits de precisão para fazer isso. Assim, se começamos com números combitsBe podemos especificar números reaislogpipara aproximadamenteB+4logkbits de precisão, podemos realizar nossa redução.s+110 4logk B logpi B+4logk
Agora, a partir wikipedia (via comentário de Hsien-Chih abaixo), o número de primos entre e T + T 5 / 8 é θ ( T 5 / 8 / log T ) , então se você basta escolher números aleatoriamente nesse intervalo, e testá-los quanto à primalidade, com alta probabilidade de obter um primo em tempo polinomial.T T+T5/8 θ(T5/8/logT)
Agora, vamos tentar a redução. Digamos que o nosso são todos B bits de comprimento. Se tomarmos T i de comprimento 3 B pedaços, então podemos encontrar um número primo p i perto T i com 9 / 8 B bits de precisão. Assim, podemos escolher T i para que log T i alfa t i com precisão 9 / 8ti B Ti 3B pi Ti 9/8B Ti logTi∝ti bits. Isso nos permite encontrar p i ≈ T i para que log p i alfa t i com precisão 9 / 89/8B pi≈Ti logpi∝ti bits. Se um subconjunto desses primos se multiplica para algo próximo ao valor alvo, existe uma solução para os problemas de soma do subconjunto original. Por isso, deixe N = Π i p i , escolher G e L de forma adequada, e que tem uma redução randomizado de soma subconjunto.9/8B N=Πipi L U
fonte
Eu acho que está ligado ao teorema do PCP (em particular ).NP=PCP[O(logn),O(1)]
Um trecho do artigo de Madhu :
... A noção de que um verificador pode executar qualquer cálculo de tempo polinomial enriquece consideravelmente a classe de teoremas e provas e começa a oferecer métodos altamente não triviais de provar teoremas. (Uma conseqüência imediata é que podemos assumir que teoremas / provas / asserções / argumentos são seqüências binárias e o faremos a partir de agora.) Por exemplo, suponha que tenhamos uma asserção (digamos a Hipótese de Riemann) e digamos que acreditamos que ela tenha prova que caberia em um artigo de 10.000 páginas. A perspectiva computacional diz que, dado A e esse limite (10.000 páginas), é possível calcular com eficiência três números inteiros positivos N , L , U com L ≤ U ≤ NA UMA N, L , U L≤U≤N de tal modo que é verdadeiro se e apenas se N tem um divisor entre L e L . Os números N , L e U serão muito longos (talvez seja necessário escrevê-los em um milhão de páginas), mas eles podem ser produzidos com extrema eficiência (em menos do que o tempo que uma impressora levaria para imprimir todos esses números inteiros, que é certamente no máximo um dia ou dois). (Este exemplo específico é baseado em um resultado devido a Joe Kilian , comunicação pessoal) ...A N L U N L você
... muito além das minhas habilidades em teoria da complexidade :-)
fonte
Esta é uma ideia informal de redução determinística eficiente (e pode estar incompleta):
Fractran é uma linguagem de programação completa de Turing. A limitada versão adequadamente definido de programas Fractran deve ser redutível à linguagem{ ⟨ L , U, M⟩|( ∃ um número inteiro positivo p ∈ { L , … , U} ) [ p | M] }
Por exemplo, uma versão limitada poderia perguntar se o número inteiro é produzido na sequência de saída de um programa Fractran dentro de um certo número de etapas (divisões) (isto é, M = N j ∗ F i ).M M= Nj∗ FEu
fonte