多个2D点的最短路径

时间:2019-09-07 01:03:30

标签: python graph-theory path-finding

是否有一些清晰的算法可以在多个(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)
}

0 个答案:

没有答案
相关问题