令为边上的随机图。具有很高的概率,有很多周期。我们的目标是尽快输出这周期中的任何一个。
假设我们能够以邻接表的形式访问,我们可以在时间内以恒定的概率成功,如下所示:选择任意节点并开始生成从开始的随机路径;一旦找到共享端点的两个不同的路径,就完成了。有可能的端点,并且通过生日悖论,我们在发现后将以恒定的概率成功。
我们可以做得更好吗?特别是,可能以恒定概率成功的恒定时间算法吗?
令为边上的随机图。具有很高的概率,有很多周期。我们的目标是尽快输出这周期中的任何一个。
假设我们能够以邻接表的形式访问,我们可以在时间内以恒定的概率成功,如下所示:选择任意节点并开始生成从开始的随机路径;一旦找到共享端点的两个不同的路径,就完成了。有可能的端点,并且通过生日悖论,我们在发现后将以恒定的概率成功。
我们可以做得更好吗?特别是,可能以恒定概率成功的恒定时间算法吗?
Answers:
不,您无法击败查询。我将解释如何以一种适用于自适应算法的方式形式化专家的证明草图。专家的回答都可以预料到这一切;我只是填写一些细节。
考虑发布一个查询序列的任何(可能是自适应的)算法,其中每个查询要么是“获取顶点的第个边缘的邻接列表”,要么是“测试顶点是否由边缘连接”。我们可以假设没有重复查询,因为任何重复查询的算法都可以转换为永不重复任何查询的算法。同样,我们可以假设该算法从不对已知已通过边连接的任何一对顶点执行连通性查询(即,当先前由的获取查询返回时,测试,或者为先前由上的提取查询返回,或者我们之前测试了连通性。
令表示以下事件:在前查询期间,一个以上的访存查询未返回任何顶点,并且没有访存查询返回了先前查询过的顶点,并且没有连通性测试查询返回“已连接” ”。如果,我们将证明。由此可见,进行查询的算法都不可能具有找到4周期的恒定概率。
我们如何证明这一点?让我们计算。有两种情况:第个查询是访存查询,或者它是连通性测试查询:
如果第个查询是对顶点的提取查询,则在前查询中提到个顶点,如果第个查询返回其中一个,则我们将有,否则我们将拥有。现在,对第个查询的响应均匀地分布在集合的顶点上,其中包含上先前的取回查询尚未返回的所有顶点,因此对第个查询的响应均匀分布在集合上大小至少为。碰到其中至少一个的概率为,因此在这种情况下,。
如果第个查询是连通性测试查询,则。
在任一情况下,如果,我们有
现在,
如果,则
所以
右侧大约为。当,这是。
结论:当。因此,您需要具有找到任何周期(更不用说4个周期)的恒定概率。
假设我们只能查询给定顶点的邻接表的第个边缘(我假设它没有排序),或者是否查询两个给定顶点是否相邻。在这种情况下,应该使用查询来查找一个循环。这是因为我们有一种机会,所有我们第一种类型的查询都返回不同的顶点,而我们所有第二种类型的查询都返回了两个顶点未连接的情况。
如果我在某个地方有错误或误解了问题,请纠正我。