- 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的传递闭包.doc
《应用程序设计
课程设计》报告
班 级:计Z1002班
学 号:2010001419
姓 名:张龙
指导教师:王华 孟亮 杨永强
成绩评定:
计算机求解关系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); //引用函数
}//void main
C—Fre
您可能关注的文档
最近下载
- (2024秋新版)人教版七年级数学上册全册PPT课件.pptx
- dixell帝思 xc15cx-xc35cx 调试维修参数设置资料.pdf
- transcad交通需求模型手册_chapter12公交分配.pdf VIP
- 高校后勤餐饮经营发展探究——以浙江树人大学为例.pdf VIP
- 幼儿园教室环创培训.pptx VIP
- 2023辽宁沈阳市铁西区面向全区招聘社区残疾人工作专职干事8人考试备考题库及答案解析.docx VIP
- 2025年安徽省池州市辅警协警笔试笔试预测试题(附答案).docx VIP
- 《追求理解的教学设计》读书心得.docx VIP
- 糖皮质激素诱导骨质疏松诊治专家共识.pptx VIP
- 2025内蒙古巴彦淖尔市能源(集团)有限公司第二批招聘55人笔试模拟试题及答案解析.docx VIP
文档评论(0)