在有向图中,如何衡量一个节点是更“上游”还是“下游”?

数据挖掘 图表 社会网络分析
2021-10-14 05:16:08

假设我有一个有向图,对于每个节点,我想衡量它是更多的“上游”节点(位于许多路径的开头)还是“下游”节点(到许多路径会聚)。

比如说,在 A->B->CI 的序列中,希望 A 具有最高值,而 C 具有最低值,而 B 将“介于两者之间”。在一个完美的循环中,A->B->C->AI 希望所有节点都具有相同的“中间”值。指标应该容忍循环和非循环元素的混合。

理想情况下,它还会为来自较长非循环路径的节点提供更多极端值:具有较大河口的节点(“万物之母”节点)具有较高的值,而具有较大分水岭的节点(“条条大路通罗马”)的值较低集成所有流的节点)。

理想情况下,它应该推广到加权图。并且,理想情况下,以不依赖于权重的比例因子的方式(因此,如果将图中的所有权重乘以 2,则每个节点的指标不应改变,因为拓扑显然不会因此而改变缩放)。

对于非加权图,我可以提供这样的指标:找到一个节点的所有前辈,找到一个节点的所有子节点,然后将子节点的数量除以子节点和祖先节点的总和;对于任何原点,此值为 1;将给出 0 表示死胡同,并给出 0.5 表示循环。所以基本没问题。我不喜欢这个指标的是1)它不关心路径的长度,2)它的计算速度很慢,3)我不知道如何将它推广到加权图的规模 -不变的方式。

所以我想知道是否有一个已知的度量标准,这些度量标准与之前描述和研究过的这些属性大致相同。例如,许多人在分析社交网络时会使用计算,这感觉像是一件合乎逻辑的事情;所以感觉它应该有一个名字和发布的算法。谢谢!

编辑:我认为可以公平地说,pagerank 指标具有我描述的许多属性(值颠倒了):汇高,具有较大分水岭的汇更高,源节点低,周期往往具有“in- between”值,并且该算法清楚地支持加权图。它不关心的部分是起源节点是否有大河口或根本没有河口。现在我想知道我是否真的需要两个指标:一个页面排名,用于分水岭,另一个用于河口。就像在感兴趣的节点中发起的随机游走访问的节点的加权份额,或类似的东西。还是有更简单的指标?

2个回答

请说明在存在周期的情况下您要查找的内容。我假设循环不是独立的——循环中的任何节点也可能有来自更上游的输入,也可以向下游发送输出。即使在未加权的情况下,在我看来,一个循环中的某些节点可能比其他节点更“上游”。例如,循环中的大多数节点可能位于一组源节点的下游。该循环中的一个节点可能是该循环到汇的唯一路径。当然,该节点比循环中的其他节点更“下游”?

抱歉,以上内容不仅仅是评论——我太新了,无法在这个小组中拥有足够高的声誉。

所以,也给个答案。把“流网络”比喻到一个极端。想象一下,目标节点上游的每个水源都会发出水流,仅在第一时刻添加染料。将权重视为时间延迟。对于每个节点,计算染料第一次到达给定节点的时间。在目标节点下游的所有接收器中,选择最长时间或平均时间(或自身,如果节点是接收器)。目标节点的位置就是它的早期到达时间除以汇的平均或最长到达时间。在计算上,这个最早的染料到达时间是通过对有向图的广度优先遍历进行一些修改来完成的。从到达时间为 0 的源开始,然后每个节点的到达时间只是其所有前辈的最小值。(与任何图遍历一样,必须记住已访问和已完成的节点,因此不会多次遵循循环。这也称为从一组节点到一组给定节点的最短距离。

但请注意,周期没有给予任何特殊的特殊待遇。如果你真的希望循环很重要,你可以假设输出流被平均分配,并进行混合计算,这样染料浓度会随着时间的推移逐渐衰减。但这看起来非常复杂,而且需要时间,而且可能没有任何好处。但在任何一种情况下,循环中的节点都不会具有相同的值——有些节点会比其他节点更“上游”。

如果您真的希望一个循环中的所有节点都具有相同的值,您可能需要一个单独的预处理步骤来找到有向循环,并将每个循环聚合到一个节点中(每个循环一个节点)。这增加了复杂性,尽管它简化了最短距离计算,因为此后图形将是非循环的,并且微不足道的广度优先遍历将起作用。

您可能并不真的需要对图形进行全局分析来获得特征值,尽管这也是您在初始分析中必须做的事情。如果这是您要定期运行的东西,那么您可能只是在发生更改时进行本地更新,而最早到达时间的传播有限,假设您无论如何都可以容忍在某种程度上任意选择的指标中的一些“错误”。

我相信您正在寻找的是图形中心性度量。每个顶点的中介中心性反映了通过该顶点的最短路径的比率:

G(v)=svσs(v)σs

在哪里σs是节点的最短路径总数s到节点σs(v)是通过的那些路径的数量v. 还要检查图形绘制算法。其中一些方法(例如基于力的方法和光谱方法)可以为您的目的提供合理的结果,但没有理论上的保证。