求解算法,敬请各位指点

homerlu 2002-07-24 09:00:43
二维平面上存在包含A、B点在内的n+2个点,无序排列。现需求从A至B的最短路线,要求经过平面上所有n个点(A、B为始点、终点)。已知所有点都可两两直线连通
...全文
34 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
homerlu 2002-07-25
  • 打赏
  • 举报
回复
GGJJDDMM,是啊
我现在需要计算N=0-11的所有种情况.
zzwu 2002-07-25
  • 打赏
  • 举报
回复

n不大,来一次简单的穷举拉倒了.

例如,如果中间还有p1,p2,p3三个点,那就是计算

A-P1-P2-P3-B
A-P1-P3-P2-B
A-P2-P1-P2-B
A-P2-P3-P1-B
A-P3-P1-P2-B
A-P3-P2-P1-B

的路径长,取其最短者
homerlu 2002-07-25
  • 打赏
  • 举报
回复
怎么给分啊?
我点管理怎么仍然不让我给分?
homerlu 2002-07-25
  • 打赏
  • 举报
回复
我多少了解问题的境况了.
现在看来得到一个准确的最优算法不太可能.
也只能得近似算法,以我的上面的思路,从路径两边分别向前寻路,
可以比从一边单向寻路将精确度提高一倍,但同时时间代价也相应增加了一倍.
问:大家那位还有更好的算法或建议.
谢谢
  • 打赏
  • 举报
回复
如不考虑效率,可以把所有的走法都完成一遍,
一比越可,
所能走法,
IF 没通
LOOP

shotcut=min(shotcut ,curcut)
end
shotcut为最短
所有走法,只要所走的点序列不同,通通视为不同走法
homerlu 2002-07-24
  • 打赏
  • 举报
回复
wanbaocheng(www) 看了TSP算法的介绍,确实相似,但也不同.

以下是对这个问题我的思路,欢迎各位讨论:
在这里S=A,E=B.(START,END)
0.准备:将2+n个点组成一数组.S为首,E为末.
ARRAY[n+2],ARRAY[0]=A,ARRAY[n+1]=A;

1.比较S.E两点到各点的距离,共2N次,并求得其最短一条,
设此最短距离对应点M,
如果
M距离S近,则ARRAY[1]与M位置互换;
并将新的ARRAY[1](M)设为S;
如果
M距离E近,则ARRAY[N+1 - 1]与M位置互换;
并将新的ARRAY[N+1 - 1](M)设为E;
2.依次循环递归,直至最后两点.

这是我的简单思路,但此方法未曾证明,不知道合不合理,另外其他方法如何设计,谢谢各位.
homerlu 2002-07-24
  • 打赏
  • 举报
回复
呵呵,没关系,再来.

zzwu 2002-07-24
  • 打赏
  • 举报
回复
对不起,题目看错了. 上面的作废!
zzwu 2002-07-24
  • 打赏
  • 举报
回复
方法:

把起点A与终点B直接连起来,一步就完成!
zzwu 2002-07-24
  • 打赏
  • 举报
回复
方法:

把起点A与终点B直接连起来,一步就完成!
homerlu 2002-07-24
  • 打赏
  • 举报
回复
up
homerlu 2002-07-24
  • 打赏
  • 举报
回复
多谢指教,但是我不是太明白,您所说的相关算法我只是听说过,还没接触:(
能否给点其他提示.谢谢.我会去看你说的算法的.

wanbaocheng 2002-07-24
  • 打赏
  • 举报
回复
这是TSP问题的变形,也是NP难问题,是不存在多项式时间复杂度的算法的。
不过可以用启发式算法:最近插入法,局部搜索法,遗传算法,模拟退火算法等等。
homerlu 2002-07-24
  • 打赏
  • 举报
回复
不好意思,我的这个思路已经被证反,请大家想想其他办法


回复人: homerlu(碧水澄月) ( ) 信誉:100 2002-07-24 12:37:00 得分:0


wanbaocheng(www) 看了TSP算法的介绍,确实相似,但也不同.

以下是对这个问题我的思路,欢迎各位讨论:
在这里S=A,E=B.(START,END)
0.准备:将2+n个点组成一数组.S为首,E为末.
ARRAY[n+2],ARRAY[0]=A,ARRAY[n+1]=A;

1.比较S.E两点到各点的距离,共2N次,并求得其最短一条,
设此最短距离对应点M,
如果
M距离S近,则ARRAY[1]与M位置互换;
并将新的ARRAY[1](M)设为S;
如果
M距离E近,则ARRAY[N+1 - 1]与M位置互换;
并将新的ARRAY[N+1 - 1](M)设为E;
2.依次循环递归,直至最后两点.

这是我的简单思路,但此方法未曾证明,不知道合不合理,另外其他方法如何设计,谢谢各位.



homerlu 2002-07-24
  • 打赏
  • 举报
回复
dear,研究算法不可能不考虑效率,尤其这种不考虑空间代价的,就只能考虑算法的复杂度和时间代价了.
同样谢谢你.

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