有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当我有大量路径可供比较时,使用Java比较网络中两条路径的有效方法

我为每个类生成了大量路径。例如,n1是类1的路径数。路径的总数是M=sum(ni)i=1,2,…#类,我想一对一对地比较不同类的所有路径,看看它们是否有共同的节点。现在,我把每门课的路径都保存在一个文件夹中

ArrayList<List<Integer>>

对于列表中的每一条路径,我都有一个大小为M*M的布尔矩阵,当一条路径与其他路径没有共同点时,它的值为真。当它有共同点时,它是假的。但这非常耗时。您是否考虑过任何可能导致更快算法的数据结构。 谢谢!


共 (1) 个答案

  1. # 1 楼答案

    如果可以散列节点,请创建一个散列图>;把它们放进去,然后扫描这些值

    伪代码:

        map: HashMap<Node, Set<Path>>
        paths: List<Path>
    
        foreach (path in paths)
          foreach (node in paths.Nodes)
            if (map.contains(node))
              set = map.get(node)
              set.add(path)
              map.put(node, set)
            else
              map.put(node, new Set(path))
    
       foreach (set in map.values)
         if (set.size > 1)
           // all paths in the set have a node in common
         else
           // there is only one path with this node