微软100题(31)蜂窝结构,搜索最短路径

题目:一类似于蜂窝的结构的图,进行搜索最短路径(要求5 分钟)

 

寻找蜂窝上两个节点之间的最短路径,

1、如果用Dijkstra算法,首先得把无限的蜂窝图(因为是通信网的蜂窝,理论上是无限覆盖的)做个限制,否则一直循环

 

图的算法学的很差,借鉴一个网友的写法,里面包含了建图——搜索——最短路径

http://blog.csdn.net/cxllyg/article/details/7604812

http://blog.163.com/cindy_19810217/blog/static/20105911820131019114612133/

 

 

2、贪心法

根据蜂窝图的特点,每个节点

都只有三条出路:横向、与斜着的上、下方向。

根据最短路径的子问题重复特点,即,在一条最短路径中,中间经过的节点到目标的最短路径即已包含在这条最短路径中。在蜂窝结构中,它看起来符合贪心规则:从当前点出发,比较三条可选路径,首先横向坐标(X轴)中,能接近目标点的路径(这里先选Y轴也一样),如果有两条路径在X方向上接近目标的距离一样,那么再比较Y轴。不过要注意两两种特殊情况:源与目标在同一X轴或Y轴上,这时,会发生两条路径等价的情况,任选一条即可。

 

 

你可能感兴趣的:(微软一百题强化训练)