Personne ne sait comment faire nettement mieux que quadratique pour la étroitement liée 3SUM problème ( http://en.wikipedia.org/wiki/3SUM ). Je dirais que la possibilité d'une solution rapide à votre problème comme peu probable.
Le 3SUM problème est de trouver a + b + c = 0. Laissez PYTHTRIP être le problème de trouver un^2 + b^2 = c^2 quand les entrées sont de vrais nombres algébriques. Voici le O(n log n)-réduction du temps de 3SUM à PYTHTRIP. Comme ShreevatsaR points, cela n'exclut pas la possibilité d'un certain nombre de la théorie des truc (ou une solution à 3SUM!).
Nous avons d'abord réduire 3SUM à un problème que je vais appeler 3SUM-ALT. Dans 3SUM-ALT, nous voulons trouver a + b = c, où tous les tableau entrées sont non négatifs. La finition de réduction à partir de 3SUM-ALT pour PYTHTRIP est juste de prendre des racines carrées.
Pour résoudre 3SUM à l'aide de 3SUM-ALT, d'abord éliminer la possibilité de triplets où l'un des a, b, c est zéro (O(n log n)). Maintenant, tout en satisfaisant triple dispose de deux nombres positifs et un négatif, ou deux négatif et un positif. Soit w un nombre supérieur à trois fois la valeur absolue de nombre d'entrée. Résoudre les deux instances de 3SUM-ALT: l'un où tout le négatif x sont mappés à des w - x et tout x positif sont mappés à 2w + x, où tous les x négatif sont mappés à 2 w - x et tout x positif sont mappés à w + x. Le reste de la preuve est simple.