离散实验Word格式文档下载.docx

上传人:b****2 文档编号:15188902 上传时间:2022-10-28 格式:DOCX 页数:15 大小:80.56KB
下载 相关 举报
离散实验Word格式文档下载.docx_第1页
第1页 / 共15页
离散实验Word格式文档下载.docx_第2页
第2页 / 共15页
离散实验Word格式文档下载.docx_第3页
第3页 / 共15页
离散实验Word格式文档下载.docx_第4页
第4页 / 共15页
离散实验Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

离散实验Word格式文档下载.docx

《离散实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《离散实验Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

离散实验Word格式文档下载.docx

输入两个数p,q"

);

scanf("

%d,%d"

&

p,&

q);

if(p==F&

q==F)

a=F,b=F,c=T,d=T;

elseif(p==F,q==T)

a=F,b=T,c=T,d=F;

elseif(p==T,q==F)

a=F,b=T,c=F,d=F;

elseif(p==T,q==T)

a=T,b=T,c=T,d=T;

else

wrong"

printf("

a合取=%d\nb析取=%d\nc条件=%d\nd双条件=%d\n"

a,b,c,d);

}

五、运行结果

实验二关系闭包计算

熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法。

从键盘输入一个关系的关系矩阵,计算其自反闭包、对称闭包和传递闭包,计算传递闭包时使用Warshall算法。

1根据要求用C语言进行编程。

#include<

iostream>

usingnamespacestd;

intmain()

constn=4;

intp[n][n]={0},q[n][n]={0},w[n][n]={0},m[n][n]={0};

inta=0;

for(inti=0;

i<

n;

i++)

for(intj=0;

j<

j++)

{

cin>

>

a;

p[i][j]=a;

q[i][j]=a;

w[i][j]=a;

m[i][j]=a;

}

}

intfan[n][n]={0};

cout<

<

"

zifanbibao:

endl;

//自反闭包

for(inti1=0;

i1<

i1++)

{

for(intj1=0;

j1<

j1++)

{if(p[i1][j1]==0)

fan[i1][j1]=1;

elsefan[i1][j1]=0;

for(inti2=0;

i2<

i2++)//输出

for(intj2=0;

j2<

j2++)

cout<

fan[i2][j2]<

"

;

cout<

intdui[n][n]={0};

//对称闭包

duichenbibao:

for(inti3=0;

i3<

i3++)

for(intj3=0;

j3<

j3++)

dui[i3][j3]=p[j3][i3];

for(inti4=0;

i4<

i4++)//输出

for(intj4=0;

j4<

j4++)

dui[i4][j4]<

intchuan1[n][n]={0};

//warshall算法

chuandi1bibao:

for(intu=0;

u<

u++)

for(intf=0;

f<

f++)

chuan1[u][f]=p[u][f];

for(inti5=0;

i5<

i5++)

for(intj5=0;

j5<

j5++)

if(chuan1[j5][i5]==1)

for(intk=0;

k<

k++)

chuan1[j5][k]=chuan1[j5][k]||chuan1[i5][k];

for(inti6=0;

i6<

i6++)//输出

for(intj6=0;

j6<

j6++)

chuan1[i6][j6]<

intchuan2[n][n]={0};

//r+算法

chuandi2bibao:

for(intt=0;

t<

=n-2;

t++)

for(inti8=0;

i8<

i8++)

for(intj8=0;

j8<

j8++)

{chuan2[i8][j8]=0;

for(ints=0;

s<

s++)

chuan2[i8][j8]=chuan2[i8][j8]||(q[i8][s]*m[s][j8]);

for(inti=0;

for(intj=0;

{w[i][j]=w[i][j]||chuan2[i][j];

q[i][j]=chuan2[i][j];

for(inti7=0;

i7<

i7++)//输出

for(intj7=0;

j7<

j7++)

{if(w[j7][i7]!

=0)

chuan2[i7][j7]=1;

elsechuan2[i7][j7]=0;

cout<

chuan2[i7][j7]<

return0;

五、运行结果

实验三计算两结点间长度为m的路的数目 

熟悉邻接矩阵和两结点间长度为m的路的数目的关系并编程计算。

从键盘输入图的邻接矩阵和一正整数m,计算结点两两之间长度为m的路的数目。

考虑有向图和无向图。

用C语言实现。

实现可达性矩阵。

四、实验程序:

voidmain(void)

{

intx[10][10],r[10][10],q[10][10],l[10][10];

intp,m,n,i,j,k,g,h;

输入图的邻接矩阵的维数:

%d"

n);

输入结点两两长度m:

m);

输入图的邻接矩阵:

\n"

for(i=0;

for(j=0;

{

scanf("

x[i][j]);

r[i][j]=x[i][j];

}

for(p=1;

p<

m;

p++)

{

{

q[i][j]=0;

for(k=0;

k++)

q[i][j]+=x[i][k]*r[k][j];

l[i][j]=q[i][j];

}

for(g=0;

g<

g++)

{

for(h=0;

h<

h++)

r[g][h]=l[g][h];

}

结点之间两两长度为%d的路的数目矩阵如下:

m);

%d"

l[i][j]);

此图的可达性矩阵为:

for(i=0;

for(j=0;

{

r[i][j]=x[i][j];

q[i][j]=x[i][j];

for(p=0;

for(m=0;

m<

m++)

r[i][j]+=x[i][m]*r[m][j];

q[i][j]+=r[i][j];

if(q[i][j]>

0)

q[i][j]=1;

q[i][j]);

五、实验结果

实验四最优树的构造

熟悉最优树的构造算法,掌握最优树的构造过程。

从键盘输入一组权值,构造出对应的最优树,列出构造过程。

四、实验程序

intv,e,i,j,m,p,q,a,b,number=0;

intx[20][20],E[20],E1[20],row[20];

请输入树的结点数:

V="

v);

请输入树的边数:

E="

e);

请输入边e1-e%d权值:

e);

e;

scanf("

E[i]);

E1[i]=E[i];

//将边存储起来,便于之后排列边与结点的相互对应关系

row[i]=0;

请输入图的完全关联矩阵:

for(i=1;

=e;

e%d"

i);

=v;

printf("

v%d"

x[i-1][j]);

for(j=i+1;

if(E[i]>

E[j])

a=E[i];

//冒泡法排列权值

E[i]=E[j];

E[j]=a;

for(m=0;

v;

m++)//冒泡法排列整个完全关联矩阵

{

b=x[m][i];

x[m][i]=x[m][j];

x[m][j]=b;

}

按权值大小排列为:

%d"

E[i]);

i++)//记录每条边,调整边与结点的相对位置

if(E[i]==E1[j

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1