Algorithm 从一系列边创建邻接列表的复杂性?

Algorithm 从一系列边创建邻接列表的复杂性?,algorithm,complexity-theory,performance,Algorithm,Complexity Theory,Performance,我正在创建一个算法,可以从边列表中构建邻接列表 例如,如果数据输入为: 1 2 1 8 2 8 3 5 3 1 4 5 4 6 5 2 5 9 6 4 6 8 7 4 7 10 8 4 8 6 9 4 9 5 10 7 10 3 产出将是: 1: 8 4 6 2: 4 6 3: 9 2 8 4: 2 9 8 5: 8 4 6: 5 4 7: 5 6 3 8: 5 6 4 9: 5 6 2 10: 4 5 1 该算法显然受顶点和边的数量限制,所以最初我认为它应该是O(v+e)。但我只能通过在带

我正在创建一个算法,可以从边列表中构建邻接列表

例如,如果数据输入为:

1 2
1 8
2 8
3 5
3 1
4 5
4 6
5 2
5 9
6 4
6 8
7 4
7 10
8 4
8 6
9 4
9 5
10 7
10 3
产出将是:

1: 8 4 6
2: 4 6
3: 9 2 8
4: 2 9 8
5: 8 4
6: 5 4
7: 5 6 3
8: 5 6 4
9: 5 6 2
10: 4 5 1
该算法显然受顶点和边的数量限制,所以最初我认为它应该是O(v+e)。但我只能通过在带有2d数组的for循环中实现for循环来让程序工作,我相信这会导致O(N^2)的复杂性


有人能帮我更好地理解吗?

这在很大程度上取决于您使用什么样的数据结构来存储从顶点到相邻顶点列表的贴图。在边列表中迭代当然会有时间复杂度O(e)。任何更大的时间复杂性都来自于在地图中查找顶点所需的时间,以及将新项插入顶点的相邻顶点列表所需的时间。如果使用平面数组,则可能会有O(v*e)复杂性(对于每条边,循环遍历顶点列表以找到所需的顶点),但通过使用哈希表或树数据结构,可以大大提高查找性能。

但O(v+e)甚至不是一个选项?