2点之间的最短路线,也通过其他几个预定点中的1个

时间:2018-04-05 02:34:52

标签: php algorithm math graph-algorithm

我正努力找到问题的确切答案。我有20乘20格。我正在寻找一个PHP代码示例,公式或正确的算法名称,以找出以下内容:

  • 两个点之间的最短路线,也通过其他几个预先确定的点之一
  • 路线不必返回到最后的原点
  • 允许路径在单元格之间对角传递
  • 设置了来源和目的地

所以说我的网格水平从A到T,垂直从1到20。我希望计算从我的原点A5到目的地G12的最短路线,同时根据最短的整体路线经过C7,D9,E5或J8。

此外,知道如何扩展它将会很方便,因此它不仅可以通过一个点,而且可能通过2点,然后到达目的地(G12)。

我已经搜索了2天,我的思绪正在与Dijkstra,TSP,BFS和其他人一起旋转!

三江源!

1 个答案:

答案 0 :(得分:1)

如果您可以直接跳到忽略整个网格的中间点,那么基本几何图形表明从点override func prepare(for segue: UIStoryboardSegue, sender: Any?) { super.prepare(for: segue, sender: sender) if segue.identifier == "category" { let senderButton = sender as! UIButton switch senderButton{ case attractionsButton: let user = attractions let controller = segue.destination as? CategoryListedViewController controller?.categoryList = user case eatingButton: //editing button scenario print("editing button scenario") default: //default code print("default scenario") } } } (tart)到点S(nd)的最短路径是通过所需的点{{ 1}}只是两个线段E并且计算它的总距离实际上非常快(它只是标准的欧几里德距离)。因此,除非您有数千个可能的中间点,只需检查所有路径ASA + AE,...并且比较距离将非常快。即使有两个中间点,并且游泳池的大小也只有十几个,但只有几百个组合,所以蛮力仍然会很快起作用。