基于地理网络的最短路径并行双向搜索通信方法

文档序号:6397579阅读:245来源:国知局
专利名称:基于地理网络的最短路径并行双向搜索通信方法
技术领域
本发明属于最短路径并行双向搜索通信技术领域,尤其涉及一种基于地理网络的最短路径并行双向搜索的通信方法。
背景技术
最短路径问题是图论研究中的一个重要课题,自它被提出便得到各个领域的广泛的关注。因为它不仅是交通运输问题中的热点,而且在网络分析中起着关键的作用。应用领域包括网络优化、物流配送、交通运输、电子导航等。自从最短路径问题被提出,经历几十年的研究,研发出大量的搜索方法,建立起较为完善的理论体系。然而随着真实地理网络(具有地理属性的网络)规模越来越大,处理的数据量也急剧增大,传统最短路径串行搜索的性能已经不能满足现实需求。近年来随着计算机硬件的不断发展,并行计算技术的不断推广,使得并行计算成为解决传统串行计算效率不高及内存受限的有效方法。其中最短路径并行双向搜索,大幅提升原有最短路径串行搜索的效率。利用最短路径并行双向搜索的通信方法如图1所示,最短路径并行双向搜索是开辟两个进程,进程I和进程2均读取所有的数据,包括网络中所有的点的编号、点的经纬度坐标、点的标识以及各点之间的拓扑关系,构建出地理网络;各点的标识的状态分为永久标识和非永久标识,两个进程分别设置数组Indexl、Index2来存储所有点的标识的状态,设定各点的标识的初始状态为非永久标识;进程I和进程2分别以源点A和终点B为中心,每次进程I搜索到一个新的点(用a表示)、进程2搜索到一个新的点(用P表示),如图1所示,进程I第一次搜索到的点为C和进程2第一次搜索到的点D,进程I根据点C的编号将点C在数组Indexl中的标识改为永久标识,并将点C的编号通过消息传递模式发送给进程2,同时接收进程2发送过来的点的编号,根据接收的这个点的编号在数组Indexl中查找该点的标识是否为永久标识,若为永久标识说明两个进程搜索到交点(即公共点),此时进程I返回消息给进程2,两个进程搜索可以终止,否则继续搜索。同时,进程2根据点D的编号将点D在数组Index2中的标识改为永久标识,并将点D的编号通过消息传递模式发送给进程1,同时接收进程I发送过来的点的编号,根据接收的这个点的编号在数组Index2中查找该点的标识是否为永久标识,若为永久标识说明两个进程搜索到交点(即公共点),此时进程2返回消息给进程1,两个进程搜索可以终止,否则继续搜索。由此可见,每次搜索之后都会进行一次通信,通信量为2个单位,进程间存在频繁的信息交换,产生了大量的通信时间,成为提闻效率的主要瓶颈。最短路径并行双向搜索是以圆形扩展方式向外搜索,如图2所示,进程I搜索的区域依次是图2中以A为圆心的同心圆,搜索到的点依次为C、E、G、...,进程2搜索的区域依次是图2中以B为圆心的同心圆,搜索到的点依次为D、F、H、...,在两个圆形区域没有重叠区域时,如图2中两个进程的前3个圆形区域,两个进程肯定不会搜索到公共点,直到图2中两个进程的第四个圆形区域,此时可能存在公共点。由此可见,在搜索区域未相交时,通信内容对搜索本身没有益处。但是由于并行技术的特点,仍然需要进行通信,判断是否搜索到公共点,从而保证搜索正确继续进行。从以上最短路径并行双向搜索算法的实现可知,存在通信次数过多,以及必须进行一些无益的通信,这些情况都制约算法效率的提升。

