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:
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 ) )
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.
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?
la source
Réponses:
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 )
la source
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.
la source
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.)
la source
la source
Je pense que de nombreux exemples proviennent de problèmes NP-complets qui entrent dans P lorsque nous corrigeons un ou plusieurs paramètres .
la source
la source
la source