Graph 使用邻接列表和哈希集实现图形
当我开始将图形实现为邻接列表时,我注意到 检查v1至v2是否为O(V)的运行时间Graph 使用邻接列表和哈希集实现图形,graph,binary-search-tree,hashset,Graph,Binary Search Tree,Hashset,当我开始将图形实现为邻接列表时,我注意到 检查v1至v2是否为O(V)的运行时间 bool是相邻的(intv1,intv2){ 对于(int i=0;i
bool是相邻的(intv1,intv2){
对于(int i=0;i
循环一直工作到V(顶点数),所以它是O(V)
我可以用HashSet代替ArrayList或vector吗
它是ArrayListgraph代码>
或Vector图形代码>
现在我想知道为什么我们不能创造
ArrayList图形
这将使布尔是相邻的(intv1,intv2);O(1),因为哈希集中的搜索顺序是O(1)
如果hashset无法使用,因为它占用的内存比需要的多,那么二叉树呢
ArrayList图
在这种情况下,搜索将比O(V)更好
有人能帮忙解释一下为什么以前没有创建这个实现吗?是的,对于每个顶点,您可以(也应该)使用HashMap来存储其邻居列表
例如,对于V1,创建以下HashMap:
HashMap<Integer, Boolean> v1Adjacents = new HashMap<Integer, Boolean>();
HashMap<Integer, Boolean> v1Adjacents = new HashMap<Integer, Boolean>();
if(v1Adjacents.get(V2) != null){
...
}