📜  随机游走的概率版本(1)

📅  最后修改于: 2023-12-03 15:42:24.708000             🧑  作者: Mango

随机游走的概率版本

随机游走是一种随机漫步的形式,它是一种用来描述在随机场景下参与某种随机活动的数学模型。在计算机科学领域,随机游走被广泛应用于网络分析、社群发现和机器学习等领域。

随机游走的概率版本将随机游走看作是一个马尔可夫链,通过在一个有限的状态空间中随机地移动来表示。

马尔可夫链

马尔可夫链是一种状态转移模型,它假设未来的状态只与当前状态有关,与过去的状态无关。通俗地说,就是在当前状态下对未来进行预测不需要考虑它的历史状态。

马尔可夫链的核心是状态转移矩阵,它是一个 N × N 的矩阵,其中 N 是状态空间的大小。矩阵的每个元素表示从一个状态转移到另一个状态的概率,即:

$$P_{i,j} = P(X_{t+1} = j | X_t = i)$$

其中 $X_t$ 是在时间 $t$ 时的状态,$i$ 和 $j$ 分别代表状态空间中的两个状态。

随机游走

随机游走是一种基于马尔可夫链的随机漫步模型,它的核心是状态转移矩阵。在随机游走模型中,状态转移矩阵的意义是从一个状态转移至另一个状态的概率,通俗地说,就是一个人在空间中随机行走的过程。

以下是一个示例代码,它根据一个状态转移矩阵生成随机游走序列:

import random

# 定义状态转移矩阵
transition_matrix = [
    [0.0, 0.5, 0.5],
    [0.5, 0.0, 0.5],
    [0.5, 0.5, 0.0]
]

# 定义随机游走起始状态
start_state = 0

# 进行 10 步随机游走
current_state = start_state
for i in range(10):
    print(current_state)
    next_state_prob = transition_matrix[current_state]
    next_state = random.choices([0, 1, 2], weights=next_state_prob)[0]
    current_state = next_state

在上面的代码中,我们定义了一个 3 × 3 的状态转移矩阵,它表示从一个状态转移到另一个状态的概率。我们从 0 号状态开始,执行了 10 步随机游走,每一步随机选择下一个状态。

随机游走的概率版本

随机游走的概率版本将随机游走看作是一个马尔可夫链,并引入了随机因素和概率矩阵。随机因素是指在每一步随机游走时,存在可能停留在当前状态的概率。而概率矩阵则是引入了随机因素之后的状态转移矩阵,它的每个元素表示从一个状态转移到另一个状态的概率,同时包括在当前状态下停留的概率。

以下是一个示例代码,它根据概率矩阵生成随机游走序列:

import random

# 定义概率矩阵
probability_matrix = [
    [0.1, 0.7, 0.2],
    [0.3, 0.4, 0.3],
    [0.5, 0.2, 0.3]
]

# 定义随机游走起始状态
start_state = 0

# 进行 10 步随机游走
current_state = start_state
for i in range(10):
    print(current_state)
    next_state_prob = probability_matrix[current_state]
    next_state_prob.append(1 - sum(next_state_prob))
    next_state = random.choices([0, 1, 2, 3], weights=next_state_prob)[0]
    current_state = next_state

在上面的代码中,我们定义了一个 3 × 3 的概率矩阵,它表示从一个状态转移到另一个状态的概率,包括在当前状态下停留的概率。我们从 0 号状态开始,执行了 10 步随机游走,每一步随机选择下一个状态。注意,我们在概率矩阵的每一行加入了在当前状态下停留的概率。