![](https://csdnimg.cn/release/download_crawler_static/85257967/bgd.jpg)
- 13 -
改良圈算法、模拟退火算法、遗传算法、贪心算法、人工神经网络等方法
[6]
。
5.3.1 改良圈算法
在此,我们采用一个较好的近似算法:改良圈算法,以获得“相当好”(但
不一定最优)的解。
下面给出求解近似最优
Hamilton
圈的改良圈算法基本思路:
Step1
构造一个图 ()GV,E ,其中
为各顶点矩阵,
为两两景点间权值矩
阵。任意选定一点
0
v 作为起点,在图内搜索与
0
v 直接相连且权值最小的边
1
e
,
同时确定另一端点
1
v
,即得一条路径
10
vv 。
Step2
假设已选出路径为
i
vvv ...
10
,则下一个顶点选取方法为搜索与
i
v
最邻
近的
1i
v
点,从而增加路径为
110
...
ii
vvvv
。
Step3
计数部分,若
11
ni
,则用
i
代替
1
i
,重复 Step2;否则,即说
明已经到达所有顶点,可进行对起点
0
v
的返回,停止程序运行。
上述最邻近算法得到近似最优的 Hamilton 圈最大的问题为一般不能得到
最优解,需对此方法进行改良,称为改良圈算法
[7]
。
设
121
... vvvvC
n
为图
G
的一个 Hamilton 圈,且圈内均满足
nji
11
的
i
,
可进行改良算法的计算:在
C
搜索在
i
时使得
)(GEvv
ji
,
)(
11
GEvv
ji
且存在:
1111
jjiijiji
vvvvvvvv
eeee
则可建新改良圈:
11121
......... vvvvvvvvC
njiji
同理,用
C
代替
C
重复上一步骤,直至各点均历经。
5.3.2 改进改良圈算法
改良圈算法在相比原输入序列的情况下可以得到适当的路径优化,但经常
无法第一次即得出最优解,需要多次改变初始数组顺序进行最小值筛选。因此,
需考虑对该改良圈算法进行优化,基于上述讨论过程可知,改良圈算法为基于
初始给定序列顺序圈附近进行优化,也正是造成其初值敏感性强的重要原因,
因此可将经历过一次改良结果的数据重新传入程序中,并赋值为新改良过程的
初值,并进行循环处理。具体步骤如下: