Problema SAT

Il problema SAT cerca l'esistenza di un istanza che porti un'espressione logica ad essere vera. Analogamente, il problema del CIRCUIT-SAT cerca l'input che porti un circuito logico a restituire .

Entrambi sono NP completi, e vengono detti soddisfacibili quando possiedono un'istanza positiva.

Per esempio, l'espressione è soddisfacibile con .

Forma normale congiunta

Nell'algebra booleana è più comodo usare formule in forma canonica, o forma normale congiunta (FNC).

In questa forma, la struttura è suddivisa in clausole ognuna composta da letterali:

In particolare, il formato -FNC sono quelle espressioni che hanno letterali su ogni clausola.

Classe della clique

Si può dimostrare che il problema della clique è NP completo, infatti si riconosce da:

  1. , perchè è verificabile in se ogni coppia di nodi ha un arco

  2. Il problema SAT-3FNC, cioè il SAT in formato -FNC, è riducibile a
    Questo è dimostrabile perchè una qualunque sua istanza come è trasformabile in un grafo, creando un nodo per ogni letterale, escludendo:

    • gli archi tra letterali della stessa clausola
    • archi tra letterali opposti

    con cui si ottiene il grafo:

    Grafo originato dall'espressione SAT-3FNC

    Di conseguenza, l'espressione è soddisfacibile sse esiste una clique da nodi, infatti se si pongono a i nodi blu della clique scelta si ottengono , e arbitrario, che soddisfano .

Gestire problemi intrattabili

Per poter gestire problemi NP completi si può ricorrere a:

  1. Algoritmi di approssimazioni: trovano una soluzione, meno un errore , in tempo polinomiale
  2. Gestire solo i casi speciali, sperando che il problema ne rientri
  3. Affidarsi ad euristiche: tentano di trovare la soluzione senza certezze