Um Nicht-Mathematikern das P vs NP-Problem erklären zu können, hätte ich gerne ein pädagogisches Beispiel dafür, wann eine Brute-Force-Suche vermieden werden kann. Das Problem sollte im Idealfall sofort verständlich sein und der Trick sollte weder zu einfach noch zu schwer sein.
Das Beste, was ich mir bisher ausgedacht habe, ist
SUBSET_PRODUCT_IS_ZERO
Das Problem ist leicht zu verstehen (kann bei einer Menge von ganzen Zahlen eine Teilmenge mit Produkt 0 gebildet werden?), Aber der Trick ist zu einfach (prüfen Sie, ob 0 unter den angegebenen Zahlen ist, dh es ist nicht erforderlich, viele zu betrachten Teilmengen).
Irgendwelche Vorschläge?
Antworten:
Ich empfehle Jenga !
Angenommen, Sie haben zwei vollkommen logische, nüchterne und geschickte Spieler, dann ist Jenga ein Zwei-Spieler-Spiel mit perfekten Informationen, genau wie Checkers oder Go. Angenommen, das Spiel beginnt mit einem Stapel von Steinen mit 3 Steinen in jedem Level. Während des größten Teils des Spiels hat jeder Spieler in jeder Runde -Wahlen für den nächsten Zug, und wenn keine dummen Fehler vorliegen, liegt die Anzahl der Runden immer zwischen und . So grob hat der Spielbaum Zustände. Wenn Sie den Spielbaum mit brutaler Gewalt erkundet haben, verbringen Sie möglicherweise exponentielle Zeit damit, einen Gewinnzug zu finden oder sich selbst davon zu überzeugen, dass Sie nicht gewinnen können.Θ ( N ) N 6 N N Θ ( N )3N Θ(N) N 6N NΘ(N)
Tatsächlich hat Uri Zwick im Jahr 2005 bewiesen, dass Sie Jenga perfekt spielen können, indem Sie nur drei ganze Zahlen verfolgen und dabei einfache Regeln verwenden, die Sie problemlos auf eine Visitenkarte setzen können. Die drei Zahlen, die Sie brauchen, sind
Tatsächlich müssen Sie sich die meiste Zeit nur an und anstelle von und erinnern . Hier ist die komplette Gewinnstrategie:nmod3 mmod3 n m
Hier bedeutet II, dass Sie den mittleren Stein von einer beliebigen 3-Schicht nach oben verschieben sollten. II- bedeutet, dass Sie einen Seitenstein von einer 3-Schicht nach oben verschieben sollten. -I- bedeutet, dass Sie einen Seitenstein von einer 2-Schicht verschieben sollten nach oben, und das Bob-Omb bedeutet, dass Sie über den Tod nachdenken und traurig werden sollten . Wenn in einer Box mehr als ein Zug vorgeschlagen wird, können Sie einen beliebigen auswählen. Es ist trivial, diese Strategie in -Zeit auszuführen, wenn Sie das Tripel bereits kennen , oder in -Zeit, wenn Sie dies nicht tun.O(1) (m,n,t) O(N)
Moral: Jenga macht nur Spaß, wenn alle ungeschickt und / oder betrunken sind.
quelle
Ein Kassierer muss einem Kunden Cent Wechselgeld zurückgeben. Kann sie es angesichts der verfügbaren Münzen tun und wie?x
Es gibt zwei Varianten des Problems:
Die einfache Variante kann mit einem gierigen Algorithmus gelöst werden. Das Schwierigere erfordert eine dynamische Programmierung.
Der Weg, dies zu präsentieren, besteht darin, die Brute-Force-Lösung vorzuschlagen, die Leute zu verstehen, dass sie sehr ineffizient ist, und sie dann zu fragen, was Kassierer tun, zuerst für die einfache Variante, dann für die schwierige. Sie sollten einige Beispiele zur Verfügung haben, die von leicht bis böse gehen.
quelle
Ich denke, ich habe selbst ein nützliches Beispiel gefunden!
Vielleicht war ich etwas vage, aber ich suchte nach einem Problem, das die folgenden Spezifikationen erfüllte:
Für den Eulerschen Zyklus ist es leicht zu erklären, dass es eine notwendige Bedingung ist, dass jeder Knoten einen gleichmäßigen Grad haben muss, aber es ist nicht so einfach zu erklären, warum dies eine ausreichende Bedingung ist.
Dies ist das Problem, von dem ich denke, dass es die oben genannte Spezifikation am besten erfüllt:
FORM_TARGET_SET_WITH_UNIONS
Sammlung von MengenC={S1,S2,...,Sn}
ZielmengeT
Frage: Ist es möglich, die Zielmenge zu bilden, indem einige der Mengen in ?T C
Offensichtlicher, aber ineffektiver Algorithmus:
Besserer Algorithmus
Es gibt auch das Schwesterproblem
FORM_TARGET_SET_WITH_INTERSECTIONS
für die der bessere Algorithmus ist
Wie Sie sehen, habe ich nach etwas wirklich Einfachem gesucht (fast so einfach wie SUBSET_PRODUCT_IS_ZERO).
Das Problem kann auch mit SUBSET SUM und SUBSET PRODUCT verglichen werden, die NP-vollständig sind, aber in ihrer Formulierung ähnlich sind. Bei all diesen Problemen wird eine Sammlung von Objekten angezeigt und gefragt, ob eine Operation an einer Auswahl dieser Objekte zu einem gewünschten Ergebnis führen kann.
quelle