Pour quels problèmes en P est-il plus facile de vérifier le résultat que de le trouver?


52

Pour (rechercher les versions) des problèmes NP- complets, la vérification d'une solution est clairement plus facile que de la trouver, car la vérification peut être effectuée en temps polynomial, tandis que la recherche d'un témoin prend (probablement) une durée exponentielle.

En P , cependant, la solution peut aussi être trouvée en temps polynomial, il ne semble donc pas évident de savoir quand la vérification est plus rapide que de trouver la solution. En fait, différents problèmes semblent se comporter différemment de ce point de vue. Quelques exemples:

  1. 3sum: donnée numéros d'entrée, trouver trois d' entre eux cette somme à 0. Pour autant que je sache, les pistes de l' algorithme le plus rapide connu dans le temps, et cet ordre est optimal conjecturé. D'autre part, la vérification d'une solution est beaucoup plus rapide, car il suffit de vérifier que les 3 nombres trouvés totalisent bien 0.O ( n 2 - o ( 1 ) )nO(n2o(1))

  2. Chemins les plus courts toutes paires: à partir d’ un graphe avec des poids de bord, calculez sa matrice de distance des chemins les plus courts. Une fois qu'une telle matrice est donnée, peut-on vérifier plus rapidement qu'il s'agit bien de la matrice de distance correcte, plutôt que de la recalculer? À mon avis, la réponse est peut-être oui, mais elle est certainement moins évidente que pour 3SUM.

  3. Programmation linéaire. Si une solution optimale revendiquée est donnée, il est plus facile de la vérifier que de la recalculer, lorsque des informations auxiliaires sont également fournies (solution double optimale). D'un autre côté, si seule la solution primale est disponible, il n'est pas clair si on peut la vérifier plus rapidement que la résolution du problème.

Question: Que sait-on de ce sujet? C'est-à-dire, quand est-il plus facile de vérifier une solution à un problème en P que de trouver la solution?


7
Je pense que de nombreux exemples proviennent de problèmes NP-complets qui entrent dans P lorsque nous corrigeons certains paramètres. Par exemple, vérifier si un graphique contient une clique de taille pour k fixe . La vérification prend du temps linéaire, mais à moins que P = NP, la complexité du problème de recherche (polynôme) dépend de kkkk
Marzio De Biasi

16
Nous pouvons vérifier qu'une liste de entiers est triée avec n - 1 comparaisons, mais il faut des comparaisons ( n log n ) pour trier une liste non triée. nn1Θ(nlogn)
Thomas

7
Souhaitez-vous qu'il soit facile de vérifier si les problèmes de décision sont oui ou non? Pour 3SUM, bien qu'il soit facile de vérifier des instances oui à temps constant, je ne sais pas s'il est facile de vérifier une instance non. Ou pensez-vous davantage aux problèmes où il existe une sortie non booléenne, telle que la multiplication matricielle? (La multiplication matricielle est un exemple de ce que vous voulez si vous autorisez des algorithmes aléatoires.)
Robin Kothari

3
"D'autre part, la vérification d'une solution est beaucoup plus rapide, car il suffit de vérifier que les 3 nombres trouvés totalisent bien 0". - Nous devons également vérifier que les 3 nombres trouvés font réellement partie de l'entrée.
hvd

3
Existe-t-il des problèmes pour lesquels nous savons que la vérification n’est pas plus facile?
Raphaël

Réponses:


24

on sait que pour un graphe G et un arbre T, on peut vérifier en temps linéaire que T est un arbre couvrant minimal de G. Mais nous n’avons pas encore d’algorithme de temps linéaire déterministe pour calculer le MST. Bien sûr, l’écart est minime (1 vs ), mais c’est toujours là :))α(n)


4
Il est peut-être juste d'ajouter qu'il existe un algorithme randomisé qui s'exécute dans le temps linéaire attendu (algorithme de Karger-Klein-Tarjan).
Sasho Nikolov

2
De plus, si quelqu'un souhaite un lien, il s'agit de l'algorithme de vérification MST à temps linéaire le plus simple que je connaisse: webhome.cs.uvic.ca/~val/Publications/Algorithmica-MSTverif.ps .
Sasho Nikolov

20

Cet article montre qu'il existe des algorithmes de vérification pour les instances YES et NO pour 3 problèmes, notamment Max flow, 3SUM et APSP, qui sont plus rapides d'un facteur polynomial que les limites connues pour le calcul de la solution elle-même.

Il existe une classe de problèmes, à savoir ceux pour lesquels l'amélioration du temps d'exécution est SETH-hard, dont le temps d'exécution pour vérifier les instances de type NO ne sera probablement pas beaucoup plus rapide que celui de calcul de la solution, sinon la conjecture de cet article intitulée Non déterministe L'hypothèse temporelle exponentielle forte échouerait.


18

Pour certains problèmes, il semble n'y avoir aucune différence. En particulier, Vassilevska Williams & Williams montrent:

  • pour la multiplication matricielle booléenne, le calcul du produit matrice et la vérification de l'équivalent subcubique du produit matriciel, ce qui signifie qu'ils ont tous les deux des algorithmes de temps subcubique ou qu'aucun d'entre eux n'en a un.

  • Il en va de même pour le calcul et la vérification du produit matriciel sur toute "structure étendue (min, +)" (voir le papier pour la définition, mais cela inclut beaucoup de problèmes naturels).

(Maintenant, bien sûr, il est possible que ces problèmes aient tous des algorithmes sous-cubiques, puis il pourrait y avoir une différence polynomiale entre l'informatique et la vérification, mais pour ces problèmes, il ne peut y avoir de différence cubique. Et il me semble plausible qu'en fait, ils nécessitent tous essentiellement du temps cubique.)


2
Par ailleurs, pour la multiplication matricielle dans un champ suffisamment grand, il existe un algorithme de vérification temporelle quadratique en temps, alors que le temps d'exécution le plus rapide pour le calcul du produit est n ^ omega.
Thatchaphol

2
@Thatchaphol: Oui, bien que beaucoup de gens croient que oméga = 2 ... En outre, il est largement reconnu que la multiplication matricielle booléenne (c'est-à-dire l'informatique matricielle mult sur le booléen et / ou le demi-anneau) a une nature quelque peu différente de celle d'une multiplication matricielle champ.
Joshua Grochow

16
  • Ω(n)Ω(logn)

    O(1)

  • Ω(nlogn)O(n)


2
Ω(nlogn)O(1)

O(n)

Θ(n)


9

O~(n6)O~(n3)


le complément (composition) est encore plus facile à observer!
Yonatan N

3

O(n2ϵ)

PΩ(n1ϵ)

O(n2/logn)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.