随机生成稀疏矩阵_图上的随机游走算法 I: hitting time精确解的数学推导与程序实现...

c63b53f32c43155e58c2649c7fa9e4cf.png

这篇文章是我之前写的一篇预印本的缩略版,预印本在这里:

https://arxiv.org/pdf/1908.09644.pdf​arxiv.org

第一节:导论

图是一种数据结构,它可以用来表示现实世界中复杂的交互关系。每一个图都有两个基本的组成部分, 分别是节点和边。节点通过边连接起来。一个例子如下图所示:

81646578c2c9e5ae1c5a6d843225e876.png

为了在数学上表示一个图,我们通常可以定义一个连接矩阵,该矩阵的指标表示节点的序号,矩阵的元素表示两个节点之间是否有边连接(0表示没有边连接,1表示有)。对上图而言,它的连接矩阵为

其中

表示有一条边连接了节点0 和 1,以此类推。因为这里我们的图是无向的,也就是我们不考虑连接两个节点的边的方向,所以连接矩阵总是对称矩阵。如果边上有权重,那么该矩阵的元素就未必是0或者1了,而可以是任意的实数。边有权重的图称作是加权图。很显然,无权图可以看作是一种特殊的加权图(每一条边的权重都是1),而无向图可以看作是一种特殊的有向图(每一条有向边都有一条与之反向的边)。这篇文章里,我们只关注无向加权图。

图之所以重要,是因为我们可以用图表示现实世界中的各种关系。例如,真实世界中的人际关系就可以用图表示。我们可以定义节点为人,如果两个人相互认识,我们就可以在它们所对应的节点之间连上一条边。这样我们就得到了一个无向图。另外,我们还可以用一个数字来表示两个人熟悉的程度。这样我们就得到了一个无向加权图。通过研究这个图,我们可以挖掘出隐藏在这些人际关系下面的大量信息。这篇文章里,我要通过研究图上的随机游走来度量两个人之间的亲密度。图上随机游走的定义是下一节的内容。

第二节:图上的随机游走

给定一个图,我们可以在图上做随机游走。图上的随机游走有很多种类型,在这里我们只定义一种对我们最有用的随机游走:带有目标的随机游走。如下图所示:

afac22b58a58e2a29a10de1fd65a9153.png
图上的随机游走。0为初始点,3为目标点。

在这个图里,我们设定节点 3 为目标节点。假设一个人

从节点 0 出发,每次都按照一定的概率走向它的邻近节点,经过足够长的时间,
总是可以到达目标节点。定义
首次到达 3 所需要的时间为 hitting time. 显然,hitting time 是一个随机变量。如果我们可以计算出该随机变量的概率分布,我们就可以得到它的期望值值和方差。给定了一个连通图,hitting time依赖于随机游走的初始点
和目标点
. 因此,我们用随机变量
来表示hitting time. 为了计算hitting time 的期望值和方差,一个简单的方法是做蒙特卡罗模拟,但是我们知道蒙特卡罗模拟的运行效率非常低下,对于超级大图,这个方法显然不实用。这篇文章的目的就是寻找一个更好的方法来避免使用蒙特卡罗模拟。下一节将会详细介绍这个方法。

第三节:hitting time的精确解

这里,我要推导一个解析公式,这个公式可以给出hitting time的精确解。我最早是在写这篇文章https://zhuanlan.zhihu.com/p/56315879 的时候发现这个方法的,后来经过文献检索,发现这个方法其实早就有人提出过,例如http://www.cs.cmu.edu/~15859n/RelatedWork/random-walks-on-graphs.pdf . 在这篇review里面,作者就提到了这个方法。这也不奇怪,因为hitting time的计算应该是随机过程中一个常见的问题,肯定有很多人都研究过了。我的方法跟之前的方法稍微有点不同。这里,我详细推导一下我的方法。我的方法的推导依赖于随机游走的无记忆特性。

前面已经说了,hitting time是一个随机变量。对于给定的连通图,该随机变量依赖于随机游走的初始点

和终点
. 假设每走一步所需要的时间都是固定的单位时间,那么hitting time只能取离散的整数值。如果出发点和终结点重合,那么hitting time恒等于零,这种情况太过于trivial,不在我们的考虑范围。如果出发点
只有一个邻近节点,而且这个节点就是目标节点
, 那么该随机游走的hitting time永远等于1,也就是

这种情况下我们已经得到了hitting time概率分布,所以我们也不需要对它做额外的分析。现在我们就考虑最普遍的情况:出发点不与目标点重合,而且目标节点不是目标节点的唯一邻近节点。

为了方便,我们记出发节点为

,目标节点为
. 我们规定,
. 记从
出发经过
步首次到达
的概率为
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值