对于无黑洞的随机游走问题可以使用线性方程组求解,对于有黑洞的随机游走问题就无法使用线性方程组进行求解了。
有黑洞的随机游走问题举例:

  • 随机给定一个魔方状态,随机旋转期望通过多少步才能旋转到目标状态?
    这个问题相当于有一个黑洞、有限状态的随机游走问题。只要把魔方还原了,那么游戏就结束了。
  • 醉汉回家问题:一个人在x点处喝醉了,在N维无限空间中游走,它回到出发点的概率是多少?求p(N)
    这个问题相当于有一个黑洞、无限空间的随机游走问题。
  • 史莱姆自爆问题:每个时刻史莱姆有1/3概率分裂,有1/3概率保持不变,有1/3概率死亡,问史莱姆期望有多少只?
    这个问题相当于一个黑洞、无限空间随机游走问题。

随机游走问题分类:
(有限空间+无限空间)×(有黑洞+无黑洞)

  • 有限空间无黑洞随机游走:求解线性方程组
  • 有限空间有黑洞随机游走:矩阵的N次幂
  • 无限空间无黑洞随机游走
  • 无限空间有黑洞随机游走:可能可以通过求解非线性方程解决

zhihu
一个整型数字x=6000,每次增长101的概率为49.32%,每次减少100元的概率为50.68%,问最终x&tt;7000的概率是多少?

显然,这个问题相当于一个随机游走问题,一共有100~7000共6900个结点,每个结点x有49.32%的概率走向x+101,有50.68%的概率走向x-100,当x<100或者x>=7000时游戏停止。

import numpy as np
import tensorflow as tflose = 0.4932
win = 1 - lose
win_value = 101
lose_value = 100
init_value = 6000
# 闭区间
ceil_value = 7000
floor_value = 100
A = np.zeros((7102, 7102))
for i in range(A.shape[0]):if ceil_value >= i >= floor_value:A[i - lose_value, i] = loseA[i + win_value, i] = winif not ceil_value >= i >= floor_value:A[i, i] = 1A = tf.constant(A, dtype=np.float32)
p = np.zeros((A.shape[0], 1), dtype=np.float32)
p[init_value, 0] = 1
p = tf.Variable(p)
assign = tf.assign(p, tf.matmul(A, p))
with tf.Session() as sess:sess.run(tf.global_variables_initializer())for i in range(100):sess.run(assign)print(i)p_value = sess.run(p)print(np.sum(p_value[ceil_value:]), np.sum(p_value[floor_value:ceil_value]), np.sum(p_value[:floor_value]))

亏本这么少,是因为初始状态给的6000离7000非常近,本钱足够多,几乎不会亏本。
这种问题就像是一个带黑洞的随机游走问题,这个问题有两个黑洞,一个是足够大止盈黑洞一个是足够小止损黑洞,而中间部分几乎是慢慢往两边耗散的,最终中间部分应该是趋近于0。就像光线在一个管子里面来回反射,最后终将会从管子两边射出去,管子里面变得漆黑一片。由此推出:继续循环的概率这个数字可以看做此迭代结果的准确率指标。
在上面迭代过程中,只是简单的迭代,实际上可以使用快速幂进行加速。

import numpy as np
import tensorflow as tflose = 0.4932
win = 1 - lose
win_value = 101
lose_value = 100
init_value = 6000
# 闭区间
ceil_value = 7000
floor_value = 100
A = np.zeros((7102, 7102))
for i in range(A.shape[0]):if ceil_value >= i >= floor_value:A[i - lose_value, i] = loseA[i + win_value, i] = winif not ceil_value >= i >= floor_value:A[i, i] = 1
A = tf.Variable(A, dtype=np.float32)
assign = tf.assign(A, tf.matmul(A, A))
with tf.Session() as sess:sess.run(tf.global_variables_initializer())for i in range(1000):sess.run(assign)print(i)a = sess.run(A)p = a[:, init_value].reshape(-1)print("overflow", np.sum(p[ceil_value:]), "loop", np.sum(p[floor_value:ceil_value]), "downflow", np.sum(p[:floor_value]))

转载于:https://www.cnblogs.com/weiyinfu/p/9699459.html

