Freewind @ Thoughtworks scala java javascript dart 工具 编程实践 月结 math python english [comments admin] [feed]

(2013-01-04) 学习prolog对学习离散数学是否有帮助?

广告: 云梯:翻墙vpn (省10元) 土行孙:科研用户翻墙http proxy (有优惠)

在“离散数学及其应用”这本书里,提到了prolog这门语言。它是一种逻辑推理语言,跟我们平时使用的“命令式”语言差别很大,在人工智能等方面用得很广泛。

我看了一些关于它的介绍,也写了简单的hello world,感觉它跟离散数学有关系。比如这样的一个简单的程序:

image

我们写的代码,都是一些事物及规则,对应离散数学中的“谓词”。然后,就可以向prolog询问:

Prolog就会回答:Yes, No。

这的确很神奇,而且可以看出它的确使用了离散数学里的那些逻辑推理的知识。使用prolog,可以用很短的代码就可以解出“八皇后问题”,“数独”,“排序”等麻烦的问题,关键我们还不用写算法!只要我们准确地描述出规则,Prolog就会自动推理,得出我们想要的结论。让人觉得无比神奇。

但我感觉好像对我学习离散数学帮助不大。因为它的推理都是自动的,只告诉我结果。就算我学会了Prolog,我编程的时候:

  1. 按Prolog的语法规则,把题目输进去
  2. 查询,得到答案

这好像跟我直接翻书后的答案差不多。关键是中间的推理过程,我看不到。

所以我觉得学习Prolog对离散帮助有限,似乎应该反过来:学习离散数学后,才能很好的掌握Prolog,才能正确地使用它去解决某些领域的问题。

(因为我对离散数学学得很浅,对Prolog也只是hello world了一下,如果理解不对,欢迎指正。我在网上找不到这方面的经验,只好写篇文章,希望得到您的意见)

comments powered by Disqus