Regola empirica per sapere se un problema potrebbe essere NP-completo


26

Questa domanda è stata ispirata da un commento su StackOverflow .

Oltre a conoscere i problemi NP-completi del libro Garey Johnson e molti altri; esiste una regola empirica per sapere se un problema sembra un NP-completo?

Non sto cercando qualcosa di rigoroso, ma qualcosa che funziona nella maggior parte dei casi.

Naturalmente, ogni volta che dobbiamo dimostrare che un problema è NP-completo, o una leggera variante di un NP-completo; ma prima di correre alla prova, sarebbe bello avere una certa fiducia nel risultato positivo della prova.


8
La mia regola empirica è semplice: se non ha l'odore di un problema con cui ho già familiarità, probabilmente è NP-difficile (o peggio).
JeffE,

12
@JeffE ovviamente, ormai hai familiarità con parecchi problemi ... i nuovi arrivati ​​in CS potrebbero non essere in grado di usare la stessa regola.
Joe,

1
@Joe: True. Forse sarebbe meglio dire: se non hai riscontrato il problema da un libro di testo, è probabilmente NP-difficile.
JeffE,

2
Un altro modo per dirlo: è sorprendente quando un problema non è NP-difficile, piuttosto che quando un problema è NP-difficile.
Joe,

Risposte:


15

Questo è il mio approccio personale per determinare se un problema (cioè una lingua ) è NP completo o no. Se entrambe queste condizioni sono verificate:L

  • Sento che testare se un'istanza in cui in L implica che devo controllare tutte le combinazioni di qualche tipoIL
  • e che non c'è modo di dividere una tale combinazione in due più piccole

L

SSS1S2S1S2

ACBABBC

Francamente questo approccio è molto semplice: cerco di trovare un algoritmo (polinomiale) per il problema dato. Se non riesco a trovarne uno, il problema diventa "difficile" dal mio punto di vista. Poi arriva tutto il ragionamento sulla completezza NP: sarò in grado di codificare un problema esistente NP completo in questo? (E poiché di solito è molto più difficile, provo ancora una volta a trovare un algoritmo polinomiale ..)

Sospetto che questo sia il solito modo di pensare. Tuttavia rimane abbastanza difficile da applicare a problemi sconosciuti. Ricordo personalmente di essere stato sorpreso da uno dei primi esempi di completezza NP che mi è stato detto: il problema della cricca . Sembrava così semplice da controllare! Quindi suppongo che l'esperienza abbia molto a che fare con esso. Anche l'intuizione a volte può essere inutile. Ricordo di aver ricevuto diverse volte due problemi quasi identici, ma uno era in P e l'altro con una piccola variazione era NP-completo.

Devo ancora trovare un buon esempio (ho bisogno di aiuto qui), ma questo è come il problema della corrispondenza post : questo è un problema indecidibile ma alcune varianti sono decidibili.


7
+1

2
Un'eccezione interessante alla regola empirica sono i problemi di ottimizzazione che possono essere risolti con la programmazione lineare. Se non hai sentito parlare del trucco, può essere difficile vedere come problemi come il problema di assegnazione o la corrispondenza dei grafici possano essere risolti in tempo di tempo, poiché trucchi come la divisione e la conquista e la programmazione dinamica non sembrano applicarsi.
hugomg,

Un esempio è il problema della susseguenza comune più lunga che si trova in P per 2 sequenze ma entra in NP-Hard con altro.
Christian Vielma,

14

Un'altra prospettiva sulla durezza del problema viene dalla comunità del gioco e del puzzle, in cui la regola empirica è che "i problemi sono più difficili che possono essere" (e le eccezioni provengono da strutture nascoste nel problema - l'esempio di Massimo del determinante in i commenti ne sono un buon esempio); il trucco viene quindi nel capire quanto può essere difficile un problema:

  • n
  • Gli enigmi che coinvolgono una sequenza di mosse all'interno di uno spazio di stato limitato sono in PSPACE (dal momento che l'albero delle mosse può generalmente essere esplorato in modo approfondito in modo standard e richiede solo la memorizzazione per un numero polinomiale di configurazioni) e tende ad essere completo in PSPACE; un classico esempio di ciò è Rush Hour.
  • Anche i giochi con una profondità limitata polinomialmente sono in PSPACE; questo utilizza la caratterizzazione di PSPACE come APTIME, poiché la consueta caratterizzazione min-max delle strategie imita perfettamente una macchina di Turing alternata con la sua caratterizzazione come 'esiste una mossa per il giocatore A tale che per ogni mossa di risposta dal giocatore B, esiste una risposta mossa per il giocatore A tale che ... ', ecc. Tendono anche a essere completi di PSPACE; I giochi esotici e generalizzati di Tic-Tac-Toe ne sono entrambi esempi.
  • I giochi senza limite di profondità dell'albero ma giocati in uno spazio (polinomialmente) limitato sono in EXPTIME, poiché ci sono esponenzialmente molte posizioni totali e l'intero grafico può essere costruito ed esplorato in tempo polinomiale nel numero di posizioni (e quindi nel complesso esponenziale) ; questi giochi sono generalmente completi EXPTIME. Scacchi, dama e Go rientrano tutti in questa categoria.
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.