1

私はマトリックスを持っています:

       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 は、2、4、5、または 6 を介して 3 と相互作用します。 1->2->4->3 または 1->4->3 のようになります。直接的な相互作用を持たない 2 つのノードの最短経路を見つけたいと考えています。元の行列をサブセット化し、相互作用のないノード間の最短経路を見つけたいと考えています。申し訳ありませんが、私は自分自身を明確にしませんでした。

4

1 に答える 1

1

ダイクストラのアルゴリズムを見たいと思います:

ダイクストラのアルゴリズムを計算する Mathworks ファイル交換アルゴリズムがここにあります。

http://www.mathworks.com/matlabcentral/fileexchange/36140-dijkstra-algorithm

以前に最短経路を計算するために使用しました...非常に効率的で、最適であることが保証されています。マトリックスをサブセット化する必要はまったくありません...考慮したくないノードがある場合は、それらをマトリックスに入れないでください。

于 2016-02-23T20:26:58.867 に答える