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:
- Das Problem selbst sollte für jemanden, der Sozialwissenschaften studiert, leicht zu erklären sein.
- Es sollte einen offensichtlichen, aber ineffektiven Algorithmus haben.
- Es sollte einen besseren Algorithmus haben, der auch für jemanden, der Sozialwissenschaften studiert, leicht zu erklären ist.
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 ?TC
Offensichtlicher, aber ineffektiver Algorithmus:
- Bilden Sie alle möglichen Gewerkschaften2n
- Überprüfen Sie, ob einer von ihnenT
Besserer Algorithmus
- Markieren Sie die Mengen in , die inCT
- Bilden Sie die Vereinigung dieser MengenS∪
- Wennantworte mit , sonst mit|S∪|=|T|YESNO
Es gibt auch das Schwesterproblem
FORM_TARGET_SET_WITH_INTERSECTIONS
für die der bessere Algorithmus ist
- Markieren Sie die Mengen in , die enthaltenCT
- Bilden Sie den Schnittpunkt dieser MengenS∩
- Wennantworte mit , sonst mit|S∩|=|T|YESNO
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.