Was ist der Ansatz zur Lösung dieser Art von logischem Problem?

8

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.

    
DDD 14.05.2011, 08:21
quelle

4 Antworten

8
%Vor%

Erinnerung:

%Vor%

Verwandle die 5 Gleichungen in logische Aussagen, und du wirst Antworten finden.

    
Vincent 14.05.2011, 08:26
quelle
5

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 , wenn die Gleichung X gilt > = NICHT X j erscheint.

Versuchen Sie nun, das Diagramm mit der ersten Breitensuche zweifarbig zu zeichnen.

    
Aryabhatta 14.05.2011 08:41
quelle
4

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:)

    
Jon Skeet 14.05.2011 08:28
quelle
0

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.

    
Robin Green 14.05.2011 08:24
quelle

Tags und Links