如何对矩阵进行子集化并找出 Matlab 中所有节点之间的最短路径?
How to subset a matrix and find out shortest path between all nodes in Matlab?
我有一个矩阵:
1 2 3 4 5 6
1 0.7431 0.2769 0.0000 0.1869 0.2760 0.9597
2 0.2769 0.0462 0.0344 0.4898 0.6797 0.3404
3 0.0000 0.0344 0.4387 0.4456 0.6551 0.0000
4 0.1869 0.4898 0.4456 0.6463 0.1626 0.2238
5 0.2760 0.6797 0.6551 0.1626 0.1190 0.7513
6 0.9597 0.3404 0.0000 0.2238 0.7513 0.2551
整数是索引。我有一个散列 table,其中每个索引都是一个人。小数是指数之间的相互作用。现在我想用索引列表(1、3、6)对这个矩阵进行子集化,这意味着我只关心 1、3 和 6 之间的相互作用。
Subset:
1 3 6
1 0.7431 0.0000 0.9579
3 0.0000 0.4387 0.0000
6 0.9579 0.0000 0.2551
有些人之间没有互动,例如人 1 和 3 或人 3 和 6。但 1 与 2、4、5 和 6 交互,后者与 3 交互。因此 1 通过 2、4、5 或 6 与 3 交互。它可以是 1->2->4 ->3 或 1->4->3 类似的东西。我想为那些没有直接交互的 2 个节点找到最短路径。我想对原始矩阵进行子集化,然后找到没有交互的节点之间的最短路径。
对不起大家,我没说清楚。
我想你想看看Dijkstra's algorithm:
这里有一个计算Dijkstra算法的Mathworks文件交换算法:
http://www.mathworks.com/matlabcentral/fileexchange/36140-dijkstra-algorithm
我以前用它来计算最短路径...它非常有效并且保证最优。真的没有必要对矩阵进行子集...如果有您不想考虑的节点,请不要将它们放入您的矩阵中。
我有一个矩阵:
1 2 3 4 5 6
1 0.7431 0.2769 0.0000 0.1869 0.2760 0.9597
2 0.2769 0.0462 0.0344 0.4898 0.6797 0.3404
3 0.0000 0.0344 0.4387 0.4456 0.6551 0.0000
4 0.1869 0.4898 0.4456 0.6463 0.1626 0.2238
5 0.2760 0.6797 0.6551 0.1626 0.1190 0.7513
6 0.9597 0.3404 0.0000 0.2238 0.7513 0.2551
整数是索引。我有一个散列 table,其中每个索引都是一个人。小数是指数之间的相互作用。现在我想用索引列表(1、3、6)对这个矩阵进行子集化,这意味着我只关心 1、3 和 6 之间的相互作用。
Subset:
1 3 6
1 0.7431 0.0000 0.9579
3 0.0000 0.4387 0.0000
6 0.9579 0.0000 0.2551
有些人之间没有互动,例如人 1 和 3 或人 3 和 6。但 1 与 2、4、5 和 6 交互,后者与 3 交互。因此 1 通过 2、4、5 或 6 与 3 交互。它可以是 1->2->4 ->3 或 1->4->3 类似的东西。我想为那些没有直接交互的 2 个节点找到最短路径。我想对原始矩阵进行子集化,然后找到没有交互的节点之间的最短路径。 对不起大家,我没说清楚。
我想你想看看Dijkstra's algorithm:
这里有一个计算Dijkstra算法的Mathworks文件交换算法:
http://www.mathworks.com/matlabcentral/fileexchange/36140-dijkstra-algorithm
我以前用它来计算最短路径...它非常有效并且保证最优。真的没有必要对矩阵进行子集...如果有您不想考虑的节点,请不要将它们放入您的矩阵中。