Il problema k-clique è NP-completo?


23

In questo articolo di Wikipedia sul problema della cricca nella teoria dei grafi si afferma all'inizio che il problema di trovare una cricca di dimensione K, in un grafico G è NP-completo:

Le cricche sono state anche studiate in informatica: scoprire se esiste una cricca di una determinata dimensione in un grafico (il problema della cricca) è NP-completo, ma nonostante questo risultato di durezza sono stati studiati molti algoritmi per la ricerca di cricche.

Ma in questo altro articolo di Wikipedia sul problema della Clique in CS si dice che sta risolvendo il problema per una dimensione fissa k è un problema in P, può essere forzato brutalmente in tempo polinomiale.

Un algoritmo di forza bruta per verificare se un grafico G contiene una cricca k-vertice e per trovare una tale cricca che contiene, è esaminare ogni sottografo con almeno k vertici e verificare se forma una cricca. Questo algoritmo richiede tempo O (n ^ kk ^ 2): ci sono sottografi O (n ^ k) da controllare, ognuno dei quali ha bordi O (k ^ 2) la cui presenza in G deve essere verificata. Pertanto, il problema può essere risolto in tempi polinomiali ogni volta che k è una costante fissa. Quando k fa parte dell'input al problema, tuttavia, il tempo è esponenziale.

C'è qualcosa che mi manca qui? Forse una differenza nella formulazione del problema? E cosa significa l'ultima frase, che "Quando k fa parte dell'input al problema, tuttavia, il tempo è esponenziale"? Perché c'è una differenza quando k fa parte dell'input al problema?

La mia idea è che per trovare una cricca di dimensione k in un grafico G, è che per prima cosa scegliamo un sottoinsieme di dimensioni k di nodi da G, e testiamo se sono tutti correlati agli altri nodi k, che possono essere fatti in costante tempo. E ripeti fino a quando non avremo una cricca di dimensione k. Il numero di insiemi di k nodi che possiamo scegliere da G è n! / k! * (nk) !.


13
La completezza NP di un problema dipende da ciò che si considera come input. Perché un problema è in se esiste un algoritmo polinomiale per decidere. Se è una costante (non un input), l'algoritmo è polinomiale in KPK . Se k fa parte dell'input, l'algoritmo è esponenziale in k . nkk

Risposte:


17

Sto solo elaborando ciò che ha sottolineato @Lamine: quando fa parte dell'input, k può essere grande quanto nkk , nel qual caso il numero di potenziali set di cricche èche è almeno. Quindi il tuo ingenuo algoritmo richiederebbe tempoche è chiaramente esponenziale nella lunghezza dell'input. La versione parametrizzatacui stiamo cercando-cliques in ungrafico-vertex cattura la durezza del problema nella sua forma più generalizzata perchéfa parte dell'input. Quindi un algoritmo poly-time perimplicherebbe anche un algoritmo poly-time per qualsiasispecifico.n2(n(nn2) 2n(nn2)n2 | x| +| k| =n+lognG(n,k)knkG(n,k)k2n2|X|+|K|=n+lognsol(n,K)KnKsol(n,K)K

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.