2013-04-10 46 views
0

我想做一個簡單的圖形,這是一個沒有節點的selfloop的圖形。在網上可用的教程中,據說我應該使用SimpleGraph接口,但它不工作,因爲它在任何jar中都找不到。有什麼我可以做的,以禁用selflooping或應該我只是爲了前。在每個鼠標鍵釋放時檢查是否有任何selfloops被添加,並刪除這種效率非常低的邊緣。Jung2:如何禁用節點selfloop

回答

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); 
} 
0

我不知道那是什麼教程,但JUNG沒有「SimpleGraph」接口。

你可以平凡此完成自己,但是,通過這些機制之一:

  1. 如你所說:確定所添加的邊緣是一個自我循環,並刪除它
  2. 一旦到達目的地頂點只有調用addEdge(),如果源!=目的地
  3. 創建您的首選圖形類型的子類,覆蓋addEdge()並拒絕自循環。

我不明白爲什麼你認爲這是低效的;任何這些檢查都是O(1)。