Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我有大量路径可供比较时,使用Java比较网络中两条路径的有效方法_Java_Compare - Fatal编程技术网

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

当我有大量路径可供比较时,使用Java比较网络中两条路径的有效方法,java,compare,Java,Compare,我为每个类生成了大量的路径。例如,n1是类1的路径数。路径的总数是M=sum(ni)i=1,2,…#类,我想一对一对地比较不同类的所有路径,看看它们是否有共同的节点。现在,我将每个类的路径保存在 ArrayList<List<Integer>> ArrayList 然后对于列表中的每一条路径,我有一个大小为M*M的布尔矩阵,当一条路径与任何其他路径没有共同点时,它的值为真。当它有共同点时,它是错误的。但这非常耗时。您是否考虑过任何可能导致更快算法的数据结构。 谢谢如果

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

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

如果可以对节点进行散列,请创建一个HashMap>并将它们放入其中,然后扫描所有值

伪代码:

    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
map:HashMap
路径:列表
foreach(路径中的路径)
foreach(路径中的节点。节点)
if(映射包含(节点))
set=map.get(节点)
set.add(路径)
map.put(节点,集合)
其他的
map.put(节点,新集合(路径))
foreach(在map.values中设置)
如果(set.size>1)
//集合中的所有路径都有一个公共节点
其他的
//此节点只有一条路径

现在还不清楚你在做什么。张贴代码中执行比较的部分。