Mein Lieblingsbeispiel für Nicht-CS-Freunde ist dieses:
Abraham, A. Blum, Sandholm. Clearing-Algorithmen für Tauschbörsenmärkte: Ermöglichen des landesweiten Nierenaustauschs. EC07.
Nierenaustauschmärkte sind im Wesentlichen eine eingeschränkte Form der Fahrradabdeckung. Ich mag dieses Beispiel, weil a) es einfach ist, das Wesentliche zu erklären (wenn Sie einige der technischeren Details weglassen) und b) es eines der wenigen Beispiele ist, von denen ich weiß, wo bessere Algorithmen buchstäblich Leben retten können!
Mein zweites Lieblingsbeispiel ist das Problem mit Krankenhäusern und Bewohnern (auch bekannt als College-Zulassungsproblem). In jedem Krankenhaus sind alle Bewohner (Medizinstudenten) und die Bewohner die Krankenhäuser. Jedes Krankenhaus hat eine bestimmte Anzahl von Slots. Von dort ist es ein stabiles Matching-Problem und kann in Polynomialzeit gelöst werden.
In Wirklichkeit können Paare gemeinsam in das System eintreten (ja, es gibt tatsächlich ein System ), so dass das System beispielsweise verheiratete Paare, die sich beide um einen Wohnsitz bewerben, nicht aufteilt. Das Hinzufügen von Paaren macht das Problem NP-vollständig. Dies ist nicht nur einfach zu erklären, sondern zeigt auch auf anschauliche Weise, wie die Einführung von Langstreckenverbindungen zur NP-Vollständigkeit führen kann.
Einige "alltägliche" Probleme, die NP-hart sind, angemessen formuliert:
Zuweisen von Universitätsklassen zu Zeitfenstern, um Zeitplankonflikte zu minimieren.
Zuweisen von Hochzeitsgästen zu Sitzplätzen, sodass Freunde am selben Tisch sitzen, Feinde jedoch nicht.
Planen Sie einen Roadtrip, um alle Sehenswürdigkeiten auf einer Liste zu besuchen, um das Fahren zu minimieren.
quelle
Das Problem der Handlungsreisenden ist anscheinend zugänglich ... zumindest scheint dies, wo ich bin, das mit Abstand beliebteste CS-Problem unter Nicht-CS-Leuten zu sein. Ich fand auch die folgende Abbildung von Vertex Cover sehr ansprechend, wie sie von meinem Algorithmus-Instruktor vorgestellt wurde:
Sie haben ein Straßennetz und möchten sicherstellen, dass sich an mindestens einem Ende der Straße eine Tankstelle befindet, wenn in einem Auto kein Kraftstoff mehr vorhanden ist.
Als Stadtplaner möchten Sie die Kosten minimieren, indem Sie möglichst wenige Tankstellen bauen. Dies ist im Wesentlichen das Vertex-Cover-Problem, und es ist mir gelungen, darauf hinzuweisen, dass Sie, obwohl Sie nicht damit rechnen, in der Polynomzeit die optimale Vertex-Cover-Funktion zu finden, in der Polynomzeit nur einen Faktor zwei finden können. indem Sie einfach beide Endpunkte einer maximalen Übereinstimmung auswählen (nun, dieses letzte Detail kann weggelassen werden, je nachdem, wie interessiert Ihre Zielgruppe ist - zumal der MM-Algorithmus nicht gerade ein Zwei-Zeilen-Algorithmus ist).
Als Beispiel für einen "Sprung in der Komplexität" mit einer kleinen Änderung in der Art des Problems halte ich den Unterschied zwischen der Überprüfung der Zweifarbigkeit und der Dreifarbigkeit für ein gutes Beispiel. Bei aller Publizität, die das Vierfarbensatz umgibt, könnte man auch darauf hinweisen, dass es schwierig ist, zu überprüfen, ob eine Karte mit nur drei statt vier Farben richtig eingefärbt werden kann, obwohl wir wissen, dass sie immer mit vier Farben eingefärbt werden kann. Eine ganze Reihe von Menschen findet das ziemlich verblüffend.
Eine andere ziemlich natürliche Situation ist das Deadlock-Wiederherstellungsproblem in Betriebssystemen. Dies wird durch das NP-vollständige Problem der Rückkopplungsscheitelpunktmenge modelliert - die kleinste Anzahl von Scheitelpunkten, deren Entfernung den Graphen azyklisch macht - und ich finde, dass dies auch ein bemerkenswertes Beispiel ist (und in diesem Wikipedia-Artikel weiter erläutert wird).
quelle
Ich denke, paralleles Parken ist NP-hart.
Tatsächlich ist das allgemeinere Problem, den kürzesten Weg mit begrenzter Krümmung zu finden, der ein polygonales Objekt von seiner Anfangsposition zu seiner Endposition in einer polygonalen Umgebung führt, NP-schwer. Der Beweis kann hier gefunden werden - http://portal.acm.org/citation.cfm?id=298976
quelle
Knapsack ist ziemlich leicht zu verstehen, besonders für alle, die sich mit einem kleinen Koffer befassen mussten. Ein schönes Beispiel, wenn sie sich mit dynamischer Programmierung auskennen.
Ein weiterer Spaß (praktisch identisch) ist die Teilmengen-Summe, da sie auch eine schöne physikalische Interpretation hat: Stellen Sie sich die Zahlen als die Abstände gleicher Punktmassen auf einem idealen (massenlosen) Lineal vor, wobei der Drehpunkt am Ursprung liegt. Teilmenge-Summe sagt: Gibt es eine nicht leere Teilmenge, so dass das Lineal ausgeglichen bleibt? (dh so, dass der Schwerpunkt der Stützpunkt für das Lineal ist?)
In beiden Fällen scheint es intuitiv zu sein, dass naive Strategien die Überprüfung aller Teilmengen erzwingen können.
Wenn sie mehr Hintergrundwissen haben, ist es schön, Probleme zu vergrößern, indem Sie Einschränkungen aufheben. Beginnen Sie beispielsweise mit einem Max-Flow-Problem, wandeln Sie es in ein lineares Programm um und machen Sie es zu einem ganzzahligen Programm. (Eine großartige ist natürlich MAX-CUT, da Sie für Leute mit mehr Hintergrund auch UGC aufrufen können. Einige davon spreche ich in einer MO-Antwort an: https://mathoverflow.net/questions/33036/is-quadratic-programming -still-np-hard-if-you-have-bounds-and-a-feasible-point / 33048 # 33048. ) Auch gibt es nette Dinge wie scheinbar ähnliche Probleme, deren Komplexität sehr unterschiedlich ist (Euler (Rand) Pfad ist linear Zeit ist der Hamilton-Pfad (Vertex-Pfad) NP-vollständig.
quelle
Die Kreuzworträtselkonstruktion ist NP-vollständig: Wenn Sie eine Reihe von Antworten gegeben haben, versuchen Sie, sie in ein Raster einzufügen.
quelle
Ich habe die Website Tagxedo, http://www.tagxedo.com, erstellt , einen Wortwolkengenerator, der Wörter (Größe nach Häufigkeit) in Form bringt . Die Ergebnisse sind sehr hübsch, aber das Problem ist leicht als NP-hart zu beweisen (Verpackungsproblem).
Interessanterweise haben viele NP-harte Probleme "einfache" Näherungen. Tagxedo scheint in vielen Fällen einen nahezu perfekten Job zu machen. Dies führt zu einer interessanten Diskussion über die praktische Implikation von P vs NP und das Thema der Approximation.
quelle
Einer meiner Freunde verbrachte ein Sabbatjahr damit, sich ein Baseballspiel in jedem wichtigen Ligastadion Nordamerikas anzuschauen. Ohne zu fliegen. (Es gelang ihm nicht ganz ; in diesem Jahr waren drei Stadien im Bau.)
quelle
Aufgrund des Erfolgs von Unternehmen wie Uber und Lyft haben viele Menschen eine sehr leicht zugängliche direkte Erfahrung mit NP-vollständigen Problemen.
Dieses Problem (wenn passend umformuliert) ist NPC und ich stelle mir vor, dass sich die Leute irgendwann gefragt haben, wie Uber sich entscheidet, Fahrer und Passagiere zu paaren.
quelle
Ich benutze normalerweise SAT als Beispiel. Ich sage so etwas wie "Alle möglichen Probleme, die ständig auftauchen, können so umgeschrieben werden, dass nach einer echten Zuordnung zu einer großen Logikformel gesucht wird. Die Frage von P vs NP ist, ob es einen grundlegend einfacheren Weg gibt, diese Logikformel zu lösen als nur alle Möglichkeiten ausprobiert. Bisher hat niemand einen Weg finden oder beweisen können, dass es keinen einfachen Ausweg gibt ".
quelle
Ein Np-vollständiges Problem wie Sudoku (auf nxn sqaure) ist wie ein universelles Tool, mit dem wir alle Probleme effizient lösen können, die effizient überprüfbare Lösungen haben. Die einzige Voraussetzung ist eine effiziente Methode, um Sudoku zu lösen.
quelle
Hoffe das hilft!
quelle
Ein wunderlich zugängliches Beispiel ist eine kurze Präsentation von Mark Dominus (siehe dazugehörigen Blog-Beitrag ) mit dem Titel „My Favourite NP-Complete Problem“. Das folgende Bild ist die Pointe einer Übersicht über die exakte Deckung durch 3 Sätze .
Zu den Titeln in der Videoserie gehören
Die klare Absicht war, dass jedes Video drei Folgen zu einem gemeinsamen Thema enthält, die aus einem Pool von Themen stammen, die für kleine Kinder von Interesse sind.
Die eine oder andere Ente in der Serie war ein Video über "Blumen, Bananen und ... Haare".
quelle
Besonders wenn man sich später das Knapsack-Problem anschaut, könnte dieses NP-vollständige Problem eine gute Lösung sein:
Zahlenraten, bei dem Sie nur einzelne Zahlen raten können, bis Sie es richtig verstanden haben.
quelle