我有一个矩阵:
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整数是索引。我有一个散列表,其中每个索引都是一个人。小数是指数之间的相互作用。现在我想用索引列表(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是与3相互作用的2、4、5和6,所以1相互作用3到2、4、5或6,可以是1->2->4->3或1->4->3。我想为那些没有直接交互的两个节点找到最短的路径。我想对原始矩阵进行子集,然后在没有交互的节点之间找到最短路径。抱歉,伙计们,我没说清楚。
发布于 2016-02-23 20:26:58
我想你想看看迪克斯特拉算法
在这里有一个计算Dijkstra算法的Mathworks文件交换算法:
http://www.mathworks.com/matlabcentral/fileexchange/36140-dijkstra-algorithm
我以前用它来计算最短路径.它非常有效并且保证了最优。没有必要对matrix...if进行子集--有些节点您不想考虑,只是不要将它们放在矩阵中。
https://stackoverflow.com/questions/35585756
复制相似问题