发明内容
本发明的目的是为克服已有技术的不足,提出一种基于大规模地理网络的最短路径并行双向搜索算法的通信方法,该方法具有减少通信次数,以及减少无效通信量的特点,提升已有技术的效率。本发明提出的一种基于地理网络的最短路径并行双向搜索通信方法,其特征在于,在源点开辟进程1、终点开辟进程2,两个进程同时进行搜索及双向通信;两个进程分别读取所有的数据,包括网络中所有的点的编号、点的经纬度坐标、点的标识以及各点之间的拓扑关系,构建出地理网络;设置通信粒度NUM为2以上的正整数;各点的标识的状态分为永久标识和非永久标识,两个进程分别设置数组Indexl、Index2存储所有点的标识的状态,设定各点的标识的初始状态为非永久标识;设置两个进程的通信数组分别为Messl、Mess2,两个数组的大小均为NUM ;根据源点和终点的经纬度差值,选取差值大的经度或纬度来表示地理网络中各点的地理属性,并假设源点的地理属性值小于终点的地理属性值,进程I设置Messl中各点地理属性值的最大值为参数Xmax、进程2设置Mess2中各点地理属性值的最小值为参数Xmin,并设置参数Xmax、参数Xmin的初始值为0 ;对于进程I的通信,包括以下步骤步骤11 :进程I进行搜索,当搜索的次数小于NUM时,进程I将搜索到的NUM个点的编号保存在数组Messl中,同时根据点的编号在Indexl中将点的标识改为永久标识;步骤12 :进程I当搜索次数等于NUM时,将Messl中NUM个点的地理属性值的最大值赋予Xmax ;进程I将参数Xmax发送给进程2,并接收进程2的参数Xmin ;步骤13 :进程I判断参数Xmin是否小于参数Xmax (即判断两个圆形搜索区域是否相交),若Xmin>Xmax,说明没有相交,清空Messl、Xmax,重复步骤1、步骤2 ;若Xmin〈Xmax,进行步骤14 ;步骤14 :进程I将Messl发送给进程2,并接收进程2的Mess2 ;进程I根据接收到的Mess2中各点的编号在Indexl中查找是否存在点的标识为永久标识,若存在,发送消息返回给进程2,搜索终止,进行步骤16 ;若不存在,则继续搜索,进行步骤15 ;步骤15 :进程I继续进行搜索,当搜索的次数小于NUM时,进程I将搜索到的NUM个点的编号保存在数组Messl中,同时根据点的编号在Indexl中将点的标识改为永久标识,当搜索次数等于NUM时,进行步骤14 ;步骤16 :结束通信,输出最短路径的结果;对于进程2的通信,包括以下步骤步骤21 :进程2进行搜索,当搜索的次数小于NUM时,进程2将搜索到的NUM个点的编号保存在数组Mess2中,同时根据点的编号在Index2中将点的标识改为永久标识;步骤22 :进程2当搜索次数等于NUM时,将Mess2中NUM个点的地理属性值的最小值赋予Xmin ;进程2将参数Xmin发送给进程1,并接收进程I的参数Xmax ;
步骤23 :进程2判断参数Xmin是否小于参数Xmax(即判断两个圆形搜索区域是否相交),若Xmin>Xmax,说明没有相交,清空Mess2、Xmin,重复步骤21、步骤22 ;若Xmin〈Xmax,进行步骤 24 ;步骤24 :进程2将Mess2发送给进程1,并接收进程I的Messl ;进程2根据接收到的Messl中各点的编号在Index2中查找是否存在点的标识为永久标识,若存在,发送消息返回给进程1,搜索终止,进行步骤26 ;若不存在,则继续搜索,进行步骤25 ; 步骤25 :进程2继续进行搜索,当搜索的次数小于NUM时,进程2将搜索到的NUM个点的编号保存在数组Mess2中,同时根据点的编号在Index2中将点的标识改为永久标识,当搜索次数等于NUM时,进行步骤24 ;步骤26 :结束通信,输出最短路径的结果。本发明的技术特点及有益效果1、本发明将各进程多次搜索后找到的多个点作为一个集合进行一次通信操作,提高通信粒度,减少通信次数,降低通信时间,提高并行效率。2、本发明将网络地理属性作为判断两个进程搜索区域是否存在交集(即是否存在共同点),更快速求解最短路径,降低通信量,进一步降低通信时间,提高并行效率。


