繁体   English   中英

完全加权图和哈密尔顿之旅

[英]Complete Weighted Graph and Hamiltonian Tour

我在期中考试时遇到了一个问题。 任何人都可以澄清答案吗?

问题A:给定一个完整的加权图G,找到一个最小权重的汉密尔顿游。

问题B:给定一个完整的加权图G和实数R,G是否具有最多R的哈密顿量程?

假设有一台机器可以解决B.我们可以多少次调用B(每次给出G和实数R),用该机器解决问题A? 假设G中边缘的总和达到M.

1)我们不能这样做,因为有无数的状态。

2)O(| E |)次

3)O(lg m)次

4)因为A是NP-Hard,这是不可能做到的。

第一种算法

答案是(3) O(lg m) times 你只需要在加权图中对最小哈密顿旅行进行二分搜索。 请注意,如果在图表中存在长度为L的汉密尔顿之旅,那么检查是否存在长度为L'的哈密尔顿之旅(其中L' > L是没有意义的,因为您对最小权重哈密尔顿之旅感兴趣。 因此,在算法的每个步骤中,您可以消除剩余一半可能的游览权重。 因此,您必须在机器中调用B O(lg m)次,其中m代表完整图中所有边的总重量。


编辑:

第二种算法

我稍微修改了上面的算法,它使用机器O(|E|)次,因为有些人说我们不能在一组不可数的可能值中应用二进制搜索(它们可能是正确的):尽可能来自图的边缘子集,并且对于每个子集存储一个值,该值是来自子集的所有边的权重之和。 让我们将所有子集的值存储在名为Val的数组中。 此数组的大小为2^|E| 按递增顺序对Val进行排序,然后对最小哈密顿路径应用二进制搜索,但这次只使用Val数组中的值调用解决问题B的机器。 由于每个边缘子集都包含在已排序的数组中,因此可以保证找到解决方案。 机器的调用总数是O(lg(2^|E|)) ,即O(|E|) 因此,正确的选择是(2) O(|E|) times


注意:

我提出的第一个算法可能不正确,因为有些人指出你不能在不可数集中应用二进制搜索。 由于我们在讨论实数,我们不能在[0-M]范围内应用二进制搜索

我认为那个意味着答案的选择是1-你不能那样做。 原因是你只能对可数集进行二进制搜索。

请注意,图形的边缘甚至可能具有负权重,此外,它们可能具有分数或甚至无理的权重。 在这种情况下,答案的搜索空间将是小于m的所有实际值的集合。

但是,您可能会在Log(n)时间内任意接近A的答案,但您无法找到确切的答案。 (n是可数空间的大小)。

假设在图的编码中,权重被编码为表示非负整数的二进制字符串,并且Problem B实际上可以通过输入实数在算法上求解并基于此进行计算,事情显然如下。

可以在积分区间{0,...,M}上进行第一次二分搜索{0,...,M}以获得对Problem B的算法的O(log M)调用中的哈密顿量巡回的最小权重。 随后最佳已知,我们可以消除G单个边缘,并使用结果图作为Problem B的算法的输入,以测试最佳变化。 此过程使用对Problem B的算法的O(|E|)调用来识别在最佳哈密顿游览中出现的边。 该方法的总运行时间是O( (|E| + log M ) * r(G)) ,其中r(G)表示将图G作为输入的Problem B的算法的运行时间。 我认为r是一个多项式,虽然问题没有明确说明这一点; 总的来说,总运行时间将在输入的编码长度中被多项式限制,因为M可以在多项式时间内计算(因此在输入G的编码长度中是伪多项式限制的)。

话虽如此,所谓的答案可以如下评论。

  1. 答案是错误的,因为必要状态的集合是有限的。
  2. 可能是真的,但不遵循上面讨论的算法。
  3. 可能是真的,但不遵循上面讨论的算法。
  4. 答案是错的。 严格来说, Problem ANP-硬度并不排除多项式时间算法; 此外, Problem B的算法没有说明是多项式的,所以如果Problem A可以通过对Problem B的算法的多项式调用来解决,则即使P=NP不会出现 (这是上面描述的算法的情况) )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM