Warshall算法

介绍:

Warshall在1962年提出了一个求关系的传递闭包的有效算法。其具体过程如下:
在这里插入图片描述

N—S图

在这里插入图片描述

代码实现:

import java.util.Scanner;

public class Warshall {

	public static void main(String[] args) {
		System.out.println("请输入矩阵阶数:");
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();// 行数
		int[][] array = new int[n][n];
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				array[i][j] = scan.nextInt();
			}
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				if (array[i][j] == 1) {
					for (int k = 0; k < n; k++) {
						array[i][k] = array[i][k] | array[j][k];
					}
				}
			}
		}
		System.out.println("传递闭包的最终结果是:");
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				System.out.print(array[i][j]);
			}
			System.out.println();
		}
	}

}

运行结果:

在这里插入图片描述

应用:计算有穷集合上的二元关系的传递闭包和简单方向图的可到达矩阵。

Logo

尧米是由西云算力与CSDN联合运营的AI算力和模型开源社区品牌,为基于DaModel智算平台的AI应用企业和泛AI开发者提供技术交流与成果转化平台。

更多推荐