Warshall算法JAVA实现

package graph; class Vertex { public char label; // ------------------------------------------------------------- public Vertex(char lab) // constructor { label = lab; } } // end class Vertex // // /** * 有向图 */ public class WarshallGraph { private final int MAX_VERTS = 5; private Vertex vertexList[]; // list of vertices private int adjMat[][]; // adjacency matrix private int nVerts; // current number of vertices private char sortedArray[]; // ------------------------------------------------------------- public WarshallGraph() // constructor { vertexList = new Vertex[MAX_VERTS]; // adjacency matrix adjMat = new int[MAX_VERTS][MAX_VERTS]; nVerts = 0; for (int j = 0; j < MAX_VERTS; j++) // set adjacency for (int k = 0; k < MAX_VERTS; k++) // matrix to 0 adjMat[j][k] = 0; } // end constructor // ------------------------------------------------------------- public void addVertex(char lab) { vertexList[nVerts++] = new Vertex(lab); } // ------------------------------------------------------------- public void addEdge(int start, int end) { adjMat[start][end] = 1; } // ------------------------------------------------------------- public void displayVertex(int v) { System.out.print(vertexList[v].label); } // ------------------------------------------------------------- public void warshall() { for (int y = 0; y < MAX_VERTS; y++) { //行 for (int x = 0; x < MAX_VERTS; x++) { //列 if(adjMat[y][x] == 1){ // y -> x for (int z = 0; z < MAX_VERTS; z++) { if(adjMat[z][y] == 1 && z != x){ //z -> y找到连接到 y 的节点 adjMat[z][x] = 1; //z -> x } } } } } } // end topo // ------------------------------------------------------------- public void printGraph(){ for (int i = 0; i < MAX_VERTS; i++) { for (int j = 0; j < MAX_VERTS; j++) { System.out.print(adjMat[i][j] + " "); } System.out.println(); } } // ------------------------------------------------------------ public static void main(String[] args) { WarshallGraph theGraph = new WarshallGraph(); theGraph.addVertex('A'); // 0 theGraph.addVertex('B'); // 1 theGraph.addVertex('C'); // 2 theGraph.addVertex('D'); // 3 theGraph.addVertex('E'); // 4 // theGraph.addVertex('F'); // 5 // theGraph.addVertex('G'); // 6 // theGraph.addVertex('H'); // 7 theGraph.addEdge(0, 2); // AD theGraph.addEdge(1, 0); // AE theGraph.addEdge(1, 4); // AE theGraph.addEdge(2, 3); // AE theGraph.addEdge(3, 4); // BE theGraph.addEdge(4, 2); // CF // theGraph.addEdge(3, 6); // DG // theGraph.addEdge(4, 6); // EG // theGraph.addEdge(5, 7); // FH // theGraph.addEdge(6, 7); // GH theGraph.warshall(); theGraph.printGraph(); } }

Warshall算法JAVA实现相关推荐

  1. Warshall算法(用法详解,并转换成代码的形式)

    关于Warshall算法,我先通过离散数学中求传递闭包来解释他的使用规则. 一般的,给定一个矩阵A(行列相等),我们对其使用Warshall算法: //注,该矩阵上只有0或1两种元素,做加法时,1+1 ...

  2. 推特雪花算法 java实现

    2019独角兽企业重金招聘Python工程师标准>>> package twiter.snowflake;/*** twitter的snowflake算法 -- java实现*/ p ...

  3. 基于Warshall算法的连通图及欧拉图判定方法

    1736年欧拉解决了哥尼斯堡七桥问题.他在这一具体问题的基础上进一步研究,最终找到了一个简便的原则可以鉴别一个图(多重图)能否一笔画成. 本文中,笔者使用布尔矩阵来存储一个无向图,并结合集合论中&qu ...

  4. java dh算法_dh密钥交换算法java

    dh密钥交换算法java 迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange,简称"D–H") 是一种安全协议. 它可以让双方在完全没有对方任何预先信息的 ...

  5. C++floyd warshall算法求最短路径(附完整源码)

    C++floyd warshall算法求最短路径 floyd warshall算法求最短路径的完整源码(定义,实现,main函数测试) floyd warshall算法求最短路径的完整源码(定义,实现 ...

  6. C语言用warshall算法求传递闭包transitive closure(附完整源码)

    用warshall算法求传递闭包transitive closure warshall算法求传递闭包完整源码 warshall算法求传递闭包完整源码 #include <stdbool.h> ...

  7. 数据结构和算法(Java)-张晨光-专题视频课程

    数据结构和算法(Java)-579人已学习 课程介绍         如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的 ...

  8. floyed java_Floyd算法java实现demo

    Floyd算法java实现,如下: package a; /** * ┏┓ ┏┓+ + * ┏┛┻━━━┛┻┓ + + * ┃ ┃ * ┃ ━ ┃ ++ + + + * ████━████ ┃+ * ...

  9. 快速排序算法 java 实现

    快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...

最新文章

  1. myeclipse部署项目后,debug模式启动,总是弹出Class.class文件
  2. 记一次使用快速幂与Miller-Rabin的大素数生成算法
  3. Windows 7硬盘安装方法大全
  4. Flask 扩展 Flask-Script
  5. feignclient注解使用_Spring Cloud Nacos的使用
  6. FCKEditor v2.6.3 最新版-ASP.NET 演示程序
  7. 地理探测器的学习与研究初探
  8. 多个app用同一个签名文件_运动设备和运动APP的合理搭配
  9. 多智能体强化学习入门Qmix
  10. 论文排版一步搞定之公式——(公式居中,编号居右)
  11. ITUNES更改备份保存路径(不放C盘,不占C盘)、C盘空间不够
  12. 中国齿科粘接剂行业发展趋势及前景动态预测报告2022-2027年
  13. 青岛大学计算机考研好考么,青岛大学考研难吗?一般要什么水平才可以进入?...
  14. 小程序后台持续定位功能
  15. 《工程测量学》考试复习总结
  16. 安装office2016后文档表格不能显示图标
  17. 2020高中计算机会考成绩查询,2020会考成绩查询网站入口 学业水评考试成绩查询方法...
  18. PLC是怎么工作和扫描的
  19. 跟海外大牌正面PK,中国品牌如何出圈?
  20. .ps1 is not digitally signed. The script will not execute on the system.

热门文章

  1. SEO优化收徒蜘蛛池是什么
  2. 基于android的共享车位app
  3. 使用three.js做一个网页的相册动画
  4. CentOS-7部署安装Zabbix 3.0
  5. id Software公司介绍
  6. linux内核zfs,Linus Torvalds回应用户抱怨:不建议使用 ZFS On Linux
  7. 一、剪辑行业概述与剪辑工具介绍
  8. 工资3000,靠“视频剪辑”月入40000:会赚钱的人,从不靠拼命!
  9. HTML语言中代表网页标题的标签是,html标题标记 在html中,标题标签一共有几级?
  10. 数据库系统头歌实验八 数据库完整性、安全设计