首页 > 其他分享 >关于随机游走的思考

关于随机游走的思考

时间:2024-06-22 21:42:48浏览次数:7  
标签:begin end 18 3i cfrac 随机 思考 游走 aligned

前话

很早就想给随机游走类问题做个总结了,以后又想到一题不定期更新。

2024.6.22

题目描述

一维空间内,前进一步,后退一步,原地不同概率均为 \(\cfrac{1}{3}\),\(0\) 点后退后还是 \(0\) 点。求从 \(0\) 点走到右端点 \(n\) 的期望步数。

解决

套路化记 \(f[i]\) 表示从 \(i\) 走到 \(n\) 的期望。那么有 \(f[i] = \cfrac{f[i]}{3} + \cfrac{f[i - 1]}{3} + \cfrac{f[i + 1]}{3} + 1\),化简后有 \(f[i] = \cfrac{f[i - 1] + f[i + 1] + 3}{2}\)。特殊地,\(f[0] = f[1] + 3\)。

从后向前递推。

\[f[n] = 0 \]

这是边界。

\[f[n - 1] = \cfrac{f[n - 2] + 3}{2} \]

代入。

\[\begin{aligned} f[n - 2] &= \cfrac{f[n - 3] + f[n - 1] + 3}{2} \\ &= \cfrac{f[n - 3] + \cfrac{f[n - 2] + 3}{2} + 3}{2} \\ \Rightarrow f[n - 2] &= \cfrac{2f[n - 3] + 9}{3} \end{aligned} \]

继续。

\[\begin{aligned} f[n - 3] &= \cfrac{f[n - 4] + f[n - 2] + 3}{2} \\ &= \cfrac{f[n - 4] + \cfrac{2f[n - 3] + 9}{3} + 3}{2} \\ \Rightarrow f[n - 3] &= \cfrac{3f[n - 4] + 18}{4} \end{aligned} \]

这么做看不出什么规律,考虑记 \(f[i] = k[i] \cdot f[i - 1] + b[i]\)

