【问题标题】:Are Functional Programming & Markov Chains related somehow?函数式编程和马尔可夫链是否以某种方式相关?
【发布时间】:2017-06-05 20:49:32
【问题描述】:

David Silver 将马尔可夫链的一个属性描述为:

鉴于现在,未来独立于过去

https://www.youtube.com/watch?v=lfHX2hHRMVQ(视频 4 分钟)

这引起了我的共鸣,因为我目前正在学习函数式编程 (FP)。

在 FP 中,您也可以忽略过去,因为您的函数只需要当前状态即可执行某些操作并输出新状态。面向对象不一定是这样,因为您的输出可能取决于不同位置的多个状态。

FP 和马尔可夫链之间是否存在一些我不知道的更深层次的联系?

是否准确地说,例如,用 FP 编写的函数是确定性马尔可夫链?

【问题讨论】:

  • 您可能只是在考虑状态机(AKA 有限自动机)。
  • “不同的地方”!=“过去”。同样在 OOP 中,未来状态将仅取决于当前状态,而不取决于先前的操作。这是时间的基本属性,这使得马尔可夫链适用于建模。它与 FP 无关,只是两者都与数学密切相关。
  • 自从 Markov 于 1922 年去世以来,我想说他对 Markov 链的想法并不包括函数式编程。

标签: math functional-programming lambda-calculus markov-chains markov


【解决方案1】:

马尔可夫链和函数式编程之间确实存在联系。马尔可夫链是一种非确定性Finite-State Machine (FSM),而链接 函数将产生确定性 FSM。这里需要注意的是,在现实世界中(例如,Web 应用程序),您通常还需要非纯函数(例如,修改或查询外部数据库)。

我发现将程序状态建模为有限状态机 (FSM) 非常有用,既可以作为隐喻,也可以作为建模状态和转换的具体方式。例如,在实现(Web)用户界面时,FSM 很好地表示which actions are allowed at which state

【讨论】:

  • 优秀 - 我喜欢将纯函数程序视为确定性 FSM 的想法。而且我认为仅仅在 FSM 中添加一些随机性就可以得到一个马尔可夫链,这看起来很酷,它起初似乎与函数式编程完全无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多