基于偏好的有向图的路径搜索问题的研究.docx

基于偏好的有向图的路径搜索问题的研究.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

?

?

基于偏好的有向图的路径搜索问题的研究

?

?

赵晓东陈思宇方欢

摘要:目前,路径搜索问题在生活中的很多领域都能得到应用。生活中存在很多可转化为如下表述的实际问题:有向图图中边的权值是一个区间[a,b],其中a表示最小代价b表示最大代价,根据个人偏好给出各边的偏好因子和一个目标值F,找出从源点到汇点的所有路径中,满足边的偏好权重值之和p

关键词:有向图;偏好;路径搜索;深度优先;路径优化

:TP311:A:1009-3044(2017)07-0192-03

1背景

路径搜索问题在很多领域都有其研究的价值,很多问题最终都可以转化为图的路径搜索问题。常见的路径搜索算法有:Dijkstra算法、BSF算法、A*算法等。Dijkstra算法是通过中心为起点,以辐射状不断向中心外搜索(每次取距离起点最近的点),一圈一圈向外扩张,直到逼近目标点,完成路径搜索,它较能适应网络拓扑的变化、性能较稳定等;BSF算法每次扩张节点,都是通过启发函数选择最接近目标的节点,最终完成搜索;A*算法兼具Dijkstra准确和BSF的快速,在搜索路径时,通过启发式函数计算当前节点到目标节点的距离,而起始点到当前点距离已知,则每次选择初始点到目标点的代价估计最小的节点,A*算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。A*算法中的距离估算值与实际值越接近,最终搜索速度越快。以上算法都是用来求解最短路径搜索问题,大多数研究者也都是对最短路径搜索问题在不同领域进行研究。

在实际生活中,人们往往会遇到做一件事情的代价在一定范围内波动的问题,将这种问题转化为图的问题进行解决,即是图中边上的权值在一定区间范围内,于是引入权重区间来表示图中边的权的取值范围。对于同一件事情有不同的解决方法,由于各种因素导致对于不同的方法有着不同的倾向,于是将问题转化为图的问题后引入偏好因子用来衡量个人对边的倾向程度,表示对该边的倾向占整体的比例。实际问题中由于某些因素的限制,会使得问题的处理具有一定的局限性,即便问题的处理具有多样性,但是还是需要根据实际来选择解决的方法,将这种问题转化为图的问题引入偏好权重来表示解决问题的方法中根据代价的范围以及倾向程度决定的带入计算的具体的值。通过改进深度优先搜索算法,根据各边的偏好因子和权重区间确定偏好权重,在有向图环境下搜索出所有满足目标值条件的路径,并很容易得到最短路徑。

2改进的深度优先路径搜索方法

2.1深度优先搜索{DFS}

假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先搜索可定义如下;首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。若此时图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复上述过程,直至图中所有顶点均已被访问为止。算法流程如图1所示。

2.2改进的深度优先搜索及具体求解过程

由于采用深度优先搜索只能得到一条路径,为了解决上述问题得到所有满足条件的路径,于是对深度优先搜索做如下修改。

设x是当前被访问顶点,在对x做过访问标记后,选择一条从x出发的未检测过的边(x,y)。若发现顶点y已访问过,则重新选择另一条从x出发的未检测过的边,否则沿边(x,y)到达未曾访问过的y,对y访问并将其标记为已访问过;然后从y开始搜索,直到搜索完从y出发的所有路径,即访问完所有从y出发可达的顶点之后,才回溯到顶点x,并且再选择一条从x出发的未检测过的边。上述过程直至从x出发的所有边都已检测过为止。此时,若x不是源点,则回溯到在x之前被访问过的顶点;否则图中所有和源点有路径相通的顶点(即从源点可达的所有顶点)都已被访问过,若图G是连通图,则遍历过程结束,否则继续选择一个尚未被访问的顶点作为新源点,进行新的搜索过程。

满足目标值的搜索算法的伪代码如下所示:

访问顶点V0;visited[V0]=1;

W=顶点V0的第一个邻接点;

While(W存在){

if(W未被访问andW非栈顶结点)从顶点W出发进行深度优先搜索;

else(W为栈顶结点)

弹出栈计算路径偏好权重;

if(符合目标值)输出路径及总代价

else舍弃路径

W=顶点V0的下一个邻接点;

}

下面将通过一个具体的例子来说明满足目标值的搜索过程。有向图相关数据见图2、表1、表2所示。

根据各边的偏好因子以及权重区间得到各边的偏好权重,如表3所示,偏好权重的计算方式如下:

假设边的权重区间为[a,6],边的偏好因子为d,则边的偏好权重w为:

当偏好因子的取值范围为0-1时,偏好权重取值范围为a-6。

根据图1所

文档评论(0)

151****1898 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档