【问题标题】:Big O time complexity for TSPTSP 的大 O 时间复杂度
【发布时间】:2021-08-30 01:38:14
【问题描述】:

我目前正在阅读这篇文章 - https://core.ac.uk/download/pdf/154419746.pdf,并对算法 1 的 O(n^2 * 2^n) 时间复杂度如何计算感到困惑。有人可以解释一下吗?本来以为是Bellman-Held-Karp算法,但是好像和普通的伪代码有点不一样。

【问题讨论】:

  • 我想你的意思是 O(2^n * n^2),对吧?
  • 哦,谢谢提醒
  • 我不认为这是一个编程问题。你最好在计算机科学或数学 SE 网站上问这个问题。

标签: pseudocode traveling-salesman


【解决方案1】:

完整的算法实际上是 O(n^3 * 2^n)。您给出的复杂度是计算 n 个问题所需的复杂度。但是我们可以通过直接查看代码来找出复杂性来自何处。 我们的第一个循环是这样的:

foreach w in V do
    …
end do

这完全是在 n 个步骤中完成的。 我们可以忽略这一点,因为第二个循环要复杂得多(如果您添加两个复杂性,更复杂的一个会获胜) 有四个嵌套循环,这意味着我们需要将单个复杂度相乘。除了一个之外,所有这些都是 O(n): for i=2,…|V| 很明显,因为我们迭代了 V 中的所有元素减一 foreach w in Sforeach u in S:两者都包含足够的元素来满足 O(n) 的要求(在第一次迭代中,1,然后是 2,然后是 4,等等) 最后我们有for each subset S of V where the size of S is i 。这是组合数学,但有 2^n 个元素是这样的。

【讨论】:

  • 很好的解释!顺便说一句,您知道这是 Bellman-Held-Karp 算法还是 TSP-D 首次通过算法?读完整篇文章,我对这部分感到很困惑
  • 我不太确定,但我不认为“TSP-D first pass”是一种实际的算法。您正在查看的是(我认为)Bellman-Held-Karp 算法。 TSP-D 简单描述了问题(用无人机旅行推销员)
猜你喜欢
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多