有 \(\left\{\begin{matrix} k[n - 1] = \cfrac{1}{2} \\ b[n - 1] = \cfrac{3}{2} \end{matrix}\right.\)。

考虑求递推式:

\[\begin{aligned} f[i] &= \cfrac{f[i - 1] + f[i + 1] + 3}{2} \\ &= \cfrac{f[i - 1] + k[i + 1] \cdot f[i] + b[i + 1] + 3}{2} \\ \Rightarrow f[i] &= \cfrac{f[i - 1] + b[i + 1] + 3}{2 - k[i + 1]} \end{aligned} \]

即 \(\left\{\begin{matrix} k[i] = \cfrac{1}{2 - k[i + 1]} \\ b[i] = \cfrac{b[i + 1] + 3}{2 - k[i + 1]} \end{matrix}\right.\)

俩数列?

先来看看 \(k\)

\[\cfrac{1}{2}, \cfrac{2}{3}, \cfrac{3}{4}, \cfrac{4}{5}, \cfrac{5}{6}, \cfrac{6}{7}, \cfrac{7}{8}, \cfrac{8}{9}, \cfrac{9}{10}, \cfrac{10}{11}, \cfrac{11}{12}, \cfrac{12}{13}, \cfrac{13}{14}, \cfrac{14}{15}, \cfrac{15}{16}, \cfrac{16}{17}, \cfrac{17}{18}, \cfrac{18}{19}, \cfrac{19}{20}, \cfrac{20}{21}, \ldots \]

似乎 \(k[n - i] = \cfrac{i}{i + 1}\)。

归纳一下?

证明:

对于 \(i = 1\) 成立。假设对于 \(n - (i - 1)\) 成立。则:

\[\begin{aligned} k[n - i] &= \cfrac{1}{2 - k[n - (i - 1)]} \\ &= \cfrac{1}{2 - \cfrac{i - 1}{i}} \\ &= \cfrac{i}{2i - i + 1} \\ &= \cfrac{i}{i + 1} \end{aligned} \]

成立,则证毕。

再来看看复杂些的 \(b\)

\[\cfrac{3}{2}, 3, \cfrac{9}{2}, 6, \cfrac{15}{2}, 9, \cfrac{21}{2}, 12, \cfrac{27}{2}, 15, \cfrac{33}{2}, 18, \cfrac{39}{2}, 21, \cfrac{45}{2}, 24, \cfrac{51}{2}, 27, \cfrac{57}{2}, 30, \ldots \]

情不自禁地变换一下。

\[\cfrac{3}{2}, \cfrac{6}{2}, \cfrac{9}{2}, \cfrac{12}{2}, \cfrac{15}{2}, \cfrac{18}{2}, \cfrac{21}{2}, \cfrac{24}{2}, \cfrac{27}{2}, \cfrac{30}{2}, \cfrac{33}{2}, \cfrac{36}{2}, \cfrac{39}{2}, \cfrac{42}{2}, \cfrac{45}{2}, \cfrac{48}{2}, \cfrac{51}{2}, \cfrac{54}{2}, \cfrac{57}{2}, \cfrac{60}{2}, \ldots \]

哦,似乎 \(b[n - i] = \cfrac{3i}{2}\),归一下纳。

证明:

对于 \(i = 1\) 成立。假设对于 \(n - (i - 1)\) 成立。则:

\[\begin{aligned} b[n - i] &= \cfrac{b[n - (i - 1)] + 3}{2 - k[n - (i - 1)]} \\ &= \cfrac{\cfrac{3(i - 1)}{2} + 3}{2 - \cfrac{i - 1}{i}} \\ &= \cfrac{3i(i - 1) + 6i}{4i - 2(i - 1)} \\ &= \cfrac{3i^2 + 3i}{2i + 2} \\ &= \cfrac{3i}{2} \end{aligned} \]

成立,则证毕。

得出结论

那么回到一开始的问题:

\[\begin{aligned} f[0] &= f[1] + 3 \\ &= k[1] \cdot f[0] + b[1] + 3 \\ &= k[n - (n - 1)] \cdot f[0] + b[n - (n - 1)] + 3 \\ &= \cfrac{n - 1}{n} f[0] + \cfrac{3(n - 1)}{2} + 3 \\ \Rightarrow f[0] &= \cfrac{3}{2}n^2 + \cfrac{3}{2}n \end{aligned} \]

当 \(n = 0,1,\ldots\) 时,\(f[0]\) 即答案为:

\[0, 3, 9, 18, 30, 45, 63, 84, 108, 135, 165, 198, 234, 273, 315, 360, 408, 459, 513, 570, \ldots \]

发现易证明均为整数。

未完待续

无左边界的上述问题……

标签:begin,end,18,3i,cfrac,随机,思考,游走,aligned
From: https://www.cnblogs.com/XuYueming/p/18262702

相关文章

  • 关于随机数函数(包含C、java)
    -随机数函数在C语言中是rand()C语言的rand()函数要与srand()一起使用,使用前要用srand()进行初始化。想在for循环中使用仅需在外部使用 srand((unsigned)time(NULL)) 初始化一次就行。(此处使用当前时间作为种子)-随机函数在java中要使用到Random类与C语言不同,java的随......
  • 机器学习python实践——由特征选择引发的关于卡方检验的一些个人思考
    最近在用python进行机器学习实践,在做到特征选择这一部分时,对于SelectPercentile和SelectKBest方法有些不理解,所以去了查看了帮助文档,但是在帮助文档的例子中出现了"chi2",没接触过,看过去就更懵了,查了一下资料知道"chi2"是在求卡方值,又没接触过,我整个人都裂了,但是还是耐着性子去......
  • 随机链表的复制 && 排序链表
    随机链表的复制题目.-力扣(LeetCode)思路:思路:       ①一个结点一个节点去拷贝,当拷贝了第一个节点的时候,把原节点与拷贝节点连接起来,直接到所有的节点拷贝完毕,这样做的目的是为下一步处理random指针做准备      ②处理random       ③处理......
  • 对红酒数据集,分别采用决策树算法和随机森林算法进行分类。
    1.导入所需要的包fromsklearn.treeimportDecisionTreeClassifierfromsklearn.ensembleimportRandomForestClassifierfromsklearn.datasetsimportload_winefromsklearn.model_selectionimporttrain_test_split2.导入数据,并且对随机森林和决策数进行对比 x_tr......
  • 数据分析思考
    数据分析工作流程在我的数据分析职业发展过程中,我从基础的数据提取工作开始,逐步深入到更为复杂和具有战略意义的领域。这包括构建和完善指标体系、设计风险预警模型,以及与多部门协作完成公司整体经营分析等工作。在这个过程中,我常常思考一个问题:到底是知道要做什么重要还是......
  • 有关编程学习路线的思考
    具体工作脱离软件开发有年头了,最近计划重拾对编程学习的兴趣。学习计划就先从最直观的桌面程序开发来启动吧。尝试用最为简单的语句展现出绚丽的程序界面,自己的兴趣能够更为持久。目前来看,打算深入学习三种语言:C++、python,主要着眼于C++。花了些时间研究了这两种语言桌面开发的交......
  • Spring的一些思考(一)
    new一个对象和依赖注入一个对象的区别?new一个对象时,直接使用关键字new来创建实例。这个对象的生命周期由自己来管理,可以实现对对象的细粒度的控制依赖注入是创建对象的另一种方式。DI可以减轻耦合,生命周期由Spring来负责,只需配置该对象和它依赖的对象如何配置即可DI的优......
  • 在全为1的数组中随机三个位置为0
    std:random_device是一个在C++标准库中用于生成非确定性随机数的类,头文件<random>。它通常用于为随机数生成器(如std:mt19937)提供种子,以确保每次程序运行时都能产生不同的随机数序列。 std:iota是C++标准库中的一个函数,定义在<numeric>头文件中。它用于给容器中的元......
  • 【网络调优】Linux网络端口随机分配问题
    1.Linux端口基础1.端口号0不使用2.端口号1-1023,系统默认只给root使用3.端口号1024-4999由客户端程序自由分配4.端口号5000-65535由服务器程序自由分配2.Linux默认随机端口范围一般Linux的默认随机端口范围是:32768-60999(可以通过查看配置文件的方式来获取)当客户端port......
  • DEMO_02:随机数获取;数组集合遍历;整型与字符串转换;字符串字符遍历;数组/集合排序
    /***考核点:随机数获取;数组集合遍历;整型与字符串转换;字符串字符遍历;数组/集合排序*<p>*题目:*1.使用while循环获取20个五位数随机数并打印;*2.遍历20个数,筛选出随机数中3的倍数,并统计个数;*3.符合2的数中,找出五位数中3的倍数和位置*4.符合2的数中,把这五位数......