导航:首页 > 源码编译 > 网络防御路径优化算法代码

网络防御路径优化算法代码

发布时间:2024-11-10 18:41:07

㈠ A*算法优化

A算法是游戏中路径搜索的常见算法。Dijkstra是最短路径的经典算法,A算法的思路基本上和Dijkstra算法一致,在Dijkstra算法的基础上增加了启发函数,也就是:

f(n) = g(n) + h(n)

其中,n是路径上某一点,g(n)是从出发点到该点的cost,h(n)是关于该点的启发函数,通常是对从该点到目标花费的一个估计,例如到目标的直线距离或者曼哈顿距离。 A算法每次选择f(n)最小的点,然后更新所有g(n)。
如果你明白做源Dijkstra算法,那么在这里h(n) = 0 的话,A算法就和Dijkstra算法一样了。
本文不详细讲橘羡解A算法,需要详细了解A算法的具体过程的,参见以下两篇文章:

理解A*算法的具体过程
A*算法详解

A*算法优化的关键在于h(n)的选择。 一个启发函数h(n)被称为admissible的,是指h(n)的估计,不会超过节点N到目标的实际花费。
如果h(x)满足以下条件,h(x)被称为单调的(monotone, or consistent)。 对于任意一条边(x,y),
h(x) <= d(x,y) + h(y)
其中d(x,y)是(x,y)的长度

如果满足这个条件,就意味着没有任何节点需要被处理多次,也就是说,在Dijkstra算法中,新加入一个节点会导致已添加节点中cost降低的纯伍态情况不会存在,也就不需要去更新已添加节点(称为close set)。

如果一个启发函数是单调的,那么该启发函数一定是admissible的。如果该启发函数是admissible的,那么可以证明A*在同类算法中搜寻到最短的路径。

问题出在这里:如果我们更在意的是搜索的时间空间花费,而不是最优结果,那么A*算法就有优化空间。所以我们放松要求,修改我们的启发函数,使得我们搜寻到的路径不会比最佳路径差太多,就是优化算法,称为ε-admissible算法。

有多种ε-admissible算法,在此只举例最简单直接的一种: 加权A*(静态加权)算法。

假如ha(n)是一个admissible的启发函数,我们选取新的启发函数hw(n) = ε ha(n),其中ε>1 作为启发函数。就可以在某种程度上进行优化。 下图1是使用ha(n)作为启发式算法,下图2是使用hw(n)作为启发式算法,其中ε取5.

图1:ha(x)作为启发算法

图2:hn(x)作为启发算法

可以看出,ha(n)可以找到最小路径,但是多了许多无用的搜索;而hw(n)找到的不是最优路径,但是减少了大量无用搜索。
其他的优化算法思路类似都是在于启发函数的选择。详见参考文献。

参考文献:
https://en.wikipedia.org/wiki/A*_search_algorithm#Admissibility_and_optimality https://en.wikipedia.org/wiki/Consistent_heuristic

㈡ 经典的网络优化算法跟智能算法,哪个跟好些譬如Dijkstra算法和蚁群算法。

Dijkstra算法和蚁群算法是有着本质不同的,属于两个范畴了,前者是确定性算法,输入一个图,必定能产生一个可行结果。而后者是属于启发式算法,有随机因素。不一定能产生好的结果,但一般情况下由于存在启发式因素和智能因素,能够产生比较好的结果,但不能保证产生全局最优解。况且前者是一个针对性很强的算法,只能用于最短路径计算,而蚁群算法可以用来解决一大类问题,比如图算法、数值优化、数据挖掘等等。

阅读全文

与网络防御路径优化算法代码相关的资料

热点内容
有什么测身高的app安卓 浏览:364
通过买东西来解压 浏览:338
游戏运行文件解压到哪个盘 浏览:119
银行业务程序员要注意什么 浏览:390
怎么看压缩机牌子的 浏览:900
安卓手机怎么设置网址黑名 浏览:311
女超人全在哪个App可以看 浏览:393
可乐优品app图标长什么样子 浏览:870
iphone米家app怎么扫码 浏览:575
servqual具体算法 浏览:287
怎么在app关闭闪付 浏览:456
一个压缩文件能解压多久 浏览:573
如何在光遇中知道自己被拉黑安卓 浏览:664
c跨平台开发技术指南pdf 浏览:546
算法分析师就业人数图 浏览:820
安卓手机相册为什么看不到照片 浏览:328
linux如何更新python版本 浏览:359
pdf文件打马赛克 浏览:60
模板提高编译速度 浏览:146
ppt硬核训练营解压密码 浏览:584