作者aletheia (cOnJeCTuRe)
看板logic
标题Re: [请益] 逻辑句子的表达
时间Sun Oct 12 03:06:40 2008
※ 引述《ht4300 (低调)》之铭言:
: 请问各位大大
: 我在书上看到一题
: 只有硕士生可以修所有的研究所课程
: 而不用先修过任何的大学课程
: 这句话要怎麽表达
: 想了半天想不出来
: 我先设
: x 是学生
这边这样写不好 x是变数(项)
你要写成 S={x:x is 学生}
: M(x) x 是硕士生
: y 是课程
这边雷同
: G(y) 是 y 是研究所的课
: T(x,y) 是 x 有修过 y 课
: U(y) 是 y 是大学部的课
: 之後就不知道怎麽组合起来
: 请大家帮帮忙
除了你设定的外 我多加点东西
Pxy x可以修y
C={z:z is 课程}
如果你不习惯集合的写法的话 或者像我一样集合学得很烂的话
可以用
Sx x是学生
Cy y是课程
来写句子 这样就不用对x,y,z多作交代了
原句子可以改写变成
"对所有的学生来说,如果所有研究所的课程,x都能修,
而且没有一个z,z是大学部课程,并且x没修z会导致他不可以修y,那麽x是硕士生。"
那答案就是
for all x (for all y((Gy-->Pxy) and not-exsit z ((Uz and not-Txz)
-->
not-Pxy))-->Mx)
上面的黄色箭号也可以用双箭号
请参考看看
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.201.196
※ 编辑: aletheia 来自: 220.134.201.196 (10/12 03:19)
※ 编辑: aletheia 来自: 220.134.201.196 (10/12 04:20)
※ 编辑: aletheia 来自: 220.134.201.196 (10/12 04:26)
※ 编辑: aletheia 来自: 220.134.201.196 (10/12 04:41)