ノードの自己ループのないグラフである単純なグラフを作成したいと思います。オンラインで入手可能なチュートリアルでは、SimpleGraph インターフェイスを使用する必要があると言われていますが、どの jar ファイルにも見つからないため機能しません。セルフループを無効にするためにできることはありますか、それとも単に元にすべきでしょうか。マウスキーを放すたびに、セルフループが追加されているかどうかを確認し、非常に非効率的なエッジを削除します。
質問する
142 次
2 に答える
1
上記のポイントで述べたように。3 コードは次のようになります。
public class UndirectedSimpleGraph<V,E> extends UndirectedSparseGraph<V,E> {
public UndirectedSimpleGraph(){
super();
}
public boolean addEdge(E edge, Pair<? extends V> endpoints, EdgeType edgeType){
Pair<V> new_endpoints = getValidatedEndpoints(edge, endpoints);
if (new_endpoints == null)
return false;
V v1 = new_endpoints.getFirst();
V v2 = new_endpoints.getSecond();
if(v1.equals(v2))
return false;
else
return super.addEdge(edge,endpoints,edgeType);
}
于 2013-04-11T18:45:05.643 に答える
0
何のチュートリアルかわかりませんが、JUNG には「SimpleGraph」インターフェースがありません。
ただし、次のメカニズムのいずれかを使用して、これを自分で簡単に実現できます。
- あなたが提案したように:追加されたエッジが自己ループであることを特定し、それを削除します
- 宛先頂点が判明したら、ソース != 宛先の場合にのみ addEdge() を呼び出します
- addEdge() をオーバーライドし、自己ループを拒否する、好みのグラフ タイプのサブクラスを作成します。
これが非効率的だとあなたが考える理由がわかりません。これらのチェックはすべて O(1) です。
于 2013-04-10T17:22:45.723 に答える