问题标签 [markov-chains]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 将马尔可夫链 Python 脚本转换为 PHP。不确定 PHP 中的一些等效函数是什么
我已经看到这个马尔可夫链乱码检测器是为了回答 Stackoverflow 上的另一个问题而编写的,我想将其转换为 PHP,我不是在找人为我做这件事,但我对部分 Python 代码感到困惑我不知道。我查看了 python 文档,但它让我更加困惑。
什么是 PHP 等价物?
/li>xrange到底是什么?有一个 PECL 扩展,但是我更喜欢纯 PHP 实现?这可能吗?
/li>断言有什么作用?是否相当于抛出异常?
/li>Python Pickle,本质上是序列化吗?
/li>
谢谢你的帮助。
编辑:错别字。
redis - 带有 Redis 的马尔可夫链
出于自学的目的,我想实现一个马尔可夫链生成器,使用尽可能多的 Redis,并尽可能少的应用程序级逻辑。
假设我想基于历史深度为 N(例如,2)的频率表构建一个单词生成器。
作为一个不太有趣的例子,对于两个单词bar
和的字典baz
,频率表如下(“.”是终止符,数字是权重):
当我生成这个词时,我从两个终结者的历史开始. .
前两个字母只有一个可能的结果,b a
。
第三个字母可能是r
或z
,概率相等,因为它们的权重相等。
第四个字母始终是终止符。
(字典中的单词越长越有趣。)
无论如何,如何优雅地使用 Redis 做到这一点?
Redis 集有SRANDMEMBER
,但没有权重。
Redis 排序集具有权重,但没有随机成员检索。
Redis 列表允许将权重表示为条目副本,但是如何与它们进行集合交集呢?
看起来应用程序代码注定要做一些数据处理......
matlab - 从转移矩阵中找到下一个状态?随机游走 Matlab 仿真
我正在尝试在 matlab 中对随机游走移动模型进行建模,但我遇到了从转移矩阵中寻找下一个状态的问题。我已经创建了状态转换矩阵,但我不知道如何找到下一个状态?
我知道我从过渡矩阵中获得了每个状态的所有概率,但我需要根据这些概率实际选择下一个状态是什么。有人可以帮我吗?
statistics - 贝叶斯网络开源
谁能推荐一个好的开源或免费的贝叶斯网络软件程序?
我一直在使用baysealab上课,但是我的帐户将过期,我想继续构建和使用bns。
r - R:如何生成一系列总和为某个数字的指数偏差
我正在尝试为马尔可夫链生成一系列等待时间,其中等待时间是指数分布的数字,速率等于 1。但是,我不知道该过程的转换次数,而是该过程花费的总时间。
因此,例如:
t
是连续且独立的等待时间tt
的向量,是从 0 开始的实际转换时间的向量。
同样,问题是我不知道 t 的长度(即转换的数量),而不知道总等待时间将经过多少(即 tt 中最后一个条目的下限)。
在 R 中生成它的有效方法是什么?
python - 字母尺度和随机文本上的马尔可夫链
我想使用 .txt 文件中书中的字母频率生成随机文本,以便每个新字符 ( string.lowercase + ' '
) 依赖于前一个字符。
我如何使用马尔可夫链来做到这一点?或者对每个字母使用 27 个具有条件频率的数组是否更简单?
python - 带有 list 关键字的 Python 字典
我正在编写一个 N 阶马尔可夫链。
它是这样的:
不幸的是,列表和元组是不可散列的,我不能将它们用作字典中的关键字......我希望我已经很好地解释了我的问题,让你理解我试图实现的目标。
有什么好主意如何为字典关键字使用多个值?
后续问题:
我不知道元组是可散列的。但是哈希的熵似乎很低。元组可能存在哈希冲突吗?
probability - 这个骰子游戏的几率可以在合理的时间/空间内确定吗?
我在 Boardgame StackExchange 上问过这个问题,关于哪个角色更有可能赢得一场 Button Men 的比赛。这让我想到了在合理的时间内回答问题的具体方法。游戏规则相当简单。
在游戏开始时,每个玩家都掷出他们的多面体骰子。
拥有最低骰子的玩家首先进入(平局使用下一个最低的骰子)。
玩家可以通过两种可能的方式捕获对手死亡。
1)强力攻击:使用大于或等于值的单个骰子(然后重新滚动该骰子)。
2)技能攻击:用多个骰子完全等于一个对手死亡(重新掷骰子在捕获中使用的所有骰子)。
3)如果一个玩家不能抓住一个对手死亡,他们必须通过。
当玩家没有剩余骰子时,游戏结束。每个玩家从对手手中夺取的每个 dX 得分 X 分,剩余的每个骰子得分 0.5dX。(即如果您捕获了对手 d4, d4, d10, d12, d20,并且仍然拥有自己的 d20,则您的得分为 (4+4+10+12+20+0.5*20)=60 分。)
蛮力 Avis 角色掷出 d4、d4、d10、d12 和 dX(其中 dX 是 d4、d6、d8、d10、d12 或 d20)。这意味着他们在初始滚动后最多有 (4*4*10*12*20) 38,400 个状态。Iago 角色最多有 4d20(如果他们使用 d20 作为他们的 'dX' 摇摆骰子),给他们 160,000 种可能的起始状态。总之,这会导致 61.44 亿个可能的起始状态,而且事情会从这里变得更糟。如果没有任何试图找出最佳动作的智慧,就必须尝试所有可能的动作。在最坏的情况下,玩家可能会在技能攻击中重新掷出所有骰子。由于在游戏结束之前必须进行多达 8 次捕获,因此即使在每一方的强力攻击中重新滚动一个 d20 也会加起来(20^8 = 256 亿)。蛮力方法可能会导致评估 157+ Quintillion 或更多可能的状态。这是不可行的,但有更好的方法。蛮力方法多次重新评估相同的游戏状态。
马尔可夫链 如果我们观察游戏中一系列最终转换到最终游戏的可能状态,我们可以评估从游戏中的一个状态移动到另一个状态的几率,并最终得出每个角色获胜的几率游戏的开始。游戏仅以几种可能的状态结束(相对而言)。一个玩家没有骰子,而另一个玩家有一些自己的骰子组合(在下面的示例中,dX 摇摆骰子被选为 d20。这只是一个概念证明,所以不要担心这个骰子因游戏而异)。
安飞士:d4 | d10 | d12 | d20
安飞士:d4,d4 | d4,d10 | d4,d12 | d4,d20
安飞士:d4,d4,d10 | d4,d4,d12 | d4,d4,d20 | d4,d10,d12 | d4,d10,d20 | d4,d12,d20 | d10,d12,d20
安飞士:d4,d4,d10,d12 | d4,d4,d10,d20 | d4,d10,d12,d20
安飞士:d4,d4,d10,d12,d20
伊阿古:d20
伊阿古:d20,d20
伊阿古:d20,d20,d20
伊阿古:d20,d20,d20,d20
一旦为每个玩家对这些结束游戏状态进行评分,并确定该状态对于每个角色是赢还是输,就可以检查“倒数第二个”游戏状态。以类似的方式,可以确定每个“倒数第二个”游戏状态将导致我们的最终游戏状态之一的可能性。一些简单的电子表格计算得出大约 99 亿个游戏状态的结果(因为我只需要存储游戏状态的输赢性质,我应该能够将这些信息打包成一个位,对吧?)。这似乎不是一个不可逾越的游戏状态来存储/评估。
是否有可能在合理的时间和相当便宜的硬件上使用马尔可夫链回答哪个角色更好?
有没有更好的方法来解决这类问题?
python - 从矩阵生成马尔可夫模型
定义可能是错误的,如果是这样,请纠正我。我需要从以下类型的矩阵生成马尔可夫模型:
我需要输出类似于: {"four":[{2:"two", 3:"one",2:"exit"},{...}],"three":[{.. .}]}
上面的数字基本上是转换到特定状态的次数。
我为此使用python。
回答常见的问题“您尝试过什么?”:“我尝试了几种方法,但它们并没有完全交付,所以我希望其中一个答案有助于澄清一些事情”。
非常感谢。
编辑,更新以显示完整的矩阵。
java - 用于 DTMC 的稳态解决方案的 Java 库
我一直在使用jMarkov来分析 CTMC。这似乎是为此目的定义最完善的 Java 库。我分析的其中一个部分还需要 DTMC 的稳态解决方案。尽管 jMarkov 手册中提到它也可以处理 DTMC,但作者似乎忽略了这种情况。因此,图书馆的文档似乎不完整。
有人可以指导我完成 jMarkov 或将我指向手册中可能有用的部分吗?如果存在另一个我可以使用的库,那也很棒。此外,如果有人能指出一个 Java 实现来帮助我找到矩阵的特征向量,我会很好。
谢谢!