ネットワークノードの集合の近さと中間度を計算する方法を探しています。PHPネットワーク内のノードの集中度を計算する
入力としてIは、開始ノード、エンドノード及びエッジ情報を持つJSONオブジェクトを持っている:
[{
"publication": 4,
"origin": 10,
"destination": 11
},
....,
{
"publication": 5,
"origin": 10,
"destination": 12
}, {
"publication": 8,
"origin": 12,
"destination": 13
}]
隣接行列を使用して、非常に大きなデータセットのinefficentにつれ、私が探しています中心性を計算する別の方法です。私は無向グラフ/無重みグラフを持っているので、Dijkstraのアルゴリズムはオプションになりますか?そして、このjsonを入力として使用するにはどうすれば実装できますか?マルチエッジが今$graph["sourceN"]["targetN"]
でその数を示していること
$edgeList = json_decode($thatJSONDataYouHaveInTheQuestion,true);
$graph = [];
foreach ($edgeList as $edgeData) {
$graph[$edgeData["origin"]][$edgeData["destination"]] = isset($graph[$edgeData["origin"]][$edgeData["destination"]])?$graph[$edgeData["origin"]][$edgeData["destination"]]+1:1;
//$graph[$edgeData["destination"]][$edgeData["origin"]] = isset($graph[$edgeData["destination"]][$edgeData["origin"]])?$graph[$edgeData["destination"]][$edgeData["origin"]]+1:1 //Uncomment for undirected graphs
}
注あなたは非常に、非常に単純なグラフ構造を持っている:あなたは次の操作を行うことができます始めるため
によって与えられますか。 – Rafael
あなたのデータもマトリックスにはありません... – Rafael
ダイクストラのアルゴリズムを使用することができます。また、Dijkstraのアルゴリズムは、適切なデータ構造を使ってこの詳細を抽象化している限り、隣接関係リストや隣接行列を使用しているかどうか気にしません。ペナルティを受けるだけです(スペースペナルティを避けるためのトレードオフです – apokryfos