离散数学上机实验指导
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
离散数学上机实验指导
徐凤生
如果你需要索取源程序,请发邮件至xfs@。
实验1
1实验内容
(1)求任意一个命题公式的真值表。
(2)利用真值表求任意一个命题公式的主范式。
(3)利用真值表进行逻辑推理。
注:(2)和(3)可在(1)的基础上完成。
2实验目的
真值表是命题逻辑中的一个十分重要的概念,利用它几乎可以解决命题逻辑中的所有问题。例如,利用命题公式的真值表,可以判断命题公式的类型、求命题公式的主范式、判断两命题公式是否等价,还可以进行推理等。
本实验通过编写一个程序,让计算机给出命题公式的真值表,并在此基础上进行命题公式类型的判定、求命题公式的主范式等。目的是让学生更加深刻地理解真值表的概念,并掌握真值表的求解方法及其在解决命题逻辑中其他问题中的应用。
3算法的主要思想
利用计算机求命题公式真值表的关键是:①给出命题变元的每一组赋值;②计算命题公式在每一组赋值下的真值。
真值表中命题变元的取值具有如下规律:每列中0和1是交替出现的,且0和1连续出现的个数相同。n个命题变元的每组赋值的生成算法可基于这种思想。
含有n个命题变元的命题公式的真值的计算采用的方法为“算符优先法”。
为了程序实现的方便,约定命题变元只用一个字母表示,非、合取、析取、条件和双条件联结词分别用!、&、|、-、+来表示。
算符之间的优先关系如表1-32所示:
为实现算符优先算法,另一个称作OPND,用以寄存操作数或运算结果。算法的基本思想是:
(1)首先设置操作数栈为空栈,符号“@”为运算符的栈底元素;
(2)调用函数Divi(exp,myopnd)得到命题公式包含的命题变元序列myopnd(按字典序排列,同
一个命题变元只出现一次);
(3)依次读入命题公式中的每个字符,若是命题变元则其对应的赋值进OPND栈,若是运算符,则和OPTR栈的栈顶运算符比较后作相应操作,直至整个命题公式求值完毕。
实验2
1实验内容
(1)求任意两个集合的交集、并集、差集。
(2)求任意一个集合的幂集。
(3)求任意一个集合的所有m元子集。
(4)求任意个元素的全排列。
2实验目的
集合论是一切数学的基础,也是计算机科学不可或缺的,在数据结构、数据库理论、开关理论、自动机理论和可计算理论等领域都有广泛的应用。集合的运算规则是集合论中的重要内容。通过该组实验,目的是让学生更加深刻地理解集合的概念和性质,并掌握集合的运算规则等。
3算法的主要思想
集合的表示采用列举法,如A={a,b,c,d}。
(1)求任意两个集合的交集、并集、差集。
A∩B={x|x∈A∧x∈B}
A∪B={x|x∈A∨x∈B}
A-B={x|x∈A∧x∉B}
(2)求任意一个集合的幂集。
P(A)={A i|i∈J},其中J={i|i是二进制数且
48
47
6
Λ
|
|
000
A
≤i≤
8
7
6
Λ
|
|
1
111
A
}。
(3)求任意一个集合的所有m元子集。
按照(2)求出子集并判断是否符合要求。
(4)求任意个元素的全排列。
设S={1,2,3,…,n},(a1,a2,…,a n)和(b1,b2,…,b n)是S的两个全排列,若存在i∈{1,2,…,n},使得对一切j=1,2,…,i有a j=b j且a i+1
求一个排列(a1,a2,…,a n)的下一个排列的算法如下: