O problema 3SUM tenta identificar 3 números inteiros de um conjunto de tamanho modo que .S n a + b + c = 0
É conjeturado que não há solução melhor que quadrática, isto é, . Ou, de maneira diferente: .o ( n log ( n ) + n 2 )
Então, eu queria saber se isso se aplicaria ao problema generalizado: Encontre números inteiros para em um conjunto de tamanho tal que . i ∈ [ 1 .. k ] S n ∑ i ∈ [ 1 .. k ] a i = 0
Eu acho que você pode fazer isso em para (é trivial generalizar o algoritmo simples).
Mas existem algoritmos melhores para outros valores de ?k ≥ 2 k = 3 k
Respostas:
Para igual :k S k / 2 S x - x O ( n k / 2 log n ) calcule uma lista classificada de todas as somas de elementos de entrada. Verifique se contém algum número e sua negação . O algoritmo é executado no tempo .S k/2 S x −x O(nk/2logn)
Para ímpar :k S ( k - 1 ) / 2 a S x - a - x x O ( n 2 ) O ( n ( k + 1 ) / 2 ) Calcule a lista classificada de todas as somas de elementos de entrada. Para cada elemento de entrada , verifique se contém e , para algum número . (O segundo passo é essencialmente o algoritmo de tempo para 3SUM.) O algoritmo é executado no tempo .S (k−1)/2 a S x −a−x x O(n2) O(n(k+1)/2)
Ambos os algoritmos são ótimos (exceto possivelmente para o fator de log quando é igual e maior que ) para qualquer constante em uma certa restrição fraca, mas natural, do modelo de computação da árvore de decisão linear. Para mais detalhes, consulte:k 2 k
Nir Ailon e Bernard Chazelle. Limites inferiores para teste de degeneração linear . JACM 2005.
Jeff Erickson. Limites inferiores para problemas de satisfação linear . CJTCS 1999.
fonte
(1) Mihai Patrascu e Ryan Williams. Sobre a possibilidade de algoritmos SAT mais rápidos. Proc. 21º Simpósio ACM / SIAM sobre Algoritmos Discretos (SODA2010)
fonte
Aqui estão algumas observações simples.
Para mais algumas referências, consulte a página The Open Problems Project para 3SUM .
fonte
Veja http://arxiv.org/abs/1407.4640
Um novo algoritmo para resolver o problema rSUM Valerii Sopin
Abstrato:
Um algoritmo determinado é apresentado para resolver o problema rSUM para qualquer r natural com uma avaliação sub-quadrática da complexidade do tempo em alguns casos. Em termos de quantidade de memória utilizada, o algoritmo obtido também possui uma ordem sub-quadrática. A idéia do algoritmo obtido é baseada na consideração de números inteiros, mas em k∈N bits sucessivos desses números no sistema de numeração binária. É mostrado que, se uma soma de números inteiros for igual a zero, a soma dos números apresentados por quaisquer k bits sucessivos desses números deverá ser suficientemente "próxima" de zero. Isso torna possível descartar os números que, a fortiori, não estabelecem a solução.
É algo novo nesta edição.
fonte