为什么我们需要在各种图算法的上限中具有 V(顶点数)和 E(边数)的绝对值

Why do we need to have absolute values of V(number of Vertices) and E(Number of Edges) in upper bound of various Graph algorithms

我最近一直在阅读图算法,看到图算法的各种上界的表示法是 O(|V| + |E|) 的形式。特别是在 DFS/BFS 搜索算法中,线性时间高于上限。

我看到这两种符号可以互换使用,即 O(V+E)。据我了解“|”条形符号用于数学世界中的绝对值。如果 V = # of vertices 和 E = # of Edges,它们怎么可能是负数,以至于我们需要在计算线性函数之前获得绝对值。请帮忙。

在这种情况下,竖线 || 表示集合的基数或元素数(即 |E| 表示集合 E 中元素的数量)。

http://en.wikipedia.org/wiki/Cardinality

|X|指 X 为集合时 X 的基数(大小)。

O(V+E) 技术上 不正确,假设 V 和 E 指的是顶点和边的集合。这是因为 O( ) 中的值应该是定量的,而不是应用了模糊运算符的抽象对象集。 |V| + |E|被明确定义为一个数字加另一个数字,而 V + E 可能意味着很多事情。

然而,在非正式场景(例如通过互联网和面对面交谈),很多人(包括我)仍然说 O(V+E),因为基数集合是隐含的。我喜欢快速打字,不需要为了技术上的正确而添加 4 个竖线字符。

但是如果你需要在技术上是正确的,即你在一个正式的环境中,或者例如你正在写你的计算机科学论文,最好选择 O(|V|+|E|)。