随机游走
几何布朗运动(Brownian motion)
布朗运动是将看起来连成一片的液体,在高倍显微镜下看其实是由许许多多分子组成的。液体分子不停地做无规则的运动,不断地随机撞击悬浮微粒。当悬浮的微粒足够小的时候,由于受到的来自各个方向的液体分子的撞击作用是不平衡的。在某一瞬间,微粒在另一个方向受到的撞击作用超强的时候,致使微粒又向其它方向运动,这样,就引起了微粒的无规则的运动就是布朗运动。(布朗运动指的是分子迸出的微粒的随机运动,而不是分子的随机运动。)即布朗运动代表了一种随机涨落现象。
随机游走
英文:Random Walk
定义:随机游走,概念接近于布朗运动,是布朗运动的理想数学状态。
核心概念:任何无规则行走者所带的守恒量都各自对应着一个扩散运输定律。
随机游走算法的基本思想是:
-
- 从一个或一系列顶点开始遍历一张图。在任意一个顶点,遍历者将以概率 $1-a$ 游走到这个顶点的邻居顶点,以概率 $a$ 随机跳跃到图中的任何一个顶点,称 $a$ 为跳转发生概率,每次游走后得出一个概率分布,该概率分布刻画了图中每一个顶点被访问到的概率。用这个概率分布作为下一次游走的输入并反复迭代这一过程。当满足一定前提条件时,这个概率分布会趋于收敛。收敛后,即可以得到一个平稳的概率分布。
一维的随机游走
一维的随机游走可定义如下:每过一个单位时间,游走者从数轴位置 $x$ 出发以固定概率随机向左或向右移动一个单位。不妨将 $n$ 时刻游走者的位置记为 $L_n$,则有
$L_{n}=x+X_{1}+\cdots+X_{n}$
其中 $X_1,X_2,…,X_n$ 为相互独立的随机变量,满足
$P\left(X_{i}=1\right)=p=1-P\left(X_{i}=-1\right)$
最经典的一维随机游走问题有赌徒输光问题和酒鬼失足问题。
- 赌徒在赌场赌博,赢的概率是 $p$,输的概率 $1-p$,每次的赌注为1元,假设赌徒最开始时有赌金1元,赢了赌金加1元,输了赌金减1元。问赌徒输光的概率是多少?
- 一个醉鬼行走在一头是悬崖的道路上,酒鬼从距离悬崖仅一步之遥的位置出发,向前一步或向后退一步的概率皆为1/2,问酒鬼失足掉入悬崖的概率是多少?
二维随机游走示例代码:
import random import numpy as np import matplotlib.pyplot as plt N = 1000 d = 1 x =np.zeros(N+1) y =np.zeros(N+1) x[0] = 0 y[0] = 0 for i in range(0,N,1): r = random.random() #[0,1) if 0<=r<0.25 : y[i+1]=y[i]+d;x[i+1]=x[i] elif 0.25<=r<0.5: y[i+1]=y[i];x[i+1]=x[i]+d elif 0.5<=r<0.75: y[i+1]=y[i]-d;x[i+1]=x[i] else : y[i+1]=y[i]; x[i+1]=x[i]-d plt.plot(x,y,'r',x[0],y[0],'bo',x[-1],y[-1],'b*') plt.xlabel("East->") plt.ylabel('North->') plt.rcParams['figure.figsize']=(40,20) plt.show()