Incontri quotidiani con problemi NP-completi


Risposte:


24

Il mio esempio preferito da usare con amici non CS è questo:

Abraham, A. Blum, Sandholm. Chiarimento degli algoritmi per i mercati degli scambi di baratto: consentire scambi di rene a livello nazionale. EC07.

I mercati dei cambi renali sono essenzialmente una forma limitata di copertura ciclica. Mi piace questo esempio perché a) è facile spiegare l'essenza (se si tralasciano alcuni dei dettagli più tecnici) eb) è uno dei pochi casi che conosco in cui algoritmi migliori possono letteralmente salvare vite umane!

Il mio secondo esempio preferito è il problema degli ospedali e dei residenti (alias il problema delle ammissioni al college). Ogni ospedale classifica tutti i residenti (studenti laureati in medicina) e i residenti classificano gli ospedali. Ogni ospedale ha un certo numero di slot. Da lì c'è un problema di abbinamento stabile e può essere risolto in tempi polinomiali.

Ma in realtà, le coppie possono entrare nel sistema (sì, esiste davvero un sistema ) insieme, in modo che il sistema non divida, ad esempio, le coppie sposate che chiedono entrambi la residenza. L'aggiunta di coppie rende completo il problema NP. Oltre ad essere facile da spiegare, questo dimostra bene come l'introduzione di connessioni a lungo raggio può indurre completezza NP.


1
Ottimo esempio! David Manlove ha lavorato ampiamente su questo tipo di problemi (sia di scambio che di corrispondenza); i sistemi vengono utilizzati nel Regno Unito e in Ungheria. dcs.gla.ac.uk/~davidm/publications.html Per quanto ne so, questi approcci superano gli algoritmi NRMP e l'algoritmo di approssimazione 3/2 di Eric McDermid è il più noto. dx.doi.org/10.1007/978-3-642-02927-1_57
András Salamon

13

Alcuni problemi "ogni giorno" che sono NP-difficili, opportunamente formulati:

  • Assegnare classi universitarie a intervalli di tempo per ridurre al minimo i conflitti di pianificazione.

  • Assegnare gli invitati al matrimonio in modo che gli amici siedano allo stesso tavolo, ma i nemici no.

  • Pianificare un viaggio per visitare tutti i luoghi turistici in un elenco, in modo da ridurre al minimo la guida.


12

Il problema del commesso viaggiatore è apparentemente accessibile ... almeno dove sono io, questo sembra essere il problema CS più popolare tra le persone non CS. Ho anche trovato interessante la seguente illustrazione di Vertex Cover, introdotta dal mio istruttore di algoritmi:

Hai una rete stradale e desideri assicurarti che se un'auto è bloccata dal carburante, ci sia una stazione di servizio su almeno un'estremità della strada.

Come urbanista, vuoi ridurre al minimo i costi costruendo il minor numero possibile di stazioni di servizio. Questo è essenzialmente il problema della copertura dei vertici e ho riscontrato un certo successo nel sottolineare che, sebbene non ti aspetti di trovare la copertura ottimale dei vertici nel tempo polinomiale, puoi trovare qualcosa che è solo un fattore due nel tempo polinomiale, semplicemente raccogliendo entrambi gli endpoint di una corrispondenza massima (beh, quell'ultimo dettaglio potrebbe essere omesso a seconda di quanto sia appassionato il tuo pubblico, soprattutto perché l'algoritmo MM non è esattamente un due-liner).

Per quanto riguarda un esempio di "salto di complessità" con un piccolo cambiamento nella natura del problema, penso che la differenza tra il controllo della 2-colorabilità e la 3-colorabilità sia un buon esempio. Con tutta la pubblicità che circonda il teorema dei quattro colori, si potrebbe anche sottolineare che è difficile controllare se una mappa può essere adeguatamente colorata con solo tre colori anziché quattro, anche se sappiamo che può sempre essere colorata con quattro colori. Un discreto numero di persone lo trova abbastanza sorprendente.

Un'altra situazione abbastanza naturale è il problema del ripristino dei deadlock nei sistemi operativi. Questo è modellato dal problema NP completo del set di vertici di feedback - il numero più piccolo di vertici la cui rimozione rende aciclico il grafico - e trovo che questo sia anche un esempio notevole (e viene spiegato ulteriormente in quell'articolo di Wikipedia).


3
Una corrispondenza massima è sufficiente per un'approssimazione di due, che è molto più facile da calcolare e spiegare.
Warren Schudy,

1
@Warren: Grazie per averlo sottolineato, ovviamente hai ragione!
Neeldhara,

8

Penso che il parcheggio parallelo sia NP-difficile.

In effetti, il problema più generale di trovare il percorso più breve con curvatura limitata che porta un oggetto poligonale dalla sua posizione iniziale alla sua posizione finale in un ambiente poligonale è NP-difficile. La prova è disponibile qui: http://portal.acm.org/citation.cfm?id=298976


7

Lo zaino è abbastanza facile da capire, specialmente per chiunque abbia avuto a che fare con una piccola valigia ... un bell'esempio se conoscono la programmazione dinamica.

