关于离散数学的编程问题(数理逻辑部分)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于离散数学的编程问题(数理逻辑部分)相关的知识,希望对你有一定的参考价值。

从下列五个题目中任意选择一个。
用C/C++、Java Applet/javascript或Prolog编程实现。

1.1 有人邀请A,B,C,D,E,F6个人参加一项会议。已知:
1. A,B两人至少有1人参加会议。
2. A,E,F3人中有2人参加会议。
3. B和C两人决定,要么两人都去,要么两人都不去。
4. A,D两人中只1人参加会议。
5. C,D两人中也只要1人参加会议。
6.如果D不去,那么E也决定不去。
那么最后究竟有哪几个人参加了会议呢?

1.2 符号化下列命题:
1. 营业员A或B偷了手表;
2. 若A作案,则作案不在营业时间;
3. 若B提供的证据正确,则货柜末上锁;
4. 若B提供的证据不正确,则作案发生在营业时间;
5. 货柜上了锁。
试用逻辑推理确定谁是作案者,并写出推理过程。

1.3 命题公式赋值计算器。
设计一个计算器程序,实现自动计算命题逻辑公式的真值。要求:
1. 实现键盘或鼠标点击对命题逻辑公式的输入
2. 输入一组赋值,规定只能输入0或1
3. 自动计算后得出命题逻辑公式的真值

1.4 真值表与范式的自动生成
1. 实验目的
(1) 掌握真值表的自动生成
(2) 掌握范式的自动生成
2. 实验内容
(a) 输入一个合法的命题公式,只有三个运算符,即与用&表示,或用|表示,非用!表示,条件与双条件暂不出现。
(b) 系统自动确定公式中命题变元的个数与名称。
(c) 系统自动在屏幕上显示真值表。
(d) 系统自动给出极小项的析取范式即主析取范式。
(e) 极大项的合取式范式即主合取范式。

1.5 判断命题公式的合法性
1. 实验目的
(1) 掌握命题公式的合法性检测,为编译原理的学习打下基础
(2) 掌握递归程序设计的方法
2. 实验内容
(a) 输入一个字符串,合法字符是:小写字母表示命题变元、半角的()表示园括号,&表示“与”、|表示“或”、!表示“非”、-表示“条件”、=表示“双条件”,其他符号为非法字符,但是都可能出现在该字符串中。
(b)系统自动判断是否存在非法字符。
(c)系统自动判断园括号是否成对出现。
(d)系统自动判断最里层园括号(若存在最里层园括号)的表达式是否合法,即是否为单个命题变元即单个小写字母、是否为合法公式的非、与、或、条件、双条件,若是合法子公式的则用特殊符号*代替。
各位高手帮帮忙咯···十分感谢!!!

主要是要把合式公式抽象出来,然后用穷举法每个赋值去试,如果合式公式为真值,这个赋值就满足条件。 参考技术A 我用javacript把第一个做出来了,贴到我的空间里了
http://hi.baidu.com/shibao514/blog/item/1d55bedecbef925994ee3716.html

以上是关于关于离散数学的编程问题(数理逻辑部分)的主要内容,如果未能解决你的问题,请参考以下文章

离散数学--2.4 命题逻辑推理理论

离散数学 第一章 逻辑符号意义

南航计算机科学与技术专业复试科目541离散数学和编译原理

离散数学期末不挂科复习笔记

离散数学期末不挂科复习笔记

[离散数学] 数理逻辑基础