Guida completa alla NP

Introduzione al tempo polinomiale non deterministico (NP)

NP è una classe di problemi la cui soluzione può essere verificata in tempo polinomiale da una macchina di Turing deterministica. Ciò significa che il tempo necessario per risolvere questi problemi cresce in modo polinomiale all'aumentare delle dimensioni dell'input. NP è una delle classi di problemi più studiate in informatica ed è ampiamente utilizzata in crittografia, nella teoria della complessità computazionale e in altri settori.

Esempi di problemi NP

I problemi NP sono problemi risolvibili in tempo polinomiale ma non necessariamente in tempo lineare. Esempi di problemi NP sono il problema dello zaino, il problema del commesso viaggiatore, il problema del circuito hamiltoniano e il problema della cricca.

Problemi NP-completi

I problemi NP-completi sono un sottoinsieme dei problemi NP e sono i problemi NP più difficili. Questi problemi sono considerati i più difficili dell'informatica. Esempi di problemi NP-completi sono il problema della soddisfabilità booleana, il problema della colorazione dei grafici, il problema della somma di sottoinsiemi e il problema dell'isomorfismo dei sottografi.

Problemi NP-Hard

I problemi NP-Hard sono un sottoinsieme dei problemi NP-Completi e sono i problemi più difficili in NP. Questi problemi sono così difficili che, anche se possono essere risolti in tempo polinomiale, non si conosce un algoritmo in tempo polinomiale per risolverli. Esempi di problemi NP-Hard sono il problema della programmazione lineare integrale, il problema della massima cricca e il problema della suddivisione dei grafici.

La relazione tra i problemi NP-Completi e NP-Duri

La relazione tra i problemi NP-Completi e NP-Duri è che i primi consistono nei problemi più difficili di NP, mentre i secondi consistono nei problemi più difficili dei problemi NP-Completi. In altre parole, tutti i problemi NP-Completi sono NP-Duri, ma non tutti i problemi NP-Duri sono NP-Completi.

Problemi NP-Intermedi

I problemi NP-Intermedi sono un sottoinsieme dei problemi NP-Hard e sono considerati i problemi più difficili in NP per i quali è noto un algoritmo in tempo polinomiale. Esempi di problemi NP-intermedi sono il problema dell'isomorfismo dei grafici, il problema del taglio massimo e il problema della colorazione dei grafici.

La relazione tra i problemi NP-Completi e NP-Intermedi

La relazione tra i problemi NP-Completi e NP-Intermedi è che i primi consistono nei problemi più difficili di NP, mentre i secondi consistono nei problemi più difficili dei problemi NP-Completi per i quali è noto un algoritmo di tempo polinomiale. In altre parole, tutti i problemi NP-Completi sono NP-Intermedi, ma non tutti i problemi NP-Intermedi sono NP-Completi.

Problemi NP-Verificabili

I problemi NP-Verificabili sono un sottoinsieme dei problemi NP-Intermedi e sono i problemi NP più semplici per i quali è noto un algoritmo in tempo polinomiale. Esempi di problemi NP-Verificabili sono il problema dell'insieme dominante, il problema della copertura dei vertici e il problema del percorso più breve.

La relazione tra i problemi NP-Completi e NP-Verificabili

La relazione tra i problemi NP-Completi e NP-Verificabili è che i primi sono costituiti dai problemi più difficili in NP, mentre i secondi sono costituiti dai problemi NP più facili per i quali è noto un algoritmo in tempo polinomiale. In altre parole, tutti i problemi NP-Verificabili sono NP-Completi, ma non tutti i problemi NP-Completi sono NP-Verificabili.

FAQ
NP è un tempo polinomiale?

Sì, NP è un tempo polinomiale.

Perché si chiama tempo polinomiale non deterministico?

Il termine "tempo polinomiale non deterministico" (NP) si riferisce a una classe di problemi che possono essere risolti in tempo polinomiale utilizzando un algoritmo non deterministico. I problemi NP-completi sono un sottoinsieme di problemi NP particolarmente difficili da risolvere.

Gli scacchi sono NP-duri?

Sì, gli scacchi sono NP-hard. Esiste una riduzione da 3-SAT a scacchi, il che significa che qualsiasi istanza di 3-SAT può essere trasformata in un'istanza equivalente di scacchi. Ciò significa che se esistesse un algoritmo in tempo polinomiale per risolvere gli scacchi, potremmo usarlo per risolvere 3-SAT in tempo polinomiale, il che è impossibile.

Un NP-hard è verificabile in tempo polinomiale?

In informatica, il termine NP-hard descrive una classe di problemi difficili da risolvere. Molti di questi problemi sono anche difficili da verificare, il che significa che non è possibile controllare se una data soluzione è corretta in tempo polinomiale. Tuttavia, alcuni problemi NP-hard hanno soluzioni verificabili, cioè è possibile controllare se una data soluzione è corretta in tempo polinomiale.

Quale problema non può essere risolto in tempo polinomiale deterministico?

Ci sono molti problemi che non possono essere risolti in tempo polinomiale deterministico, tra cui il problema del commesso viaggiatore, il problema di knapsack e il problema della somma di sottoinsiemi. Questi problemi sono NP-hard, cioè non sono risolvibili in tempo polinomiale a meno che la gerarchia polinomiale non collassi.