根据不同的边缘类型计算图形距离

时间:2015-08-20 05:26:09

标签: algorithm graph-theory euclidean-distance hamming-distance

假设我有以下未加权的无向图,其中边可以通过两种不同类型的边连接:支撑边(绿色)和相对边(红色)。

以下是一个例子:

Example support-opposition graph

我想计算任何给定两个节点之间的对立或支持的“距离”。例如,如果节点代表战争国家或政治候选人,即使A和D之间没有边缘,我们可能会得出结论,他们可能会相互反对,因为A反对C而C支持D。

这是一个简单的例子,但是给定一个包含许多高度节点的大图,如果不能通过连续的反对链直接连接,我怎样才能确定任何两个节点相互对立或相互支持的可能性有多大? /支持边缘?

我想你会将每个节点表示为一个向量,其中的组件是否存在类型边缘存在于任何其他节点之间。如果这是一个很好的方法,你会使用什么距离测量(欧几里德,汉明等?)

2 个答案:

答案 0 :(得分:0)

这个问题看起来好像需要数值优化。这是一种方法:

为每个节点引入一个随机变量。该变量将在[-1,1]范围内,其中-1表示明显反对,+1表示明确支持。中间的值给出了两者的概率。将您感兴趣的节点的变量修复为1(因此,它不会成为优化的一部分)。

现在,在边缘上定义一个潜在的函数。我建议绝对差异:

v1, v2 are the incident nodes' values
for supporting edges:
  P(v1, v2) = abs(v1 - v2)
for opposing edges:
  P(v1, v2) = abs(v1 + v2)

根据您的优化方法,您可能需要一个可微分的潜在功能。例如,您可以通过以下方式使这些功能可以区分:

for supporting edges:
  P(v1, v2) = sqrt((v1 - v2)^2 + epsilon)
for opposing edges:
  P(v1, v2) = sqrt((v1 + v2)^2 + epsilon)

其中epsilon是一个相当小的数字。

所有潜力的总和是能量:

E = Sum P_i

然后,您需要找到与arg min E相关的v。有几个优化器。试试,哪一个表现最好(例如梯度下降,模拟退火,L-BFGS ......)。如果你坚持凸起的潜力(如绝对差异),简单的梯度下降可能就足够了。

这为每个其他节点提供了支持值。如果边缘不相互矛盾,则所有值都将为+1或-1。如果你有矛盾的边缘,其他值也是可能的。

您的示例将产生这些支持值(相对于A):

B: -0.333  (probably opposing)
C:  0.333  (probably supporting)
D:  0.333  (probably supporting)

答案 1 :(得分:0)

  • 找到两个节点之间的最短路径
    • 如果没有路径,则结果未知
  • 查找最短路径集合中的所有不同边缘
  • 求和所有不同的边(绿色:+1和红色:-1)
  • 结果是你的分数
    • 肯定得分是支持
    • 负面评分是反对
    • 得分为0是中性的
  • 分数的大小可以表现出更高水平的支持或反对