题解 P7812 Dark Forest
1
全排列。
2
写了一个丢人的
3
大眼观察不难得到结论:当
遗传应该比较难过,跑一晚上没准能过呢(
4~5
给退火的(我本机用退火跑 1s 造的数据,但是用退火过掉这两个点却很困难,不知道为什么)。
6~10
本来想给裸的遗传一点部分分的,然后发现裸的遗传比退火还差。
这些点是给遗传的。
定义“基因”为排列
其实我写的也不算遗传(我用 TSP 尝试了下交配,发现并不比用大量变异代替交配优秀,另外多种群遗传也不比这个优秀),就是每次让每个基因变异生成
同时采取保留精英策略,把父辈中的最优秀基因完整复制到下一代中。
但这样仍然不足以通过本题,还需要一个优化:因为遗传局部收敛比较慢,所以改良上面的保留精英策略,把父辈中的最优秀基因先变异一次,然后对它爬山,爬山
在测试 TSP 问题的时候,同样跑 10s,退火和爬山均是 28w 左右(路线总长),遗传是 25w 左右,上面的做法可以去到 16w 左右。
没有实现粒子群和蚁群,不知道能不能通过本题。
物竞天择,适者生存,这才是题目真正的意义。
代码不放了,需要者私信。