Jung2:如何禁用节点自环

时间:2013-04-10 09:14:06

标签: java graph jung

我想制作一个简单的图表,它是没有节点自循环的图表。在可以在线获得的教程中,据说我应该使用SimpleGraph接口,但它不能正常工作,因为它在任何jar中都找不到。有什么我可以做的事情来禁用自我循环或者我应该只为前者。在每个mousekey发布时检查是否有任何自循环被添加并删除这样的边缘效率非常低。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

我不知道是什么教程,但JUNG没有“SimpleGraph”界面。

但是,您可以通过以下其中一种机制轻松完成此任务:

  1. 如你所知:确定添加的边缘是自循环并将其删除
  2. 一旦目标顶点已知,只有在源!=目的地
  3. 时才调用addEdge()
  4. 创建首选图表类型的子类,该子类重写addEdge()并拒绝自循环。
  5. 我不明白为什么你认为这是低效的;任何这些检查都是O(1)。