- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机求解关系R的传递闭包
《应用程序设计
课程设计》报告
班 级:
学 号:
姓 名:
指导教师:
成绩评定:
计算机求解关系R的传递闭包设计方案简介
设计方案简介
① 在集合X上的二元关系R的传递闭包是包含R的X上的最小的传递关系R的传递闭包数字图像处理图像和视觉基础一般用B表示定义在具有n个元素集合X上关系R的n×n二值矩阵,则传递闭包的矩阵B+可如下计算:???? B+ = B + B + B3 + ……+ (B)n ② 式中矩阵运算时所有乘法都用逻辑与代替,所有加法都用逻辑或代替。上式中的操作次序为B,B(B),B(BB),B(BBB),……,所以在运算的每一步我们只需简单地把现有结果乘以B
概要设计
算法介绍
Warshall算法是求二元关系传递闭包的一种高效的算法。Warshall在1962年提出了求关系的传递闭包的有效算法。其具体过程如下,设在n个元素的有限集上关系R的关系矩阵为M:(1)置新矩阵A=M;(2)置k=1;(3)对所有i如果A[i,k]=1,则对j=1…n执行:A[i,j]←A[i,j]∨A[k,j];
(4)k增1;(5)如果k≤n,则转到步骤(3),否则停止。所得的矩阵A即为关系R的传递闭包t(R)的关系矩阵。
1. 类型定义:
void warshall(int ,int )
void main()
2. 函数调用关系:
4)测试分析
① 本程序使用网络资源,按照题目要求的算法进行测试,结果正确;
② 算法的思路比较简单,矩阵可以利用数组表示出来,然后只需添加一些命令即编译运行,得到最终的二元关系传递闭包。
③ 本程序的源程序存在BUG,分别在C-Free和Visual C++ 6.0编译器中调试。均报错出现,更正之后。发现两个编译器中的程序有所不同,最终程序附录之后。
5)使用说明
1.本程序的运行环境为DOS操作环境,执行文件为:closebag.exe;
2.进入演示程序之后如下图所示:
3.之后可任意输入该矩阵的行数、列数,以及矩阵数值,编译链接运行,得到最终的二元关系传递闭包。
6)测试结果
1.首先输入该矩阵的行数、列数,在此选择“4*4”矩阵,当前结果如下图所示:
2. 然后输入该矩阵,在此测试的矩阵数值为{{1,0,0,0},{1,1,1,0},{0,0,1,1},{1,1,0,1}},其输出如下图所示:
编译运行,输出最终结果,如图所示:
附录一:参考资料
太原理工大学卓越专业应用程序课程设计指导书;
百度文库《传递闭包》;
数据结构题集实习报告模版;
百度文库《Warshall算法》;
附录二:源程序
Visual C++ 6.0 中的程序代码:
#includestdio.h
void warshall(k,n)
{
int a,b,i,j,t;
int temp[20][20];
for(a=0;ak;a++)
{
printf(请输入矩阵第%d行元素:,a);
for(b=0;bn;b++)
{
scanf (%d,temp[a][b]);//分别输入第1,2,3,4行的元素
}
}
for(i=0;ik;i++)
{
for(j=0;jk;j++)
{
if(temp[j][i]==1)
{
for(t=0;tn;t++)
{
temp[j][t]=temp[i][t]||temp[j][t];
}
}
}
}
printf(可传递闭包关系矩阵是:\n);
for(i=0;ik;i++)
{
for(j=0;jn;j++)
{
printf(%d, temp[i][j]);
}
printf(\n);
}
}//void warshall
void main()
{
int k,n;
printf(利用Warshall算法求二元关系的可传递闭包\n);
warshall(); //申明引用函数
printf(请输入矩阵的行数i: );
scanf(%d,k); // 请输入矩阵的行数i
printf(请输入矩阵的列数j: );
scanf(%d,n); //请输入矩阵的列数j
warshall(k,n); //引用函数
您可能关注的文档
最近下载
- 综合交通运输与智能交通重点专项实施方案1.0-提交综合处版.pdf VIP
- 工程交接记录.docx VIP
- 2023年四川省公需科目(数字经济与驱动发展)考试题库及答案.docx
- 变形缝安装施工方案.docx VIP
- 2025年最新版个人征信报告(含水印)模板【可修改】 .pdf VIP
- 爱登堡电气原理图及代号说明EDVF23.pdf VIP
- 20240412-西部证券-爱柯迪-600933-首次覆盖报告:新能源中大件扩张周期,全球化战略开启新篇章.pdf VIP
- 物联网技术与应用(高职物联网相关专业)PPT完整全套教学课件.pptx VIP
- 热烈庆祝八一建军节建军98周年专题.pptx VIP
- 卫生监督协管试题库.pdf VIP
文档评论(0)