实验一 真值计算
一、实验目的
熟悉联结词合取、析取、条件和双条件的概念,编程求其真值。 二、实验内容
从键盘输入两个命题P和Q的真值,求它们的合取、析取、条件和双条件的真值。用C语言或MATLAB实现。 三、实验报告要求
列出实验目的、实验内容、实验步骤、源程序和实验结果。
实验二 关系闭包计算
一、实验目的
熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法。 二、实验内容
从键盘输入一个关系的关系矩阵,计算其自反闭包、对称闭包和传递闭包,计算传递闭包时使用Warshall算法。用C语言或MATLAB实现。 三、实验报告要求
列出实验目的、实验内容、实验步骤、源程序和实验结果。
实验三 计算两结点间长度为m的路的数目
一、实验目的
熟悉邻接矩阵和两结点间长度为m的路的数目的关系并编程计算。 二、实验内容
从键盘输入图的邻接矩阵和一正整数m,计算结点两两之间长度为m的路的数目。考虑有向图和无向图。用C语言或MATLAB实现。 三、实验报告要求
列出实验目的、实验内容、实验步骤、源程序和实验结果。
实验四 最优树的构造
一、实验目的
熟悉最优树的构造算法,掌握最优树的构造过程。 二、实验内容
从键盘输入一组权值,构造出对应的最优树,列出构造过程。用C语言或MATLAB实现。 三、实验报告要求
列出实验目的、实验内容、实验步骤、源程序和实验结果。
部分参考答案: 实验二 C++源程序
#include
void set() {
cout<<\cin>>num;
cout<<\ int i,j;
for(i=0;i
for(i=0;i } friend void zifan(); friend void duichen(); friend void chuandi(); }; void zifan(guanxi ox) { int i,j; for(i=0;i } void duichen(guanxi ox) { for(j=0;j int i,j; for(i=0;i for(j=0;j for(i=0;i } for(j=0;j void chuandi(guanxi ox) { int i,j,k; for(i=0;i { guanxi o1; o1.set(); cout<<\它的自反闭包是:\ zifan(o1); cout<<\它的对称闭包是:\ duichen(o1); cout<<\它的传递闭包是:\chuandi(o1); } return 0; C源程序 #include int i,j,k,n; static int str[122],zifan[122],chuandi[122],duich[122]; printf(\scanf(\ printf(\ for(i=0;i } printf(\for(j=0;j printf(\if((j+1)%n==0) scanf(\ printf(\} for(j=0;j { zifan[j]=str[j]; chuandi[j]=str[j]; duich[j]=str[j]; } printf(\for(i=0;i if(i%(n+1)==0) zifan[i]=zifan[i]||1; printf(\if((i+1)%n==0) printf(\ printf(\ for(i=0,j=0;i } for(i=0;i printf(\if((i+1)%n==0) printf(\ } else if(i>=(j+1)*n) j++; duich[(i-j*(n+1))*(n-1)+i]=duich[(i-j*(n+1))*(n-1)+i]||duich[i]; printf(\ for(i=0;i if(chuandi[j*n+i]) {for(k=0;k chuandi[j*n+k]=chuandi[j*n+k]||chuandi[i*n+k]; } for(i=0;i #include ~luchang(); int input(); printf(\if((i+1)%n==0) printf(\} return 0;