带黑洞的随机游走问题相关推荐

  1. 图神经网络-随机游走

    1. Random Walk with Restart(RWR): 带重启的随机游走算法 参考博客: Random Walk with Restart and its application 参考博客 ...

  2. 带属性随机游走的图循环网络

    1. 背景     随机游走模型被广泛应用于从网络嵌入到标签传播的各种网络分析任务中.但是在真实的系统中,节点通常不是纯顶点,而是具有不同的特征.然而,为具有属性的网络开发随机游走模型是困难的,节点属 ...

  3. python勾股定理_Python学习第128课——在Python中实现醉汉随机游走

    [每天几分钟,从零入门python编程的世界!] 这节我们在2D平面内实现随机游走.我们先把原理搞清楚,用代码实现这个原理. 原理分析: 我们想像在2D平面内有一个x轴和y轴组成的坐标系,有一个人他是 ...

  4. 重启随机游走(RWR)算法

    RWR介绍 Random Walk with Restart(RWR) RWR是最早提出的一种用于图像分割的算法.它迭代地探索网络的整体结构,以估计两个节点之间的接近度(亲和力分数). 从一个节点开始 ...

  5. 《四维全息算法》9--四维全息算法的基本思路是什么?股市数据是具有分形迭代特征的随机游走

    傅立叶函数分级通常被应用于声波的数学拟合,甚至对噪声的拟合.那么,如果用一个决定性的数学方法能够拟合噪声,噪声是否就是完全没有规律可言呢?也就是说,噪声也存在一种复杂的具有决定性规律的信息. 那么,换 ...

  6. 重尾分布,长尾分布,肥尾分布 和 随机游走 (Heavy-tailed, Long-tailed, Fat-tailed distribution and Random walk)

    一看题目就知道本文内容较多,但因为放在一起讨论才能互相比较理解异同.本文主要讨论重尾分布,长尾分布,肥尾分布三者的联系,同时顺带讨论了一下 Random walk 中的 Lévy flight 和 B ...

  7. Random Walk(随机游走)

    本篇文章主要整理随机游走的基本思想,如果是深度学习图方法中的DeepWalk随机游走,传送门整理了几种流行的图嵌入方法. 金融和经济模型和概率统计学难以分离,对于这样的随机二级市场数据的理解和操作也是 ...

  8. 图像分割之随机游走算法

    转载于:https://blog.csdn.net/broccoli_lian/article/details/79739299 看了部分,没搞很明白,等有时间再看. 版权声明:本文为博主原创文章,未 ...

  9. 时间序列举例--------协方差+相关系数+随机游走+平稳性

    一. 时间序列的影响因素 (1) 长期趋势-------------这个是进行预测的三原则之一 (2) 循环变动或周期性----------------------预测的三原则之一 (3)季节性变动- ...

最新文章

  1. RocketMQ入门到入土(一)新手也能看懂的原理和实战!
  2. 电脑能上网,手机连上wifi不能上网
  3. 30 个很棒的 PHP 开源 CMS 内容管理系统
  4. [HNOI2013]比赛 搜索
  5. C++ Primer Plus学习(九)——内存模型和名称空间
  6. 面试题分享,麻麻再也不用担心我的面试了
  7. 找出数列中个数大于总数一半的元素(编程之美2.3)
  8. Google Chrome浏览器导入导出书签
  9. IEEE会议或期刊检索方法
  10. 关于win10微软商店打不开的99%解决办法
  11. 三星6818LED驱动的编写
  12. 浏览器中的js不能同步更新的解决方案
  13. Linux内核编译出错
  14. 登录失败过多导致账户被锁
  15. OJ题——吃货排排坐
  16. 软件测试培训出来真的很难找到工作嘛?
  17. Ajax实现网页部分更新
  18. mysql block是什么_数据库中block代表什么意思?
  19. 漫谈程序员(二)程序员保值的4个秘密
  20. CC2530 常用寄存器

热门文章

  1. 【PAT】B1004 成绩排名
  2. angular2.0中为什么初始化的时候就把全部路由下的模板文件加载出来的原因。
  3. ESP8266 wifi 模块配置,Wechat+APP控制实现
  4. 做个犀利的码农:如何持续培养/更新自己的开发技能
  5. 利用jquery 控制select 实例代码
  6. 【Java从0到架构师】SpringMVC - 返回值
  7. SELinux系列(十三)—默认安全上下文的查询和修改(semanage命令)
  8. python为list实现find方法
  9. LDA通俗理解LDA主题模型
  10. 整理30份酷炫可视化大屏模板,一个代码不用敲,半天学不会来找我