c语言 warshall,离散经典WARSHALL算法的C语言实现.pdf

第 2 2卷第 5期 2 0 0 8年 9月 长沙大学学报 J OURN AL OF CH ANGS HA U NI V ER SI T Y VoI 22 NO 5 S e p 2 00 8 Wa r s h a U算法的 C语言实现 郭志军 辽宁对外经贸学院信息技术系 辽宁 大连 1 1 6 0 5 2 摘要 Wa r s h a l l 算法是求二元关系传递闭包的一种高效的算法 通过对二元关系可传递 t C J 研究 给出Wa r s h a l t 算法的 一 个 c语言程序 使对可传递性的研究变得更加直观和有效 关键词 传递 传递闭包 Wa r s h a l l 算法 中图分 类号 l 1 1 O 1 5 8 文献标识码 A 文章编号 1 0 0 8 4 6 8 1 2 0 0 8 0 5 0 0 6 9 0 3 二元关系是离散数学中一个重要 内容 它是 以 有序对为元素的集合 文献 把关系的性质分为五 种 自反性 反 自反性 对称性 反对称性 可传递性 关系的性质 明显地反映在它 的关 系矩阵上 MR 如 表 1 所 示 表 1 二元关系性质的关系矩阵表示 从上表可以看出 通过关系矩阵 中元素 的性质 可以直接判别 二元关系的 自反性 反 自反性 对称 性 反对称性 并且很容易求出 自反闭包 和对称 闭 包 二元关系的可传递性 的判别和求传递闭包是离 散数学中的一个难点 传递闭包 的求法有 集合法 矩阵法 关 系图法 Wa r s h a l l 沃舍尔 算法 等 其 中 W a r s h a ll 算法是求传递闭包的一个较为有效的方 法 下面给出阐释 1 准备知识 定义 l 设为上的关系 若 V V Y V z Y A A R R一 则称 R为A上传递的 关系 传递关系是一类很重要的二元关系 定义2 设 尺为非空集合A上的关系 的传递 闭包是 A上的关系 尺 使得 满足以下条件 1 R 是传递的 2 R c 3 对 上任何包含R的传递关系R 有 R c R 一 般 将的传递闭包记为 t R 传递闭包在计 算机科学 中有很多应用 例如 在计算机高级语言编 译程序的语法分析中 常常要通过求定义在某字母 表上的有关语法规则的二元关系的传递闭包来计算 非终极符所能导出的字符集 引理 设 为非空集合 上的关系 则 R是传 递的当且仅当 R 定义 3 设 A I I 2 L 尺是A上的关 系 令 f 川 2 r 一 I T 一 I 玎 J 一 0若 皿 一 1 1 r 1 2 r 2 1 r 2 1 M 1 n 1 r n 2 r l n 己 r 2 n M r 是 R的关系矩阵 记作 MR Wa r s h a l l 算法 1 输入 R的关系矩阵 输出 Mr t R 的关系矩阵 1 M r M 2 f o r k 1 t o n d o 3 f o r i 1 t o n d o 4 彳 b T j 1 t o n d o 5 M r i J 一 M 7 i M r i Mr k 算法中矩阵加法和乘法中的元素相加都是使用 逻辑加 M i 表示为矩阵 r 的i 行j 列的元素 2 Wa r s h a l l 算法的一个 C语言程序 3 i n c l l J d e 收稿 日期 2 0 0 8 0 5 0 9 修回 日期 2 0 0 8 0 9 0 1 作者简介 郭志军 1 9 7 8 一 男 辽宁新民人 辽宁对外经贸学院信息技术系讲师 硕士 研究方向 应用数学 7 0 长 沙 大 学 学 报 2 0 0 8年 9月 i n c l u d e v o i d m a i n i n t A 1 0 1 0 i n t n i j k p r i n ff 输入关系矩阵的维数 n n 1 0 n s c a n f d n p r i n ff 输入 n n个数据 0 o r 1 n f o r i 1 i n i f o r j 1 j n j anf d A i j i f A I i j I A E i j p r i n t f T h e r e i s a n e r r o r f 0 r i 1 i n i f o r j 1 j n j f o r k 1 k n k i f A i j A i k A j k A i k 1 p r i n ff 传递闭包的关系矩阵 n f o r j 1 j n j p r i n ff 2 d A i J p r i n ff n 该程序给出了求二元关 系传递闭包 的方法 再 根据引理可以判断所给二元关系的有传递性 3 应用举例 例 1 A 1 2 3 R为 A上 的关系 R R的传 递闭包 并判断尺的传递性 解 的关系矩阵为 L 1 0 0 j 运行 Wa r s h a l l 算法程序 图 1 是 C语言环境下 例 1 的运行结果 如图 1 所示 图 l C语言环境 下例 1 运行的结果 r l 0 0 I 求出了 关系R的传递闭包 7 l l 1 0 l L l 0 0 j MR 由引理可知 是传递的 例 2 A a b C d R为 A上的关 系 R 求 尺的传递闭包并判断 尺的传递性 解R的关系矩阵为 Mt 1 1 0 0 O 1 0 1 0 0 1 O O 0 O O 运行 Wa r s h a l l 算法程序 图 2是 C语言环境下 例 2的运行结果 如图 2 所示 一 一U 奠 I J t 蛋 一 一一i I j I j 囊 I r 善 露 I 一 I 图2 C语言环境下例 2 运行的结果 求出了关系 R的传递闭包 总第 8 5 期 郭志军 Wa r s h a U 算法 的 C语言实现 7 l r l l 0 1 0 1 O l 1 0 l O 1 O l O 由引理可知 R不传递的 注 图 1 图 2 为程序在 Mi c r o s o f t V i s u a l C 6 0 S P 6上运行 的结果 4 结束语 可传递关系的矩阵特征较为复杂 不易从其关 系矩阵中直接判别 通过 W a r s h a ll 算法的 c语言程 序求出传递闭包 再根据引理使得对可传递关系的 研究变得直观 迅速 简洁 有效l J 参考文献 1 耿素云 等 离散数学 M 北京 高等教育出版社 2 0 0 7 9 1 1 2 1 3 2 2 刘任任 等 基于求传递闭包的Wa r s h a l l 算法的改进 J 计算机 工程 2 0 0 5 1 0 3 8 3 9 3 谭浩强 C语言程序设计 M 北京 清华大学出版社 2 0 o 5 4 孙凤芝 等 W a r s h a l l 算法在传递性判别中的应用 J 大 庆师范学院学报 2 0 0 7 5 6 6 6 8 责任编校 化石

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值