algorithm - 评估路由图中的节点连通性
问题描述
我有一个有向的加权路由图(大约 10^5 条边,每个节点 4 条边,很多圈)。
每条边都有与之相关的成本。如何评价每个节点的“连通性”?它应该衡量从这个节点到达其他节点的成本。
如果每个节点都有一个可靠性因子(包含该节点的所选路径将失败并且必须找到新路径的概率),一切将如何变化?
谢谢你的帮助
解决方案
我相信您提出的问题在很多方面都与PageRank算法的用例相匹配。
我不会讨论该算法的一般工作原理,因为网上有很多博客/视频已经非常详细地解释了它。我个人最喜欢的短视频之一就是这个。
现在让我们看看该算法如何适合您的用例。让我们将connectedness
节点x定义为C(x)。我们可以将您给定的陈述“从该节点到达其他节点有多便宜”改写为“我们在整个图中随机游走最终到达给定节点的可能性有多大,这样我们就倾向于采用成本为少”。
这种说法在很大程度上与 PageRank 算法背后的思想有关。我们只需要考虑如何包括我们工作的边缘成本。
原始的 PageRank 算法将给定节点的页面排名统一划分到它的所有相邻节点(在公式中表示为 PR(y)/OUT(y))。另一方面,我们需要更加偏向于成本较低的边缘,我建议将公式修改为,
(SUM-EDGES-COST(y) - EDGE-COST(x, y)) * (C(y) / SUM-EDGES-COST(y))
而不是传统的C(x) / OUT(x)。我们取差值(SUM-EDGES-COST(y) - EDGE-COST(x, y))因为在我们的场景中,较低的边缘成本意味着更多connectedness
。另一种可能性是将softmax
函数应用于每个节点的边缘成本作为标准化策略。
为了回答关于具有节点x的R(x)给出的可靠性因子的部分,我们可以将其直接乘以公式中的C(x)。
收拾东西,
应该符合您给定的场景。
我在这里介绍的只是一种可能性,我可以从脑海中想到它,而且很可能它可能不会成功。我只能希望它以某种或其他方式帮助您。干杯! :)
推荐阅读
- java - Java程序无法在linux中的挂载系统上写入
- python - 如何加快这种阵列间过程?[Python,Numpy]
- c# - 如何在 asp.net core log4net 中生成基于小时的日志文件?
- excel - Excel公式对日期之间的值求和
- xamarin - Xamarin 使用命令更新视图模型
- android - 如何在颤动中删除TextField底部的空格?
- node.js - Nodemailer SMTP 生成 ENOTFOUND
- google-sheets - 小数部分的 Google 表格递归 ROUND
- c - 使用 Core Audio 实时生成正弦音
- c# - 使用 yield 作为上下文关键字可能会导致问题