2010-11-29 12 views
2

Zunächst einmal werde ich sagen, ich weiß nicht viel über Theorie und so. Aber ich fragte mich, ob das ein NP oder NP-vollständiges Problem war. Es klingt spezifisch wie ein spezieller Fall des Subset-Summenproblems.Ist das ein NP-Problem?

Wie auch immer, da ist dieses Spiel, das ich kürzlich gespielt habe, Alchemy genannt, was diesen Gedanken ausgelöst hat. Grundsätzlich beginnen Sie mit 4 Grundelementen und kombinieren diese zu anderen Elementen.

So zum Beispiel ist dies ein kurzes „Rezept“, wenn Sie werden für Elemente machen

 
fire=basic element 
water=basic element 
air=basic element 
earth=basic element 
sand=earth+earth 
glass=sand+fire 
energy=fire+air 
lightbulb=energy+glass 

ist so ein Computer sagt sie nur die vier Grundelemente schaffen könnte, aber es könnte mehrere Sätze von der erstellen Elemente. Sie schreiben also ein Programm, um ein beliebiges Element zu erstellen, indem Sie andere Elemente kombinieren. Wie würde dieses Programm die Liste bearbeiten, um eine Glühbirne zu erstellen?

Es ist eindeutig Feuer + Luft = Energie, Erde + Erde = Sand, Sand + Feuer = Glas, Energie + Glas = Glühbirne.

Aber ich kann mir keine Möglichkeit vorstellen, ein Programm zu schreiben, um eine Liste zu bearbeiten und das herauszufinden, ohne eine Brute-Force-Methode zu machen und jedes Element zu überprüfen und sein Rezept zu überprüfen.

Ist das ein NP-Problem? Oder kann ich das nicht herausfinden?

+1

Kann nicht hilfreich sein, aber das sieht wie ein Job für Prolog aus. –

+1

ist es in P und daher auch in NP. Es ist jedoch nicht NP-vollständig. – lijie

+0

Sie können eine Überprüfung dafür ziemlich einfach schreiben, also ist es in NP mindestens. –

Antwort

4

Wie würde dieses Programm die Liste bearbeiten die eine Glühbirne erstellen?

Sicher führen Sie nur die Definitionen rückwärts; z.B.

  1. eine Glühbirne zu erstellen benötigt man 1 Energie + 1 Glas
  2. eine Energie erzeugen erfordert 1 Feuer + 1 Luft

und so weiter. Dies ist effektiv ein einfacher Baumspaziergang.

OTOH, wenn Sie möchten, dass der Computer erkennt, dass Energie + Glas Glühbirne bedeutet (statt "Klecks geschmolzenes Glas"), haben Sie keine Chance, das Problem zu lösen. Du könntest wahrscheinlich 2 Spieler nicht dazu bringen, dass Energie + Glas = Glühbirne!

+0

ja, das macht eigentlich Sinn. Für deinen letzten Kommentar, im Spiel war es eigentlich Elektrizität + Glas, aber Elektrizität hatte eine lange Definition, also habe ich sie gekürzt. Ich denke, ich sah das Problem auf eine andere Art und Weise, die nicht so reversibel war, aber es nicht richtig formulierte. Jedenfalls ist das die richtige Antwort dafür, wie ich es formuliert habe – Earlz

3

Sie können Ihr Problem einfach als Diagramm modellieren und nach einer Lösung mit einem vollständigen Suchalgorithmus suchen. Wenn Sie keine Erfahrung haben, könnte es auch helfen, in automated planning zu suchen. Ich verlinke diesen Text, weil er auch eine Einführung in die Komplexität und Suchalgorithmen bietet.