查看Wiki关于收缩层次结构的节点顺序的描述 https://en.wikipedia.org/wiki/Contraction_hierarchies
我似乎无法理解他们如何提出这个“正确”的订单。
我遵循了几篇关于该主题的论文中的启发式方法。其中大多数包括边缘差异和发生收缩时邻居的成本增加。 (也在Wiki上提到)
遵循这些启发式算法,我的算法看起来像:
- 首先在图形中的所有节点上运行,并计算边缘差异(观察/输入边缘并减去通过收缩产生的边缘数量)。
- 将此列表用作矛盾短语。获取具有最小值的节点。矛盾的是,在其邻接节点的成本上加上+1。
我想出了以下与Wiki论文不同的矛盾顺序。
边缘差之后的节点顺序列表= {-1,-1,-1,-1,-1,-1,-1},c =收缩。
-
收缩节点0,将+1添加为节点1,因为它是邻居。 节点订单列表现在= {c,0,-1,-1,-1,-1}
-
合同节点2,将+1添加到节点1和3。 节点订单列表现在= {c,1,c,0,-1,-1}
-
合同节点4,将+1添加到节点3和5。节点顺序列表现在= {c,1,c,1,c,0}
-
合约节点5,没有邻居。 节点订单列表现在= {c,1,c,1,c,c}
-
合同节点1,无邻居。 节点订单列表现在= {c,c,c,1,c,c}
- 合约节点3,无邻居。 节点订单列表现在= {c,c,c,c,c,c}
[{
1这仅提供了两个快捷方式,一个在1到3之间,另一个在3到5之间,但是缺少一个在1到5之间。Wiki的示例提供了3个快捷方式,包括最后提到的快捷方式。
我想念什么?