是否可以在带有循环和负边的无向图中使用BFS(使用遍历最小顶点)在O(log n)时间内从源中找到目的地?
对于前: 给出一个简单的连通图G,其中有N个顶点和N个边(一个简单的图是一个没有循环且在任意两个不同顶点之间不超过一条边的无向图)。 很明显,图G只包含一个周期,你可以假设这个周期的长度是奇数(这个周期中有奇数个顶点)。 顶点从1到N编号。每个边被分配相应的整数权重。 您的任务是激发两种类型的查询: 更新由f u v表示的查询:从顶点u到顶点v更改最短路径上边缘的所有权重的符号(稍后可以看到此问题中最短路径的定义)。 查找以?表示的查询? u v:在从顶点u到顶点v的最短路径上,找到(可能为空)一组连续边,使得权重之和最大。换句话说,让我们将从u到v的最短路径定义为a_1,a_2,...,a_k(其中a_1 = u和a_k = v)。您必须找到a_i和a_j,使得i <= j并且路径a_i,a_(i + 1),...,a_j的边缘的权重之和尽可能大。你只需要找到这笔钱。 两个顶点u和v之间的最短路径是将它们与最小数量的顶点连接起来的路径。在这个问题中,显然在G的任何一对顶点之间只有一条最短路径。
答案 0 :(得分:5)
让G
成为顶点集V
和边集E
的图表。然后,广度优先搜索(BFS
)最差情况下的时间复杂度为O(|V|+|E|)
。时间复杂度为O(|V|+|E|)
,因为在最坏的情况下访问每个顶点和边。复杂度O(| E |)可以在 O(| V |)和 O(| V 2 |)之间变化。在稀疏图的情况下,复杂度将近似 O(| V |),并且在密集图的情况下,复杂度将近似 O(| V 2 |)即可。
答案 1 :(得分:3)
BFS的时间复杂度为O(| E |)。
O(logn)要求以某种方式对图表进行排序。