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