在我的算法分析课程中,老师教我们 Breath First Search 的时间复杂度是 O(V+E),但现在在人工智能课程中,老师说 BFS 的复杂度是 O(b^d)。当我问他问题时,他给了我一个逻辑理由,即“在理论计算机科学中,O(V+E) 是合适的,因为图是一个明确的数据结构,是输入到搜索算法中的。在人工智能中,图通常由初始状态、动作和转换模型隐含地表示,并且经常是无限的。因此,复杂度用 O(b^d) 表示。”现在我有两个问题:
- O(V+E) 和 O(b^d) 如何相等,第一个看起来是线性复杂度,第二个是指数复杂度。
- 当我们谈论大 O 符号时,它意味着无论输入如何,上限都应该保持不变,因为它是一个上限。是否只处理一些有限的数据输入?