Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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
Graph 利用邻接表向图中添加边的时间复杂度_Graph_Time Complexity_Adjacency List_Insertion - Fatal编程技术网

Graph 利用邻接表向图中添加边的时间复杂度

Graph 利用邻接表向图中添加边的时间复杂度,graph,time-complexity,adjacency-list,insertion,Graph,Time Complexity,Adjacency List,Insertion,我一直在研究使用邻接列表实现的图形,我认为添加边是一个O(1)操作 如果您只是将一条边固定到顶点的边链接列表上,这是有意义的,但我不明白,如果已经存在一条边,只要您关心删除旧边,这种情况怎么会发生。找到那条边需要O(V)时间 如果不这样做,并且添加一条已经存在的边,则该边将有重复的条目,这意味着它们可能具有不同的权重,等等 谁能解释一下我似乎遗漏了什么?谢谢 你的复杂性分析是对的。找出是否已经存在的边真的是O(V)。但请注意,添加此边(即使存在)仍然是O(1) 您需要记住,如果有两条边具有相同的

我一直在研究使用邻接列表实现的图形,我认为添加边是一个O(1)操作

如果您只是将一条边固定到顶点的边链接列表上,这是有意义的,但我不明白,如果已经存在一条边,只要您关心删除旧边,这种情况怎么会发生。找到那条边需要O(V)时间

如果不这样做,并且添加一条已经存在的边,则该边将有重复的条目,这意味着它们可能具有不同的权重,等等


谁能解释一下我似乎遗漏了什么?谢谢

你的复杂性分析是对的。找出是否已经存在的边真的是O(V)。但请注意,添加此边(即使存在)仍然是O(1)

您需要记住,如果有两条边具有相同的源和目标,则它们是图形的有效输入,即使权重不同(可能不是偶数,而是因为)


向邻接列表图添加边的方法是O(1)

人们通常所做的是既具有最佳搜索时间复杂性,又具有邻接列表的优点,即使用哈希集数组而不是列表数组

或者

如果您想要最坏情况下的最佳解决方案,请使用RadixSort命令 列出O(v+e)时间内的所有边,删除重复项,然后生成 邻接列表以通常的方式表示

资料来源: