如何解决TSP 上的时间复杂度
我正在尝试使用贪心算法和前瞻算法分析 TSP 问题的每个步骤的时间复杂度。
如果有人能检查我在每个步骤中应用的逻辑是否适合构建时间复杂度,那就太好了。
对于贪心算法,我有:
迭代次数:最多 n 次迭代(n:nº 个位置)
-
选择成本最低的可用弧 (i,j) n log n 个操作 并将此弧标记为不可用 1 操作
-
将所有从位置 i 或到位置 j 的弧标记为不可用 1 操作
-
将所有弧标记为不可用,如果有多个弧可用,这可能会导致子循环。 1 次操作
-
如果还有可用的弧,检查最大。 n 个地点 回到1。
时间复杂度 n * ( n log n + 1 + 1 + 1 + n) --> n^2 log n + n^2 + 3n --> O(n^2 log n)
对于Look-Ahead 算法,我已经尝试过:
迭代: n 次迭代(n:nº 个位置)
-
对于每一行和每一列,n*n 个位置 确定具有最小和次小的成本的可用弧,1 次操作 和相应的成本差异,分别。 1 次操作
-
选择成本差异最大的行或列,并在该行或列中选择成本最低的可用弧(i,j)1次操作 并将此弧标记为不可用 1 操作
-
将位置 i 或位置 j 的所有弧标记为不可用 1 操作
-
将所有弧标记为不可用,这可能导致子循环。 1 次操作
-
如果仍然有更多的弧线可供选择,请返回 1 检查 n 个位置 否则:选择剩余的弧。 1 次操作
时间复杂度 n * ( n*n + 1 + 1 + 1 + 1 + 1 + 1 + n + 1) --> n^3 + 8n + n^2 --> n^3 --> O(n ^3)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。