level 1
我爱舞女泪
楼主
今天在书上终於找到一个更好的算法,叫等高算法,实现的思路是:先由终点向四周出发,标识出步数,直到起点为止,再由起蹼,找标识出来的步数最小的坐标行走,就是最短路迳。如图,要从★点走到☆点┏━━━━━━━━━━━━━━━━━┓┃□□□□■■■■□□□□□□□□□┃┃□☆□□■■■■□□□□□□□□□┃┃□□□□■■■■□□□■■□□□□┃┃□□□□■■□□□□■■□□□■■┃┃■□□□■■□□□■■□□□■■■┃┃■□□□□□□□■■□□□■■■■┃┃■□□□□□□■■□□□■■□□□┃┃■□□□□□□■■□□□■■□□□┃┃■■■■■■■■■□□□□□□□□┃┃■■■■■■■■□□□□□□★□□┃┃■□□□□□□□□□□□□□□□□┃┗━━━━━━━━━━━━━━━━━┛由终点向四周标识出行走步数,直到到达起点为止,如图┏━━━━━━━━━━━━━━━━━┓┃ 2 1 2 3■■■■1617
18192021222
324┃┃ 1☆ 1 2■■■■
15161718192
0212223┃┃ 2 1 2 3■■■■141516■■21222324┃┃ 3 2 3 4■■11121314■■232223■■┃┃ 4 3 4 5■■101112■■252423■■■┃┃■ 4 5 6 7 8 910■■272625■■■■┃┃■ 5 6 7 8 910■■292827■■□□□┃┃■ 6 7 8 91011■■302928■■□□□┃┃■■■■■■■■■3
13029303132
□□┃┃■■■■■■■■□3231303132★□□┃┃■□□□□□□□□□323132□□□□┃┗━━━━━━━━━━━━━━━━━┛再起点,找所标识出来的步数最小的路迳行走,为了直观,我把其它位置上的步数清除了┏━━━━━━━━━━━━━━━━━┓┃□□□□■■■■□□□□□□□□□┃┃□☆□□■■■■□1617181920□□□┃┃□ 1 2 3■■■■1415□■■21□□□┃┃□□□ 4■■□1213□■■2322□■■┃┃□□□ 5■■1011□■■□24□■■■┃┃■□□ 6 7 8 9□■■□2625■■■■┃┃■□□□□□□■■□□27■■□□□┃┃■□□□□□□■■□□28■■□□□┃┃■■■■■■■■■□□293031□□□┃┃■■■■■■■■□□□□□32★□□┃┃■□□□□□□□□□□□□□□□□┃┗━━━━━━━━━━━━━━━━━┛当然,在有些地方,不是唯一的,如1到4,9到16,21到26,29到32(从第二个图中可以看出),但这不影响找出的路迳是否为最短路迳的正确性。这个算法中,标识出行走步数的算法,需要优化,因为,大家可以注意到,从起始点到达终点,只需走32步,但在第二个图中,我们开始并不知道有多少步,所以有很标步骤是多馀,书上是用两个堆椎,交替实现,速度提高不少,但我没看懂,没理解到它的意思,它也没讲详细,所以我也没办法讲给大家。此算法有源码,要的留下邮箱!
2007年03月11日 14点03分
1
18192021222
324┃┃ 1☆ 1 2■■■■
15161718192
0212223┃┃ 2 1 2 3■■■■141516■■21222324┃┃ 3 2 3 4■■11121314■■232223■■┃┃ 4 3 4 5■■101112■■252423■■■┃┃■ 4 5 6 7 8 910■■272625■■■■┃┃■ 5 6 7 8 910■■292827■■□□□┃┃■ 6 7 8 91011■■302928■■□□□┃┃■■■■■■■■■3
13029303132
□□┃┃■■■■■■■■□3231303132★□□┃┃■□□□□□□□□□323132□□□□┃┗━━━━━━━━━━━━━━━━━┛再起点,找所标识出来的步数最小的路迳行走,为了直观,我把其它位置上的步数清除了┏━━━━━━━━━━━━━━━━━┓┃□□□□■■■■□□□□□□□□□┃┃□☆□□■■■■□1617181920□□□┃┃□ 1 2 3■■■■1415□■■21□□□┃┃□□□ 4■■□1213□■■2322□■■┃┃□□□ 5■■1011□■■□24□■■■┃┃■□□ 6 7 8 9□■■□2625■■■■┃┃■□□□□□□■■□□27■■□□□┃┃■□□□□□□■■□□28■■□□□┃┃■■■■■■■■■□□293031□□□┃┃■■■■■■■■□□□□□32★□□┃┃■□□□□□□□□□□□□□□□□┃┗━━━━━━━━━━━━━━━━━┛当然,在有些地方,不是唯一的,如1到4,9到16,21到26,29到32(从第二个图中可以看出),但这不影响找出的路迳是否为最短路迳的正确性。这个算法中,标识出行走步数的算法,需要优化,因为,大家可以注意到,从起始点到达终点,只需走32步,但在第二个图中,我们开始并不知道有多少步,所以有很标步骤是多馀,书上是用两个堆椎,交替实现,速度提高不少,但我没看懂,没理解到它的意思,它也没讲详细,所以我也没办法讲给大家。此算法有源码,要的留下邮箱!