python - 多个二维点上的最短路径
问题描述
是否有一些明确的算法可以在多个(50-100)2D 点上构建最短的单路径?我的代码现在只创建所有可能的点对并按它们之间的距离对它们进行排序(也找到了一些路径,但结果还是错误的),这就是我停止的地方。我猜这叫做旅行商问题,仍然不知道它是如何解决的。
- 路径可以从任何点开始(另外最好有需要起点的算法)。
- 边缘可以以任何方式相互交叉。
- 路径可能是循环的。
- 每个点必须只访问一次。
输入示例:
data = \
{
'use826' : (2847.8216, -2684.7392),
'use828' : (3084.755, -2405.0912),
'use830' : (3076.3209, -2601.099),
'use832' : (2640.6552, -3276.4813),
'use825' : (4203.8915, -2631.0695),
'use827' : (3488.6186, -1911.4069),
'use829' : (3967.5091, -2306.3344),
'use831' : (4608.4849, -2543.0039),
'use833' : (3738.085, -2558.4143),
'use835' : (4587.6737, -2103.5679),
'use837' : (3853.6183, -2031.5337),
'use839' : (3922.8349, -1902.1021),
'use841' : (4009.2469, -2900.3685),
'use843' : (4494.0819, -1561.8019),
'use845' : (3979.8622, -1666.955),
'use847' : (3794.5993, -1432.1888),
'use849' : (4720.4179, -1664.6266),
'use851' : (3778.1488, -2993.7347),
'use853' : (3206.4287, -2821.2921),
'use855' : (2998.8622, -2017.08),
'use857' : (2633.3272, -1940.517),
'use859' : (3050.3445, -1724.1992),
'use861' : (4382.4229, -1330.3753),
'use863' : (3162.013, -942.60612),
'use865' : (4377.4605, -789.03192),
'use867' : (4823.0815, -3493.3768),
'use869' : (1770.0685, -3489.3226),
'use871' : (1838.671, -3141.7945),
'use846' : (3495.526, -5519.6035),
'use848' : (3967.7469, -4777.4685),
'use850' : (2802.4209, -6180.7663),
'use852' : (2326.2043, -4984.3239),
'use854' : (3352.2024, -6437.9083),
'use856' : (3653.2145, -4427.3605),
'use858' : (5781.6893, -6258.1416),
'use860' : (4435.9003, -5095.2394),
'use862' : (5061.0899, -6975.1303),
'use864' : (3114.1242, -4537.4805),
'use866' : (3896.3969, -5194.2308),
'use868' : (4323.8934, -4406.9115),
'use870' : (5653.7428, -5036.3394),
'use872' : (4321.7852, -5511.5559),
'use874' : (5626.0947, -5603.8763),
'use876' : (6271.3207, -5762.3393),
'use878' : (4967.0411, -5993.336),
'use880' : (4958.347, -5118.1762),
'use882' : (5240.4535, -5901.5248),
'use888' : (5534.7647, -2947.2948),
'use890' : (3656.9612, -6853.8227),
'use892' : (3562.2834, -3552.0658),
'use894' : (5386.1129, -4446.1217),
'use896' : (3910.0082, -7113.1804),
'use898' : (5157.5199, -4759.4803),
'use900' : (3572.0501, -3141.5484)
}
解决方案
推荐阅读
- c# - 基础设施 - 同步和异步接口和实现?
- jquery - jQuery 选择器的问题(附加后)
- javascript - 如何以同步方式从js中的URI获取数据
- scala - Spark Scala:如何删除每行周围的双引号,包括标题?
- angular7 - Angular 7:类型'ElementRef'不是通用的
- wordpress - 将值从选择控件传递给函数
- css - 一些 gmail 客户端完全忽略了大纲 css
- c# - 如何创建 Firebird 数据库用户并授予该用户一些权限
- angular - 角度材料选择不会检测到嵌套组件生成的选项的更改
- reactjs - 如何验证单击的文本是否已格式化?