在“离散数学及其应用”这本书里,提到了prolog这门语言。它是一种逻辑推理语言,跟我们平时使用的“命令式”语言差别很大,在人工智能等方面用得很广泛。
我看了一些关于它的介绍,也写了简单的hello world,感觉它跟离散数学有关系。比如这样的一个简单的程序:
我们写的代码,都是一些事物及规则,对应离散数学中的“谓词”。然后,就可以向prolog询问:
Prolog就会回答:Yes, No。
这的确很神奇,而且可以看出它的确使用了离散数学里的那些逻辑推理的知识。使用prolog,可以用很短的代码就可以解出“八皇后问题”,“数独”,“排序”等麻烦的问题,关键我们还不用写算法!只要我们准确地描述出规则,Prolog就会自动推理,得出我们想要的结论。让人觉得无比神奇。
但我感觉好像对我学习离散数学帮助不大。因为它的推理都是自动的,只告诉我结果。就算我学会了Prolog,我编程的时候:
这好像跟我直接翻书后的答案差不多。关键是中间的推理过程,我看不到。
所以我觉得学习Prolog对离散帮助有限,似乎应该反过来:学习离散数学后,才能很好的掌握Prolog,才能正确地使用它去解决某些领域的问题。
(因为我对离散数学学得很浅,对Prolog也只是hello world了一下,如果理解不对,欢迎指正。我在网上找不到这方面的经验,只好写篇文章,希望得到您的意见)