图1为已有的最短路径并行双向搜索的通信方法示意图,其中,图1 (a)为搜索结构示意图;图1 (b)为通信流程框图。图2为已有的最短路径并行双向搜索的搜索方式示意图。图3为本发明基于地理属性多点合并I号进程的最短路径并行双向搜索的通信方法示意图。图4为本发明基于地理属性多点合并2号进程的最短路径并行双向搜索的通信方法示意图。
具体实施例方式本发明提出的基于地理网络的最短路径并行双向搜索通信方法结合附图及实施例详细说明如下本发明以A为源点、B为终点进行双向搜索,开辟两个进程(进程I和进程2)进行通信,两个进程分别读取所有的数据,包括网络中所有的点的编号、点的经纬度坐标、点的标识以及各点之间的拓扑关系,构建出地理网络,如图2所示;设置通信粒度NUM为2以上的正整数,本实施例中通信粒度设置为3 (通信粒度为多点通信的数量);各点的标识的状态分为永久标识和非永久标识,两个进程分别设置数组Indexl、Index2来存储所有点的标识的状态,设定各点的标识的初始状态为非永久标识;设置两个进程的通信数组分别为MeSSl、MeSS2,两个数组的大小均为NUM ;根据源点A和终点B的经纬度差值,选取差值大的经度或纬度来表示地理网络中各点的地理属性,本实施例中如图2所示,A、B两点的经度差值大于A、B两点的纬度差值,因此选取经度来表示地理属性,从图2中可以看出A点的经度值小于B点的经度值,即选择进程I设置Messl中各点经度值最大值为参数Xmax、进程2设置Mess2中各点经度最小值为参数Xmin,并设置参数Xmax、参数Xmin的初始值为0 ;
本发明的具体实施方式
,对于进程I的通信如图3所示,包括以下步骤步骤11 :进程I进行搜索,当搜索的次数小于NUM时,进程I将搜索到的NUM个点的编号保存在数组Messl中,同时根据点的编号在Indexl中将点的标识改为永久标识;步骤12 :当搜索次数等于NUM时,将Messl中NUM个点的经度值的最大值赋予Xmax ;如图2所示,Messl中第一次存有C、E、G点的编号,Xmax等于G的经度值;进程I将参数Xmax发送给进程2,进程I接收进程2的参数Xmin ;步骤13 :进程I判断参数Xmin是否小于参数Xmax(即判断两个圆形搜索区域是否相交),若Xmin>Xmax,说明没有相交,清空Messl、Xmax,重复步骤11、步骤12 ;若Xmin〈Xmax,进行步骤 14 ;步骤14 :进程I将Messl发送给进程2,进程I接收进程2的Mess2 ;进程I根据接收到的Mess2中各点的编号在Indexl中查找是否存在点的标识为永久标识,若存在,发送消息返回给进程2,搜索终止,进行步骤16 ;若不存在,则继续搜索,进行步骤15 ;步骤15 :进程I继续进行搜索,当搜索的次数小于NUM时,进程I将搜索到的NUM个点的编号保存在数组Messl中,同时根据点的编号在Indexl中将点的标识改为永久标识,当搜索次数等于NUM时,进行步骤14 ;步骤16 :结束通信,输出最短路径的结果。对于进程2的通信如图4所示,包括以下步骤步骤21 :进程2进行搜索,当搜索的次数小于NUM时,进程2将搜索到的NUM个点的编号保存在数组Mess2中,同时根据点的编号在Index2中将点的标识改为永久标识;步骤22 :当搜索次数等于NUM时,将Mess2中NUM个点的经度值的最小值赋予Xmin ;如图2所示,Mess2中第一次存有D、F、H点的编号,Xmin等于H的经度值;进程2将参数Xmin发送给进程I,进程2接收进程I的参数Xmax ;步骤23 :进程2判断参数Xmin是否小于参数Xmax(即判断两个圆形搜索区域是否相交),若Xmin>Xmax,说明没有相交,清空Mess2、Xmin,重复步骤21、步骤22 ;若Xmin〈Xmax,进行步骤 24 ;步骤24 :进程2将Mess2发送给进程1,进程2接收进程I的Messl ;进程2根据接收到的Messl中各点的编号在Index2中查找是否存在点的标识为永久标识,若存在,发送消息返回给进程1,搜索终止,进行步骤26 ;若不存在,则继续搜索,进行步骤25 ;步骤25 :进程2继续进行搜索,当搜索的次数小于NUM时,进程2将搜索到的NUM个点的编号保存在数组Mess2中,同时根据点的编号在Index2中将点的标识改为永久标识,当搜索次数等于NUM时,进行步骤24 ;步骤26 :结束通信,输出最短路径的结果。
权利要求
1.一种基于地理网络的最短路径并行双向搜索通信方法,其特征在于,在源点开辟进程1、终点开辟进程2,两个进程同时进行搜索及双向通信;两个进程分别读取所有的数据,包括网络中所有的点的编号、点的经纬度坐标、点的标识以及各点之间的拓扑关系,构建出地理网络;设置通信粒度NUM为2以上的正整数;各点的标识的状态分为永久标识和非永久标识,两个进程分别设置数组Indexl、Index2存储所有点的标识的状态,设定各点的标识的初始状态为非永久标识;设置两个进程的通信数组分别为Messl、Mess2,两个数组的大小均为NUM ;根据源点和终点的经纬度差值,选取差值大的经度或纬度来表示地理网络中各点的地理属性,并假设源点的地理属性值小于终点的地理属性值,进程I设置Messl中各点地理属性值的最大值为参数Xmax、进程2设置Mess2中各点地理属性值的最小值为参数Xmin,并设置参数Xmax、参数Xmin的初始值为O ; 对于进程I的通信,包括以下步骤: 步骤11:进程I进行搜索,当搜索的次数小于NUM时,进程I将搜索到的NUM个点的编号保存在数组Messl中,同时根据点的编号在Indexl中将点的标识改为永久标识; 步骤12:进程I当搜索次数等于NUM时,将Messl中NUM个点的地理属性值的最大值赋予Xmax ;进程I将参数Xmax发送给进程2,并接收进程2的参数Xmin ; 步骤13:进程I判断参数Xmin是否小于参数Xmax,若Xmin>Xmax,说明没有相交,清空Messl、Xmax,重复步骤1、步骤2 ;若Xmin〈Xmax,进行步骤14 ; 步骤14:进程I将Messl发送给进程2,并接收进程2的Mess2 ;进程I根据接收到的Mess2中各点的编号在Indexl中查找是否存在点的标识为永久标识,若存在,发送消息返回给进程2,搜索终止,进行步骤16 ;若不存在,则继续搜索,进行步骤15 ; 步骤15:进程I继续进行搜索,当搜索的次数小于NUM时,进程I将搜索到的NUM个点的编号保存在数组Messl中,同时根据点的编号在Indexl中将点的标识改为永久标识,当搜索次数等于NUM时,进行步骤14 ; 步骤16:结束通信,输出最短路径的结果; 对于进程2的通信,包括以下步骤: 步骤21:进程2进行搜索,当搜索的次数小于NUM时,进程2将搜索到的NUM个点的编号保存在数组Mess2中,同时根据点的编号在Index2中将点的标识改为永久标识; 步骤22:进程2当搜索次数等于NUM时,将Mess2中NUM个点的地理属性值的最小值赋予Xmin ;进程2将参数Xmin发送给进程1,并接收进程I的参数Xmax ; 步骤23:进程2判断参数Xmin是否小于参数Xmax,若Xmin>Xmax,说明没有相交,清空Mess2、Xmin,重复步骤21、步骤22 ;若Xmin〈Xmax,进行步骤24 ; 步骤24:进程2将Mess2发送给进程1,并接收进程I的Messl ;进程2根据接收到的Messl中各点的编号在Index2中查找是否存在点的标识为永久标识,若存在,发送消息返回给进程1,搜索终止,进行步骤26 ;若不存在,则继续搜索,进行步骤25 ; 步骤25:进程2继续进行搜索,当搜索的次数小于NUM时,进程2将搜索到的NUM个点的编号保存在数组Mess2中,同时根据点的编号在Index2中将点的标识改为永久标识,当搜索次数等于NUM时,进行步骤24 ; 步骤26:结束通信,输出最短路径的结果。
全文摘要
本发明涉及基于地理网络的最短路径并行双向搜索通信方法,属于最短路径并行双向搜索通信技术领域;该方法包括在源点和终点开辟两个进程进行双向通信,两个进程分别读取所有的数据,构建出地理网络;设置通信粒度NUM为2以上的正整数;两个进程分别设置数组Index1、Index2来存储所有点的标识状态;两个进程分别设置通信数组Mess1、Mess2;根据源点和终点的经纬度差值,选取差值大的经度或纬度来表示地理网络中各点的地理属性,两个进程分别设置数组Mess1中各点地理属性值最大值Xmax及数组Mess2中各点地理属性值最小值Xmin;进行通信时,当搜索次数等于NUM时,两个进程进行一次通信。该方法具有减少通信次数,以及减少无效通信量的特点,提升已有技术的效率。
文档编号G06F17/30GK103077235SQ20131000653
公开日2013年5月1日 申请日期2013年1月8日 优先权日2013年1月8日
发明者孙文彬, 吴立新, 赵学胜, 谭正龙, 王江 申请人:中国矿业大学(北京)
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1