Problema del clique
En complejidad computacional, el problema del clique (a veces también traducido desde el inglés como problema del clan o problema de la camarilla[1]), es un problema NP-completo según la Teoría de la complejidad computacional.
Definición
Dado un grafo G=(N,A), se dice que G tiene un clique de tamaño k si existe un subgrafo G' = (N',A') de G tal que N' es subconjunto de N, |N'|=k y A'=N'×N', vale decir, todos sus vértices están conectados entre ellos.
El problema de clique es un problema de decisión para determinar cuándo un grafo contiene un clique de al menos un tamaño k. Una vez que tenemos k o más vértices que forman un clique, es trivial verificar que lo son, por eso es un problema NP. El correspondiente problema de optimización, consiste en encontrar un clique de tamaño máximo en un grafo (un subgrafo completo de tamaño máximo). Este problema se puede enunciar como un problema de decisión si la pregunta que se hace es saber si existe un clique de tamaño k en el grafo.
Algoritmos
Un ejemplo de algoritmo de búsqueda de fuerza bruta para encontrar un clique en un grafo consiste en listar todos los subconjuntos de vértices V y verificar para cada uno de ellos si forma una clique. Ese algoritmo es polinómico si k es una constante pero no lo es cuando se hace depender a k de, por ejemplo, |V|/2.
Un mejor algoritmo (Bron y Kerbosch) consiste en arrancar con cliques de un solo elemento (cualquier elemento sirve) e intentar mezclar cliques para obtener otras más grandes, hasta que no queden más mezclas por intentarse. Dos cliques pueden ser mezcladas si cada nodo del primero es adyacente a cada nodo del segundo.