haskell的世界观(4)

2007/4/2 monad (4)
 
Haskell de facto describes a quantum world.
-- St. Monad
 
先讲一个故事吧,薛定谔的猫(Schrodinger's cat)的故事。这是关于量子理论的一个理想实验。
 
这个猫十分可怜,她(假设这是一只雌性的猫,以引起更多怜悯)被封在一个密室里,密室里有食物有毒药。毒药瓶上有一个锤子,锤子由一个电子开关控制,电子开关由放射性原子控制。如果原子核衰变,则放出阿尔法粒子,触动电子开关,锤子落下,砸碎毒药瓶,释放出里面的氰化物气体,雌猫必死无疑。这个残忍的装置由薛定谔所设计,所以雌猫便叫做薛定谔猫。原子核的衰变是随机事件,物理学家所能精确知道的只是半衰期——衰变一半所需要的时间。如果一种放射性元素的半衰期是一天,则过一天,该元素就少了一半,再过一天,就少了剩下的一半。但是,物理学家却无法知道,它在什么时候衰变,上午,还是下午。当然,物理学家知道它在上午或下午衰变的几率——也就是雌猫在上午或者下午死亡的几率。如果我们不揭开密室的盖子,根据我们在日常生活中的经验,可以认定,雌猫或者死,或者活。这是她的两种本征态。但是,如果我们用薛定谔方程来描述薛定谔猫,则只能说,她处于一种活与不活的叠加态。我们只有在揭开盖子的一瞬间,才能确切地知道雌猫是死是活。此时,猫的波函数由叠加态立即收缩到某一个本征态。量子理论认为:如果没有揭开盖子,进行观察,我们永远也不知道雌猫是死是活,她将永远到处于半死不活的叠加态。这与我们的日常经验严重相违,要么死,要么活,怎么可能不死不活,半死半活?

薛定谔挖苦说:按照量子力学的解释,箱中之猫处于“死-活叠加态”——既死了又活着!要等到打开箱子看猫一眼才决定其生死。(请注意!不是发现而是决定,仅仅看一眼就足以致命!)正像哈姆雷特王子所说:“是死,还是活,这可真是一个问题。”只有当你打开盒子的时候,迭加态突然结束(在数学术语就是“坍缩(collapse)”),哈姆雷特王子的犹豫才终于结束,我们知道了猫的确定态:死,或者活。哥本哈根的几率诠释的优点是:只出现一个结果,这与我们观测到的结果相符合。但是有一个大的问题:它要求波函数突然坍缩。但物理学中没有一个公式能够描述这种坍缩。尽管如此,长期以来物理学家们出于实用主义的考虑,还是接受了哥本哈根的诠释。付出的代价是:违反了薛定谔方程。这就难怪薛定谔一直耿耿于怀了。

哥本哈根诠释在很长的一段时间成了“正统的”、“标准的”诠释。但那只不死不活的猫却总是像恶梦一样让物理学家们不得安宁。格利宾在《寻找薛定谔的猫》中想告诉我们的是,哥本哈根诠释在哪儿失败,以及用什么诠释可以替代它。

1957年,埃弗雷特提出的“多世界诠释”似乎为人们带来了福音,虽然由于它太离奇开始没有人认真对待。格利宾认为,多世界诠释有许多优点,由此它可以代替哥本哈根诠释。我们下面简单介绍一下埃弗雷特的多世界诠释。

格利宾在书中写道:“埃弗雷特……指出两只猫都是真实的。有一只活猫,有一只死猫,但它们位于不同的世界中。问题并不在于盒子中的放射性原子是否衰变,而在于它既衰变又不衰变。当我们向盒子里看时,整个世界分裂成它自己的两个版本。这两个版本在其余的各个方面都是全同的。唯一的区别在于其中一个版本中,原子衰变了,猫死了;而在另一个版本中,原子没有衰变,猫还活着。”

也就是说,上面说的“原子衰变了,猫死了;原子没有衰变,猫还活着”这两个世界将完全相互独立地演变下去,就像两个平行的世界一样。格利宾显然十分赞赏这一诠释,所以他接着说:“这听起来就像科幻小说,然而……它是基于无懈可击的数学方程,基于量子力学朴实的、自洽的、符合逻辑的结果。”“在量子的多世界中,我们通过参与而选择出自己的道路。在我们生活的这个世界上,没有隐变量,上帝不会掷骰子,一切都是真实的。”按格利宾所说,爱因斯坦如果还活着,他也许会同意并大大地赞扬这一个“没有隐变量,上帝不会掷骰子”的理论。

这个诠释的优点是:薛定谔方程始终成立,波函数从不坍缩,由此它简化了基本理论。它的问题是:设想过于离奇,付出的代价是这些平行的世界全都是同样真实的。这就难怪有人说:“在科学史上,多世界诠释无疑是目前所提出的最大胆、最野心勃勃的理论。”
读过大学物理的人大概都能够想起来这个故事。
 
haskell里的monad就好像故事里的这只小猫:当它在pure functional的世界被构造出来之后,尚未进入真实世界的时候,它就仿佛处于一个“波函数叠加”的状态,当其一进入真实世界——也就是被我们所“观察”的时候——“波函数”就坍塌了,“生死得以确知”——副作用得以发生。
 
拿之前所举的随机数的函数rollDice来说,其中的rand(1,6)在我们还没有“观察”它的时候,它既不是1,也不是2,也不是3,也不是4,也不是5,也不是6,它其实是以在1~6都可能的概率存在——描述这个概率的“波函数”是确定的,所以之前我说,rollDice :: IO Integer//rand(1,6)是pure function。为什么?因为rand(1,6)是一个“波函数”,这个“波函数”是确定的,所以rollDice函数每次都会返回同一个“波函数”,而这个“波函数”此刻并未被求值,因此说rollDice是完全符合pure function的定义的。
 
“波函数”就是monad对真实世界的描述,它用确知的方程式描述不确知的真实世界。
 
一切为了和谐。
 
ps, 巧的是,还真有人用平行世界的观点来诠释haskell的世界观,看来也是不希望薛定谔方程被违背的人呀!哈哈。
 
st.monad@gmail.com原创,转贴请注明出处,谢谢!
 
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值