Le problème de la k-clique est-il NP-complet?


23

Dans cet article de Wikipédia sur le problème de la clique dans la théorie des graphes, il déclare au début que le problème de trouver une clique de taille K, dans un graphe G est NP-complet:

Les cliques ont également été étudiées en informatique: trouver s'il y a une clique d'une taille donnée dans un graphique (le problème des cliques) est NP-complet, mais malgré ce résultat de dureté, de nombreux algorithmes pour trouver des cliques ont été étudiés.

Mais dans cet autre article de Wikipedia sur le problème Clique dans CS, il dit qu'il résout le problème pour une taille fixe k est un problème dans P, il peut être forcé brutalement en temps polynomial.

Un algorithme de force brute pour tester si un graphe G contient une clique à k sommets, et pour trouver une telle clique qu'il contient, consiste à examiner chaque sous-graphe avec au moins k sommets et à vérifier s'il forme une clique. Cet algorithme prend du temps O (n ^ kk ^ 2): il y a O (n ^ k) sous-graphes à vérifier, dont chacun a O (k ^ 2) bords dont la présence dans G doit être vérifiée. Ainsi, le problème peut être résolu en temps polynomial chaque fois que k est une constante fixe. Cependant, lorsque k fait partie de l'entrée du problème, le temps est exponentiel.

Y a-t-il quelque chose qui me manque ici? Peut-être une différence dans la formulation du problème? Et que signifie la dernière phrase, "quand k fait partie de l'entrée du problème, cependant, le temps est exponentiel"? Pourquoi y a-t-il une différence lorsque le k fait partie de l'entrée du problème?

Mon idée est que pour trouver une clique de taille k dans un graphe G, c'est que nous choisissons d'abord un sous-ensemble de taille k de nœuds dans G, et testons s'ils sont tous liés aux autres k nœuds, ce qui peut être fait en constante temps. Et répétez cela jusqu'à ce que nous ayons une clique de taille k. Le nombre d'ensembles de k nœuds que nous pouvons choisir parmi G est n! / k! * (nk) !.


13
L'exhaustivité NP d'un problème dépend de ce que vous considérez comme une entrée. Parce qu'un problème est dans s'il y a un algorithme polynomial pour le décider. Si K est une constante (pas une entrée), l'algorithme est polynomial en n . Si k fait partie de l'entrée, alors l'algorithme est exponentiel en k . PKnkk

Réponses:


17

Juste en développant ce que @Lamine a souligné: lorsque fait partie de l'entrée, k peut être aussi grand que nkk , auquel cas le nombre d'ensembles de cliques potentiels estqui est au moins. Par conséquent, votre algorithme naïf prendrait du tempsqui est clairement exponentiel en longueur d'entrée. La version paramétréeoù nous recherchons-cliques dans ungraphe-vertex capture la dureté du problème dans sa forme la plus généralisée carfait partie de l'entrée. Par conséquent, un algorithme poly-temps pourimpliquerait également un algorithme poly-temps pour toutspécifique.n2(nn2)(nn2)n22n2|X|+|k|=n+Journalng(n,k)knkg(n,k)k

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.