与传递闭包问题
非常相似的一个问题是,能不能给出一个矩阵,根据矩阵可以以时间代价O(n)的方式得到在一个有向代权图中任意指定端点之间的最短距离。求的这个矩阵的问题被称为每一对端点间的最小距离问题。
这里采用的是Floyd算法,它与WalShall
算法非常相似:
如果A可以到达B,距离为x,且C可以到达A,距离为y,则求得C可以到达B,距离为 z = x + y,z小于如果c到B的原来的距离,则用z更新矩阵,否则c到B距离维持不变。
和最小路径算法类似,这里用一个很大数字INFINITY来表示两个端点之间距离为无穷大的情况,即不通。这里INFINITY=最大的int值(~(1<<31))。
Floyd.main()提供简单的测试。
与WalShall
一样,Floyd算法本身的时间代价为O(n^3)
代码如下:
class Floyd {
private int[][] adjMat;
private static final int INFINITY = ~(1<<31);
Floyd(int size) {
adjMat = new int[size][size];
for(int i=0; i<size; i++)
for(int j=0; j<size; j++)
adjMat[i][j] = INFINITY;
}
void connect(int from, int to, int length) {
adjMat[from][to] = length;
}
void floyd() { //floyd算法
for(int y=0; y<adjMat.length; y++) //查找每一行
for(int x=0; x<adjMat.length; x++) // 查找每个单元格
if(adjMat[y][x] != INFINITY) //如果 y 可以到达 x
for(int z=0; z<adjMat.length; z++) //查找所有行的y列
//如果 z 可以到达y ,说明z
//可以直接到达x,如果算出来的新距离小于原来的距离,则更新
if(adjMat[z][y] != INFINITY) {
int newLength = adjMat[z][y] + adjMat[y][x];
adjMat[z][x] = newLength < adjMat[z][x] ? newLength : adjMat[z][x];
}
}
int[][] getConnections() {
return adjMat;
}
public static void main(String[] args) {
Floyd w = new Floyd(5);
w.connect(1,0,70);
w.connect(2,0,30);
w.connect(1,3,10);
w.connect(3,2,20);
for(int[] a: w.getConnections()) {
for(int i: a) System.out.print((i == INFINITY? "INF" : i) + "\t");
System.out.println();
}
w.floyd();
System.out.println("==================");
for(int[] a: w.getConnections()) {
for(int i: a) System.out.print((i == INFINITY? "INF" : i) + "\t");
System.out.println();
}
}
}
分享到:
相关推荐
希尔伯特-黄变换端点效应抑制算法综述,贺智,沈毅,希尔伯特-黄变换(Hilbert-Huang transform,HHT)作为一种自适应的时频分析算法,是近十年来信号处理领域十分有效的新方法之一. 但是,由�
论文研究-消除EMD端点效应的PSO-SVM方法研究.pdf, 经验模态分解(empirical mode decomposition, 简称EMD)的端点效应使得EMD分解结果产生严重失真, 为了减小分解过程中...
「安全运营」信息安全_数据安全_AppSecEU2016-Aaron-Weaver-Pipeline-Aut - 端点安全 安全研究 Android 恶意软件 安全意识 防火墙
网络安全-Symantec-端点安全-SEPM服务器防病毒定义失败解决.pdf
它控制每一个端点和每一个接口上的每一个设备,并保证其易于使用和灵活的信息泄漏防护。SafeGuard PortProtector 监控实时流量,并把自定义粒度安全策略应用到所有类型的接口和外部存储设备: 物理接口:USB、...
网络游戏-基于神经网络集成和BS-EMD的端点效应抑制方法.zip
网络游戏-将网络端点动态分配到网络区域的方法和装置.zip
语音端点检测工具包,包括DNN,bDNN,LSTM和基于ACAM的VAD。 我们还提供我们直接记录的数据集。
端点效应_镜像延拓-EMD端点效应matlab源程序
镜像延拓程序-EMD端点效应,解决端点飞翼问题
基于Swagger端点为Retrofit 2生成kotlin代码的库。 包含一个注释处理器,用于在构建时配置和生成代码。
neo4j-graphql-deepauth 对neo4j-graphql-js GraphQL端点(即GRANDstack应用)中的细粒度访问控制的基于指令的支持。 还可以在任何非neo4j-graphql-js GraphQL端点中启用支持,该端点公开带有嵌套关系过滤的过滤...
行业分类-设备装置-控制端点下媒体流传送方向的方法
音视频-编解码-语音端点检测技术及在应急通信中的应用.pdf
【端点检测】基于倒谱距离实现信号端点检测含Matlab源码
segundoparcialDW api-rest,端点,角度应用
为了提高低信噪比下语音端点检测的性能,提出了一种改进的基于谱减法和自适应子带谱熵的语音端点检测方法。该方法先利用谱减法对带噪语音消除加性噪声,及时更新背景噪声估计,再对增强后的语音信号利用改进的自适应...
狂欢服务器 RESTful 防病毒端点服务器 - 提供 HTTPS 端点以扫描文件中的恶意软件即服务
总结了语音端点检测技术的基本原理、步骤及发展情况,介绍了当前主要语音端点检测算法的研究进展;并对各主要算法的检测性能进行了较详细的分析和比较。最后,总结了语音端点检测技术的发展特征,并展望了该技术的...
端点检测是语音信号处理过程中非常重要的一步,它的准确性直接影响语音信号处理的速度和结果,因此端点检测方法的研究,特别是在噪声环境下端点检测的研究,一直是语音信号处理中的热点。从基于时域参数、频域参数、...