Was wäre der Ansatz für eine Art von Problem, die so klingt:
A sagt B liegt
B sagt C liegt
D sagt B liegt
C sagt B lügt
E sagt A und D liegen
Wie viele Lügen und wie viele sagen die Wahrheit? Ich suche nicht nach der Antwort auf das obige Problem, sondern nach dem Ansatz für diese Art von Problem. Vielen Dank.
Um Gleichungen der Form zu lösen
X 1 = NICHT X 3 =
X 5 = NICHT X 2
usw.
Bilden Sie einen Graphen mit Knoten als X i und verbinden Sie X und X
Versuchen Sie nun, das Diagramm mit der ersten Breitensuche zweifarbig zu zeichnen.
Angenommen, Sie wollen das mit einem Programm lösen ... es ist wirklich ziemlich einfach, Gewalt zu haben, wenn Sie einen ziemlich kleinen Eingabesatz haben. Zum Beispiel haben Sie in diesem Fall grundsätzlich 5 boolesche Variablen - ob jede Person eine Wahrsagerin ist oder nicht.
Kodieren Sie die Anweisungen als Tests und durchlaufen Sie dann alle möglichen Kombinationen, um zu sehen, welche gültig sind.
Dies ist offensichtlich eine "dumme" Lösung und wird bei großen Eingabesätzen fehlschlagen, aber es ist wahrscheinlich einfacher zu programmieren als eine vollständige "Argumentations" -Engine. Oft finde ich, dass Sie viel weniger Arbeit machen können, wenn Sie berücksichtigen, welche Größe des Problems Sie tatsächlich erleben werden:)
Verwenden Sie eine logische Programmiersprache wie Prolog. Sie sind speziell entwickelt, um solche Probleme zu lösen.
Andere Alternativen sind funktional-logische Sprachen und Modellprüfungen.