【发布时间】:2019-05-01 06:33:11
【问题描述】:
我正在准备即将参加的考试。提供给我的图表具有以下算法复杂性,针对具有 N 个节点和 E 条边的图的邻接列表进行了总结。
寻找边缘 - O(E/N)
插入边 - O(E/N)
删除边 - O(E/N)
枚举节点的边 - O(E/N)
我了解邻接列表是什么——我们通过使用列表数组来存储与每个顶点相邻的顶点。但是为什么这些操作是 O(E/N)?在我看来,如果我们绘制了一个图,其中绘制了所有可能的边(例如,如果图是无向的,我们有 n(n - 1)/2 条边),那么数组中的每个列表都会有 N - 1存储每个其他节点的条目
在我看来,这将是“最坏的情况”,不是吗?我不明白如何获得边与节点的比率。
谁能解释一下?
【问题讨论】:
-
因为平均而言,一个节点将有 E/N 条与该节点相关的边。
-
但我认为 big-o 正在考虑最坏的情况?
-
相同的符号有时用于平均情况和最坏情况。文字应该清楚地表明它是什么。