Un altro divertente (praticamente identico) è il Somma-sottoinsieme, perché ha anche una bella interpretazione fisica: immagina che i numeri siano le distanze di uguali masse punti su un righello ideale (senza massa), con il fulcro all'origine. La sotto-somma dice: esiste un sottoinsieme non vuoto in modo tale che il righello rimanga equilibrato? (cioè, tale che il baricentro è il punto di supporto per il sovrano?)

In entrambi i casi, sembra intuitivo che strategie ingenue possano forzare il ricorso al controllo di tutti i sottoinsiemi.

Se hanno più background, è bello far crescere i problemi eliminando i vincoli. Ad esempio, a partire da un problema di flusso massimo, trasformandolo in un programma lineare e rendendolo un programma intero. (Un grande ovviamente è MAX-CUT, poiché per le persone con più background puoi anche far apparire UGC; ne tocco un po 'in una risposta MO https://mathoverflow.net/questions/33036/is-quadratic-programming -still-np-hard-if-you-have-bounds-and-fattibile point / 33048 # 33048. ) Inoltre ci sono cose ordinate come problemi apparentemente simili che hanno una complessità molto diversa (il percorso di Euler (bordo) è lineare tempo, il percorso Hamiltoniano (vertice) è NP-completo).


7
Mi piace la seguente versione di Subset Sum: ti vengono dati £ 10 per acquistare snack da un negozio. Riesci a trovare esattamente la giusta combinazione di acquisti in modo che non rimanga denaro?
András Salamon,

6

La costruzione del cruciverba è NP-Complete: data una serie di risposte, prova a inserirle in una griglia.


5

Ho creato il sito Web Tagxedo, http://www.tagxedo.com , un generatore di nuvole di parole che adatta le parole (dimensionate in base alle loro frequenze) in forma. I risultati sono molto belli, ma il problema è facilmente dimostrato di essere NP-difficile (problema di imballaggio).

È interessante notare che molti problemi NP-difficili hanno approssimazioni "facili". Tagxedo sembra fare un lavoro quasi perfetto in molti casi. Ciò porta a interessanti discussioni sull'implicazione pratica di P vs NP e sul tema dell'approssimazione.


4

Uno dei miei amici ha trascorso un anno sabbatico a guardare una partita di baseball in tutti gli stadi della maggiore lega del Nord America. Senza volare. (Non ci riuscì del tutto ; tre stadi erano in costruzione quell'anno.)


sì, ma stava cercando di ridurre al minimo il consumo di gas? :)
Suresh Venkat,

Anche trovare un programma fattibile era NP-difficile, perché gli stadi non sono aperti tutti i giorni (ciclo hamiltoniano con finestre temporali).
Jeffε,

4

Grazie al successo di aziende come Uber e Lyft, molte persone hanno un'esperienza diretta molto accessibile con problemi NP-completi.

Data una raccolta di conducenti e un elenco di persone che desiderano essere prelevati in vari momenti, qual è l'allocazione più efficiente dei passeggeri ai conducenti?

Questo problema (se opportunamente riformulato) è NPC e immagino che le persone ad un certo punto si siano chieste come Uber decida di accoppiare guidatori e passeggeri.


3

Di solito uso SAT come esempio. Dico qualcosa come "tutti i tipi di problemi che sorgono continuamente possono essere riscritti come alla ricerca di un vero incarico a una grande formula logica. La domanda P vs NP è se esiste un modo fondamentalmente più semplice per risolvere questa formula logica che solo provare tutte le possibilità. Finora nessuno è stato in grado di trovare un modo o dimostrare che non esiste una via d'uscita facile ".


2
Non sono sicuro di quante persone lo incontrino ogni giorno.
Dave Clarke,

3

Un problema Np-completo come Sudoku (su nxn sqaure) è come uno strumento universale che ci consente di risolvere in modo efficiente tutti i problemi che hanno soluzioni verificabili in modo efficiente. L'unico requisito è disporre di un metodo efficiente per risolvere il Sudoku.


2

NP

npjmNPpjkNP-completo in questa situazione. Osserva che non è necessario che siano blocchi a condizione che non si possa rovesciare. Potrebbe essere pile di fogli, casse o piatti.

Spero che sia di aiuto!


2

Un esempio accessibile in modo stravagante è una breve presentazione di Mark Dominus (vedi il relativo post sul blog ) chiamato "My Favorite NP-Complete Problem" in cui l'immagine sotto è la battuta finale di una panoramica della copertina esatta di 3 serie .

I titoli della serie video includono

  • Danza, musica e libri
  • Mani, orecchie e piedi
  • Svegliati con Elmo (per dormire, vestirti e lavarti i denti)
  • Persone nel tuo quartiere (su pompieri, bagnini e infermieri)

L'intento chiaro era che ogni video contenesse tre episodi tutti su un tema comune tratto da un pool di argomenti di interesse per i bambini piccoli.

La strana anatra della serie era un video su "fiori, banane e ... capelli".

Fiori, banane e ... capelli.


0

Soprattutto quando si guarda più avanti al problema dello zaino, questo problema NP completo potrebbe essere una buona soluzione:

Indovina il numero, dove puoi indovinare solo numeri singoli fino a quando non hai capito bene.

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.