python - 2 opt swap算法复杂度
问题描述
def two_opt(route):
best = route
improved = True
while improved:
improved = False
for i in range(1, len(route)-2):
for j in range(i+1, len(route)):
if j-i == 1: continue # changes nothing, skip then
new_route = route[:]
new_route[i:j] = route[j-1:i-1:-1] # this is the 2woptSwap
if cost(new_route) < cost(best):
best = new_route
improved = True
route = best
return best
这个算法的时间复杂度是多少?这是 2 opt 交换算法
解决方案
从我的解释来看,它将是比较所有边缘 O(N^2) 的嵌套 for 循环,并且每次发现改进时,都这样做。上)。总共 O(N^3)。
推荐阅读
- tfs - 在“日志”选项卡中显示发布控制台输出
- javascript - 如何使用 GeoJSON 线串在 Leaflet 中使用折线装饰器?
- visual-studio-code - VS 代码自动更正
- jquery - Jquery DataTable 的单个对象
- google-apps-script - 可点击的菜单 Google 表格脚本
- jquery - jQuery Ajax 响应给我我的 index.html
- c# - 如何投射查找的TElement;即 ILookup
到 ILookup ? - python - Web2Py 管理界面中的异常错误
- node.js - Nodejs multer-sftp文件上传问题
- sql-server - 如果 AlwaysOn 可用性组中的一个数据库出现故障,是否会启动故障转移?