Problema NP difficile

Un problema si dice NP-difficile (NP-hard) quando è tanto difficile quanto i problemi più difficili in NP, ma non è necessario che esista un algoritmo in grado di verificare una soluzione in tempo polinomiale.

Questo vuol dire che l'insieme dei problemi NP difficili è più esteso della classe NP.

La classe NP comprende problemi per i quali le soluzioni possono essere verificate in tempo polinomiale.

I problemi NP-difficili, invece, includono qualsiasi problema tanto difficile quanto i problemi più complessi in NP, indipendentemente dal fatto che le soluzioni possano o meno essere verificate in tempo polinomiale.

    Esempio

    Un esempio classico di problema NP-difficile è il problema dell'arresto.

    Questo problema chiede se, dato un programma informatico e un input per quel programma, il programma terminerà (si arresterà) o continuerà a girare all'infinito.

    In altre parole, ci si domanda se fosse possibile costruire un algoritmo che possa determinare per ogni possibile programma e input se il programma si fermerà o meno.

    Questo problema è NP-difficile perché se avessimo un modo per risolverlo in generale, potremmo risolvere qualsiasi altro problema in NP semplicemente costruendo un programma che cerca tutte le possibili soluzioni e si ferma solo quando ne trova una valida.

    Tuttavia, il problema dell'arresto è noto per essere indecidibile perché non esiste un algoritmo che può risolverlo per ogni possibile programma e input.

    Inoltre, il problema dell'arresto non ha soluzioni verificabili in tempo polinomiale, quindi è al di fuori della classe NP.

     

     
     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin

    Teoria della complessità