【論理】Prolog【初心者】

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2010/11/06(土) 13:00:56
Prolog初心者のスレ

これは良い言語だ…
2021/12/04(土) 06:16:48.61ID:CAsz35to
>>962
実装選ぶ必要ありますか?どれでも可能?
2021/12/04(土) 07:37:52.32ID:RAd/NC6B
よく分からんけど高階論理は不要で、制約論理で解けるんじゃないか
https://www.swi-prolog.org/pldoc/man?section=clpb

Aの発言は Aが真ならDは偽、Aが偽ならDは真という制約になり、これは A=:=(~D) と表せる
Bの発言は B=:=(A+D)、Cの発言は C=:=B、Dの発言は D=:=D と表せる
まとめると ?- sat((A=:=(~D)) * (B=:=(A+D)) * (C=:=B) * (D=:=D)). となり答は
B = C, C = 1, sat(A=\=D). となる
これはBとCは正直、AとDのうち一人は正直でもう一人は嘘つきだけどどちらが嘘つきかは分からないということ
2021/12/04(土) 23:56:43.15ID:CAsz35to
ありがとうございます
文章題からこの制約を書き下せる自信がない…(|||´Д`)
966964
垢版 |
2021/12/06(月) 19:23:33.90ID:JCSphZpm
>>965
正直者は必ず本当のことを言い、うそつきは必ずうそをつくという条件があるので
Aが正直者であるかどうかとAが言っていることが正しいかどうかの真偽は同じになるということで、それを制約論理の式で表すだけ
A=:=(~D)は、A(Aが正直者であること)と(~D)(Aの発言内容「Dは嘘つきだ」)の真偽が一致している(=:=)ということ
Aが真なら(~D)も真だし、Aが偽なら(~D)も偽
他の3人についても同様
これをリンク先にある制約論理で表す
0   偽
1   真
~P   not P
P*Q  P and Q
P+Q  P or Q
P=<Q  PならばQ
P=:=Q  PとQの真偽は同じ
P=\=Q  PとQの真偽は異なる
967964
垢版 |
2021/12/06(月) 19:33:58.30ID:JCSphZpm
制約論理を使わない(使えない)場合はどうしたらいいんだろ
d:-d.なんて書いても無限ループになるだけだし
2022/11/14(月) 14:12:20.00ID:i6KxBWUg
>>961-967
こういうのとか

s(A,B,C,D) :-
( A=true; A=false),
( B=true; B=false),
( C=true; C=false),
( D=true; D=false),
( A=true -> D=false ; true),
( A=false -> D=true ; true),
( B=true -> (A=true ; D=true); true) ,
( B=false -> A=false,D=false ; true),
C=B.

考え方は>>966と同じ
>正直者は必ず本当のことを言い、うそつきは必ずうそをつくという条件があるので
>Aが正直者であるかどうかとAが言っていることが正しいかどうかの真偽は同じになる

SWI-Prologで実行したら解は2つ

A = B, B = C, C = true, D = false
A,B,Cが正直者でDが嘘つき

A = false, B = C, C = D, D = true
Aが嘘つきでB,C,Dが正直者

これと同じだな
>これはBとCは正直、AとDのうち一人は正直でもう一人は嘘つきだけど
>どちらが嘘つきかは分からない
2022/11/15(火) 01:18:50.21ID:26oE0jcj
>>968
変えてみた

s2(A,B,C,D) :-
( A=true; A=false),
( B=true; B=false),
( C=true; C=false),
( D=true; D=false),
( A -> D=false ; D=true),
( B -> (A=true ; D=true) ; A=false,D=false),
C=B.
2022/11/15(火) 01:39:59.69ID:26oE0jcj
>>969
変えてみた

s3(A,B,C,D) :-
Boolean=[true,false],
( member(A, Boolean)),
( member(B, Boolean)),
( member(C, Boolean)),
( member(D, Boolean)),
( A -> D=false ; D=true),
( B -> (A=true ; D=true) ; A=false,D=false),
C=B.
2022/11/16(水) 07:59:27.34ID:KZpN7KA1
>>961
R. Smullyanのto mock a mocking birdの前編はこういう問題の宝庫でおすすめ
多分最も影響力のある論理学の啓蒙書だから釈迦に説法かもしれんが

公務員試験でもあるな、これくらいなら表書けば解ける、多分
2022/11/16(水) 09:10:20.86ID:CQNdPPMd
表を書いてみる

s4 :-
writeln("A B C D"),
writeln(""),
Boolean=[true,false],
forall(
( ( member(A,Boolean)),
( member(B,Boolean)),
( member(C,Boolean)),
( member(D,Boolean))),
( ( A->write("T ");write("F ")),
( B->write("T ");write("F ")),
( C->write("T ");write("F ")),
( D->write("T ");write("F ")),
( ( A -> D=false ; D=true),
( B -> (A=true ; D=true) ; A=false,D=false),
C=B
-> writeln("○")
; writeln("×")))).
2023/04/28(金) 14:17:28.49ID:8wk3+eV/
2023/04/28(金) 14:18:28.04ID:8wk3+eV/
こんばんは
2023/04/28(金) 14:18:45.43ID:8wk3+eV/
サイフォン
2023/04/28(金) 14:19:22.07ID:8wk3+eV/
てえすと
2023/04/28(金) 14:19:35.56ID:8wk3+eV/
究極のテスト
2023/04/28(金) 14:19:58.05ID:8wk3+eV/
2023/04/28(金) 14:20:16.76ID:8wk3+eV/
。?
2023/04/28(金) 14:20:31.31ID:8wk3+eV/
マルチメディアってわけですね
2023/04/28(金) 14:21:01.39ID:8wk3+eV/
え?
2023/04/28(金) 14:21:07.70ID:8wk3+eV/
マジなのか?
2023/04/28(金) 14:43:40.60ID:8wk3+eV/
めすや
2023/04/28(金) 14:43:49.65ID:8wk3+eV/
ファイト
2023/04/28(金) 15:28:13.87ID:8wk3+eV/
2023/04/28(金) 15:28:19.38ID:8wk3+eV/
ルンバ
2023/04/28(金) 16:33:24.56ID:1++JLEfi
てすや
2023/04/28(金) 16:33:30.09ID:1++JLEfi
マジで
2023/04/28(金) 20:43:36.57ID:tkMERdaz
アドバンス
2023/04/28(金) 20:56:50.79ID:tkMERdaz
テスト
2023/04/28(金) 20:57:07.91ID:tkMERdaz
2023/04/28(金) 20:57:43.18ID:tkMERdaz
田中
2023/04/28(金) 20:58:09.56ID:tkMERdaz
この頃
2023/04/28(金) 20:58:39.01ID:tkMERdaz
こんばんは
2023/04/28(金) 20:59:00.21ID:tkMERdaz
商店街
2023/04/28(金) 20:59:20.67ID:tkMERdaz
。、
2023/04/28(金) 20:59:45.91ID:tkMERdaz
コンフィデンス
2023/04/28(金) 21:00:11.27ID:tkMERdaz
ごフレ
2023/04/28(金) 21:00:17.86ID:tkMERdaz
2023/04/28(金) 21:00:52.22ID:tkMERdaz
にたな
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 4556日 7時間 59分 56秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況