2016-12-23 6 views
0

はCytoscape JSが私のために動作するように取得しようとしているが、それは私やライブラリの制限だ場合、私は知らない、いくつかのユーザビリティの問題に実行するための方向性に基づいて異なる重み。Cytoscape JS - ダイクストラの

原発の問題は、方向に基づいて異なる重みを使用したいと思っています。 AからBは、重み3を持つべきですが、BからAは、例えば、重み6を持つ必要があります。ドキュメントでは、ソース/ターゲットが無向グラフで無視されるため、定義されるエッジは1つだけです。

私はこれまでにノード自体にウェイトを格納することでこれを解決していますが、私はdijkstraのウェイト関数でedge.target()を調べて目的のウェイトを得ることができたと思いました。

しかし、私は(edge.targetと思うが)だけで、私は=アルゴリズムに偽の指示を指定するにもかかわらず、エッジを設定するときに定義された一方向の関係に準拠しているようです。私が他の方向からそれに着いているなら、私は間違った体重を取るようです。

だから私の質問は、私はきちんとダイクストラは、私が持っているすべてのエッジのオブジェクトである重み関数の内部で、の重みを見つけているノードのターゲットを取得んか...でしょうか?私のグラフには円形のパスがあるので、ノードには2つの方向から近づけることができ、1つのウェイトは機能しません。

答えて

0

さて私はcytoscape.jsを編集し、重み関数に実際のターゲットノードを渡すためにダイクストラを変更することで、これを解決:

var weight = weightFn.apply(edge, [ edge, v ]); 

私はノード自体に保存体重をつかむことができます。

実際のターゲットを提供し、エッジオブジェクトのプロパティがあります場合、私はまだ興味があると思いますが、主な質問が回答されています。

+0

私は、アルゴリズムは、エッジごとに重みがあるように意図しので、これは本当に、ダイクストラのアルゴリズムでうまくいくかはわかりません。重みが方向ごとに表現され、アルゴリズムが正しく動作する(すなわち、いくつかの単体テストを例として)ならば、プルリクエストによってlibにこの機能を持たせることは素晴らしいことです。ありがとう! – maxkfranz

関連する問題