资源下载地址:https://download.csdn.net/download/sheziqiong/85773155
资源下载地址:https://download.csdn.net/download/sheziqiong/85773155
1.概述
《离散数学》中的关系和映射应用非常广泛。从面向对象的角度来看,关系和映射都是对象;并且映射是一种特殊的关系。用 Java 这个面向对象的编程语言去实现离散数学中的关系和映射是较为合适的,因此,该系统在此基础上被编写出来。该系统采用关系作为对象,关系矩阵是关系对象的成员,用关系矩阵来进行各种运算操作,编程者能更好的进行代码实现,操作者也能更加容易去上手。该系统使用的语言是 Java,测试环境是 Windows10 操作系统、jdk 版本是 1.8.8_221,用 eclipse 编写代码。已实现的功能有:关系判断,关系运算,闭包运算,以及编写了关系类、相容关系类等五个类。上述功能除映射类和等价关系类有部分功能没有完成,其余功能均实现且测试多次后未发现错误。
2.程序概要设计 程序流程图
文章图片
功能模块图
文章图片
程序文件结构设计 根据题意,程序编写了六个类,分别是二元关系类、等价关系类、偏序关系类、相容关系类、映射类和主类。其中二元关系类里编写关系判断、关系运算、闭包运算三种方法,等价关系类、偏序关系类、相容关系类、映射类分别继承二元关系类;主类主要编写 GUI 界面设计代码。
3.程序详细设计
public String toString() {
StringBuffer str = new StringBuffer();
for (int i = 0;
i < matrix.length;
i++) {
for (int j = 0;
j < matrix.length;
j++) {
str.append(matrix[i][j] == 1 ? 1 + " " : 0 + " ");
}
str.append("\n");
}
return str.toString();
}
【java|基于Java实现的离散数学测试实验】重写(override)toString() 方法,内容改写成把对象的矩阵(matrix)成员变量的输出。调用关系运算和闭包运算的时候,结果是矩阵,重写toString() 方法之后能很方便地输出运算结果。
public static BinaryRelation union(BinaryRelation r1, BinaryRelation r2) {...};
//交集运算
public static BinaryRelation reflexiveClosure(BinaryRelation r1) {...};
//自反闭包
关系对象其中一个成员变量关系矩阵,实际上关系矩阵是关系的具体表现形式,关系矩阵具有的是自反性等五个性质,而关系运算和闭包运算是关系矩阵之间的通信,将关系运算方法和闭包运算方法设置为静态方法,一是因为两种运算方法的结果均不是关系对象具有的属性,而每个关系对象都可以调用这两种方法,二是方便调用 toString() 方法进行输出。
for (int k = 0;
k < r2.matrix.length;
k++) {
for (int i = 0;
i < r2.matrix.length;
i++) {
for (int j = 0;
j < r2.matrix.length;
j++) {
if (r2.matrix[i][j] != 1)
r2.matrix[i][j] = r2.matrix[i][k] & r2.matrix[k][j];
}
}
}
Warshall 算法是求传递闭包的经典算法,在通信网络、运输路线等应用广泛。使用 n 阶关系矩阵
文章图片
来表示有向图中任意一对节点是否含有路径的信息,则一条路可以表示为
文章图片
,
文章图片
表示包含前 k 个节点。根据描述可得代码:
r2.matrix[i][j]=r2.matrix[i][j]|(r2.matrix[i][k]&r2.matrix[k][j]);
经过算法运算后可得:
r2.matrix[i][j] = r2.matrix[i][k] & r2.matrix[k][j];
4.程序测试 用户界面
文章图片
确认两个矩阵
文章图片
操作演示
文章图片
文章图片
文章图片
文章图片
文章图片
资源下载地址:https://download.csdn.net/download/sheziqiong/85773155
资源下载地址:https://download.csdn.net/download/sheziqiong/85773155
推荐阅读
- javascript|基于HTML5+JavaScript实现的网页录屏器设计
- python|通过Python爬虫技术获取小说信息
- python|基于Python的决策树判断是否降雪
- 《Java入门100练》|【第26天】给定 n 个元素的升序数组nums,求实现一个函数在nums中寻找target的下标 | 初识二分查找
- 《Java入门100练》|【第25天】给定一个长度为 n 的数组,统计每个数出现的次数 | 计数哈希
- 《Java入门100练》|【第24天】给定一个长度为 n 的数组,将元素 X 插入数组指定的位置 | 数组插入操作
- 《力扣周赛题解》|【周赛复盘】LeetCode第298场单周赛
- 索引|《穿越 Java | 第三章 - 基础语法篇》
- 大厂面试题精华总结|SpringCloud面试百题集