SÌ
m è il numero di nodi; n è la lunghezza dell’intero input in bit. Il limite richiesto usa
n, non
m.
1. Quanto è grande l’input? Con la codifica tramite matrice di adiacenza, un grafo di
m nodi richiede
m righe e
m colonne: almeno
m2 bit, uno per ogni cella. Quindi
n≥m2 e
m≤n.
2. Che algoritmo usiamo? Proviamo tutti i
2m gruppi di nodi. Per ogni gruppo controlliamo che contenga almeno
K nodi e che ogni coppia sia collegata. Il controllo richiede tempo polinomiale, quindi il totale è al più
2n⋅poly(n).
3. Perché basta? Per
n abbastanza grande,
n cresce molto più lentamente di
n/2. Anche includendo il costo polinomiale dei controlli, il tempo rimane entro
O(2n/2): infatti
n+klog2n≤n/2 per ogni
k fissato, da un certo
n in poi.
Esempio: con 10 nodi, la sola matrice ha 100 celle. I gruppi da provare sono
210=1.024, mentre
2n/2 è almeno
250. La differenza nasce dal fatto che
n conta i bit della descrizione.