Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何在两个具有一定长度的节点之间查找路径数_Algorithm_Matrix_Graph Algorithm - Fatal编程技术网

Algorithm 如何在两个具有一定长度的节点之间查找路径数

Algorithm 如何在两个具有一定长度的节点之间查找路径数,algorithm,matrix,graph-algorithm,Algorithm,Matrix,Graph Algorithm,给定G图和一个节点矩阵,我如何才能找到特定长度的两个给定节点之间的路径数? 我曾想过将矩阵k乘以,然后找到Ak[i,j],但我不知道如何构建算法,或者这是解决复杂度问题的最佳解决方案?如果你想找到两个长度为k的节点之间的所有路径,只需将邻接矩阵自身乘以k 原因很简单: 如果有一条边ij和一条边js,那么将有一条路径is到j。条目ii是节点i的度数 以下是图形的邻接矩阵: 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0

给定G图和一个节点矩阵,我如何才能找到特定长度的两个给定节点之间的路径数?

我曾想过将矩阵k乘以,然后找到Ak[i,j],但我不知道如何构建算法,或者这是解决复杂度问题的最佳解决方案?

如果你想找到两个长度为
k
的节点之间的所有路径,只需将邻接矩阵自身乘以
k

原因很简单: 如果有一条边
ij
和一条边
js
,那么将有一条路径
is
j
。条目
ii
是节点
i
的度数

以下是图形的邻接矩阵:

0 1 1 0 0 0 0 0 0 0 
0 1 1 0 0 1 0 0 0 0 
0 0 0 1 1 0 0 0 0 0 
1 0 0 1 1 0 0 0 0 0 
0 0 0 0 1 1 1 0 1 0 
1 0 0 0 0 0 0 1 0 0 
0 0 0 0 0 0 1 1 1 0 
0 0 0 0 0 0 0 1 0 1 
0 0 0 0 0 0 0 1 0 1 
0 0 0 1 0 0 0 0 0 1 
假设我们想要找到节点2和5之间的长度为3的路径数。为此,我们需要找到
A_3[2,5]

矩阵乘法有很多算法,某些语言内置了这些算法

因此,如果我们的邻接矩阵被称为
A
,我们需要
A*A*A

这给了我们:

2 1 1 2 3 2 1 1 1 0
2 2 2 2 3 2 1 2 1 1
2 1 1 1 3 2 3 3 3 1
2 2 2 2 4 3 3 3 3 1
1 1 1 1 1 1 3 8 3 6
0 1 1 2 1 1 0 1 0 2
0 0 0 2 0 0 1 5 1 6
1 0 0 3 1 0 0 1 0 3
1 0 0 3 1 0 0 1 0 3
2 1 1 3 3 1 1 0 1 1

当我们找到A_3[2,5]时,我们得到了2,这是两个节点之间长度为3的路径数。

你在问题中提到了问题的正确解决方案,你是在问如何将矩阵自身相乘吗?你的问题不是很清楚。这个矩阵是什么样子的?你能举个小例子吗?@user3483203给出了行走的次数,而不是路径