追书小说

字: 大 中 小
关灯 护眼
追书小说 > 编程之战 > 第二百二四章 加权有向图(下)

第二百二四章 加权有向图(下)

第二百二四章 加权有向图(下) (第1/1页)

既然是加权有向图,那在这个场景下,有向性怎么体现呢?
  
  可以观察到,图中的每一个点都有8个方向可以离开。
  
  东,南,西,北,东北,东南,西南,西北。
  
  等于说,每个点和它周边的8个点都可以构成一条边。
  
  而边的权重等于两个点海拔差的绝对值。
  
  这样,这幅地图就转化为了加权有向图。
  
  然后,再求总权重最小,或者说总海拔差最小(最节省体力)的路径。
  
  对于求加权有向图两个点之间的最短路径,有一种经典的算法:
  
  Dijkstra(迪杰斯特拉)算法。
  
  它会构造一棵最短路径树,提供从出发点[0,0]到图中任意一点的最短路径。
  
  那有了这么一棵树,要找出发点到目的地[3,3]的最短路径不就是很方便的事情了么?
  
  杨成很快就搞定了这个算法。
  
  不过,他发现了一个让人懊恼的问题:
  
  JavaScript在以前的版本一直不支持优先级队列。
  
  而优先级队列是这个算法能够加快效率的关键。
  
  他只好使用数组来做替代。
  
  从数组中查找最小的项,并且将其移除,可是一个开销不小的操作呢!
『加入书签,方便阅读』
热门推荐
联盟:一首大悲咒,我让全网自闭 签约AC米兰后,我开摆了 斗罗之被抛弃后,我无敌了 全网黑后我考研清华爆红了 市委书记升迁记 颓唐 人在斗罗,没有魂环 我在大虞长生 大象无形曾国藩 凡人之长生仙道