用java不带权有向图求可达矩阵_ISM算法(邻接矩阵求可达矩阵)Java实现

article/2025/9/25 2:24:47

图如下:

package com;public class Main {public static void main(String[] args) {// 邻接矩阵int adjacency[][] = { { 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 0 }, { 1, 0, 0, 1, 0 }, { 0, 0, 1, 0, 1 },{ 1, 0, 0, 0, 0 } };// 可达矩阵int reachability[][] = null;System.out.println("邻接矩阵:");show(adjacency);reachability = addUnit(adjacency);show(reachability);int n = 0;do {n++;reachability = square(reachability);reachability = format(reachability);System.out.println("第" + n + "次布尔运算");show(reachability);} while (!equals(reachability, format(square(reachability))));System.out.println("可达矩阵:");show(reachability);}// 矩阵+单位矩阵public static int[][] addUnit(int primitive[][]) {int[][] result = new int[primitive.length][primitive.length];for (int x = 0; x < primitive.length; x++) {for (int y = 0; y < primitive[x].length; y++) {result[x][y] = primitive[x][y];}}for (int i = 0; i < result.length; i++) {for (int j = 0; j < result[i].length; j++) {if (i == j) {result[i][j] = 1;}}}return result;}// 打印矩阵public static void show(int matrix[][]) {for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[i].length; j++) {System.out.print(matrix[i][j] + ",");}System.out.println();}System.out.println();}// 矩阵是否相等public static boolean equals(int a[][], int b[][]) {if (a.length != b.length) {// 行数是否相等return false;} else {for (int i = 0; i < a.length; i++) {if (a[i].length != b[i].length) {// i行列数是否相等return false;} else {for (int j = 0; j < a[i].length; j++) {if (a[i][j] != b[i][j]) {// i行j列的数值是否相等return false;}}}}}return true;}// 矩阵自乘public static int[][] square(int primitive[][]) {int[][] result = new int[primitive.length][primitive.length];int[][] list = new int[primitive.length][primitive.length];for (int x = 0; x < primitive.length; x++) {for (int y = 0; y < primitive[x].length; y++) {result[x][y] = primitive[x][y];}}int temp;for (int i = 0; i < result.length; i++) {for (int n = 0; n < result[i].length; n++) {temp = 0;for (int j = 0; j < result[i].length; j++) {temp += result[i][j] * result[j][n];}list[i][n] = temp;}}return list;}// 格式化public static int[][] format(int primitive[][]) {int[][] result = new int[primitive.length][primitive.length];for (int x = 0; x < primitive.length; x++) {for (int y = 0; y < primitive[x].length; y++) {result[x][y] = primitive[x][y];}}for (int i = 0; i < result.length; i++) {for (int j = 0; j < result[i].length; j++) {if (result[i][j] > 0) {result[i][j] = 1;}}}return result;}}
// 输出邻接矩阵:
0,0,0,0,0,
0,0,1,1,0,
1,0,0,1,0,
0,0,1,0,1,
1,0,0,0,0,1,0,0,0,0,
0,1,1,1,0,
1,0,1,1,0,
0,0,1,1,1,
1,0,0,0,1,第1次布尔运算
1,0,0,0,0,
1,1,1,1,1,
1,0,1,1,1,
1,0,1,1,1,
1,0,0,0,1,可达矩阵:
1,0,0,0,0,
1,1,1,1,1,
1,0,1,1,1,
1,0,1,1,1,
1,0,0,0,1,

http://chatgpt.dhexx.cn/article/8MDB6VTI.shtml

相关文章

【有限马尔科夫链状态分解+Kosaraju 算法】基于Kosaraju 算法和可达矩阵的有限马尔科夫链状态分解

有限马尔科夫链状态分解Kosaraju 算法 1 实验内容2 理论基础3 题目分析4 按常返性和互通性对状态空间进行分解算法流程4.1 强连通性和强连通分量4.2 基于有向图 Kosaraju 算法的有限马尔科夫链状态分解4.3 算法正确性证明4.4 算法复杂度分析 5 按周期对不可约闭集进行分解6 对例…

R 语言 | 计算可达矩阵

在微博有位朋友问我可达矩阵的计算&#xff0c;于是发了点时间用R语言写出来了。 问题如下&#xff1a; 计算过程&#xff1a; 注意&#xff1a;是矩阵的乘法。 代码如下&#xff1a; A <- matrix(c(0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0),nrow5) A1 …

一种使用Python计算可达矩阵的简单方法

在进行编码前要简单介绍几个知识点&#xff1a;有向图&#xff0c;邻接矩阵&#xff0c;可达矩阵 有向图、邻接矩阵、可达矩阵 有向图 现实中常常会表示从一个地点到另一个地点的路径&#xff0c;这样的带有从起点到终点的路线表示可以用有向图表示。如下图所示&#xff1a;…

系统工程利用python求解可达矩阵

系统工程中利用python求解可达矩阵 在系统工程书中&#xff0c;建立解释结构模型中求解可达矩阵是必不可少的一环故利用python写了一段求解可达矩阵的代码&#xff0c;只需要输入邻接矩阵便可计算得到可达矩阵代码如下&#xff1a; import numpy as npdef change(a): 乘以自身…

通过有向图的可达矩阵判断有向图的连通类型

我们根据有向图的连通情况&#xff0c;可以将图分成四种类型 非连通图弱连通图单向连通图强连通图 我们可以通过邻接矩阵A&#xff0c;计算可达矩阵B&#xff0c;然后经过二值化之后得到可达性矩阵P来判断该图属于以上哪一种。 如果P中元素都为1&#xff0c;说明任意两点之间…

【算法导论】有向图的可达矩阵

有时候&#xff0c;我们关注的不是从一个地点到另一个地点的费用&#xff0c;而是能否从一个顶点到达另一个顶点。因此我们可以假设所有边的权值为单位1&#xff0c;在下面的算法中&#xff0c;我们可以在O(n*n*n)的时间内计算出图中任意两点是否可达&#xff0c;我用可达矩阵来…

图论总复习

《图论及其应用》 主要考试知识点&#xff1a; 第2章&#xff0c;第 3章&#xff0c;第5 章&#xff0c;第 6章&#xff0c;章节占比&#xff1a;20%&#xff0c;25%&#xff0c;30%&#xff0c;25%。 **第2章&#xff1a;**图的定义、度的概念、握手定理、可图画、同构、子…

图的邻接矩阵求图的出度,入度,可达矩阵,判断强连通,弱连通,单向连通(C++,vs2017)

一、介绍概念 1、邻接矩阵 将一个n个节点的图&#xff0c;转化成一个n*n的矩阵G&#xff0c;G[i][j]表示第i个节点到第j个节点的的权重。 对于上图邻接矩阵为&#xff1a; 2、度 度分为入度和出度&#xff1a;某个节点的入度就是可以通过一条边到达这个节点的节点个数&#xff…

【离散数学】图论 第七章(3) 图的矩阵表示(邻接矩阵、可达矩阵、传递闭包求解算法)

本文属于「离散数学」系列文章之一。这一系列着重于离散数学的学习和应用。由于内容随时可能发生更新变动&#xff0c;欢迎关注和收藏离散数学系列文章汇总目录一文以作备忘。此外&#xff0c;在本系列学习文章中&#xff0c;为了透彻理解数学知识&#xff0c;本人参考了诸多博…

硬盘的存储原理和内部架构

首先&#xff0c;让我们看一下硬盘的发展史&#xff1a; 1956年9月13日&#xff0c;IBM的IBM 350 RAMAC(Random Access Method of Accounting and Control)是现代硬盘的雏形&#xff0c;整个硬盘需要50个直径为24英寸表面涂有磁浆的盘片&#xff0c;它相当于两个冰箱的体积&…

硬盘结构与工作原理

一、硬盘的接口 接口种类&#xff1a; ATA(Advanced Technology Attachment)(IDE):速度最大可达133MB/S; SATA(Serial ATA):速度最大可达300MB/S SCSI(Small Computer System Interface):转速最大可达15000rpm SAS(Serial Attachment SCSI):速度最大可达6GB/S 二、硬盘的物理结…

硬盘的种类、区别、运行原理

硬盘是电脑主要的储存媒介之一&#xff0c;由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。 硬盘的种类可分为&#xff1a; 1、固态硬盘&#xff08;SSD&#xff09;&#xff0c;采用闪存颗粒来储存&#xff1b; 2、机械硬盘&#xff08;HDD&#xff09;&a…

硬件(磁盘):机械硬盘内部硬件结构和工作原理详解

从理解磁盘IO开始 主轴让磁盘盘片转动&#xff0c;然后传动手臂可伸展让读取头在盘片上进行读写操作。每个盘片有两面&#xff0c;都可记录信息&#xff0c;所以一张盘片对应着两个磁头。 磁盘物理结构如下图: 硬盘的外部物理结构 一般硬盘正面贴有产品标签&#xff0c;主要…

硬盘的读写原理详解

硬盘的种类主要是SCSI 、IDE 、以及现在流行的SATA等&#xff1b;任何一种硬盘的生产都要一定的标准&#xff1b;随着相应的标准的升级&#xff0c;硬盘生产技术也在升级&#xff1b;比如 SCSI标准已经经历了SCSI-1 、SCSI-2、SCSI-3&#xff1b;其中目前咱们经常在服务器网站看…

磁盘存储原理

最近学习linux内核源码&#xff0c;读到操作系统boot引导相关内容时&#xff0c;对于磁盘相关原理介绍引起我的兴趣。阅读相关资料后&#xff0c;对磁盘工作原理做一个总结&#xff0c;参考资料为深入理解计算机系统&#xff08;CSAPP)。 磁盘是广泛应用的数据存储设备&#x…

[硬件] 简单介绍磁盘结构及工作原理

一、前言 最近学习&#xff24;&#xff2f;&#xff33;下的汇编语言用到了很多与硬件相关的指令&#xff0c;比如上一期写的int 13h&#xff08;直接磁盘服务&#xff09;&#xff0c;其中接口参数中就有驱动器号&#xff0c;磁头&#xff0c;磁道&#xff0c;扇区的概念&am…

机械硬盘的存储结构及原理

本文转载自:https://blog.csdn.net/u013125075/article/details/86576640 硬盘是电脑主要的存储媒介之一。根据硬盘的读写方式和存储方式不同&#xff0c;当前主流的硬盘可以分为固态硬盘&#xff08;SSD硬盘&#xff09;、机械硬盘&#xff08;HDD 硬盘&#xff09;两种。由于…

硬盘技术原理

**传统硬盘** 所有机械硬盘的原理相同。盘片被磁性材料覆盖&#xff0c;盘片上的磁性粒子被极化以表示一个二进制信息单元&#xff08;或比特&#xff09;。使用磁性材料来存储数据历史很久了&#xff0c;这种方式相对便宜&#xff0c;因此相对于其它存储技术而言&#xff0c;这…

机械硬盘原理介绍

硬盘结构及工作原理 目录&#xff1a; 硬盘结构 概念&#xff1a;盘面、柱面、磁道、扇区、簇 盘面 磁道 扇区 柱面 簇 硬盘读写数据的过程 SMR叠瓦式硬盘 其他硬盘知识 硬盘发展历史 硬盘结构及工作原理 硬盘结构 经过封装后的硬盘&#xff0c;对我们一般呈现出如下的样子…

机械硬盘原理

本篇参考自&#xff1a; https://zhuanlan.zhihu.com/p/89505052 https://blog.csdn.net/li_wen01/article/details/80221182 磁盘存储器原理介绍&#xff1a; 为了了解磁盘的运行原理&#xff0c;先上一些图来展示机械硬盘的构造和运行状态 可以看见&#xff0c;硬盘拆开…