左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家
180928 人已学习
新⼈⾸单¥98
登录后,你可以任选6讲全文学习
课程目录
已完结/共 119 讲
左耳听风
15
15
1.0x
00:00/00:00
登录|注册

39 | 编程范式:逻辑编程范式

《编程范式游记》系列文章
通过逻辑推导解决问题
不需要关心程序控制和具体实现算法
Prolog将业务逻辑抽象成规则、事实和问题的推导
使用Prolog推导各个地区的颜色
描述相邻地区的事实
定义相邻地区不能用相同颜色的规则
定义四种颜色
通过陈述事实和因果关系进行推导
基于谓词逻辑的理论
1995年确定了ISO Prolog标准
Prolog一直在北美和欧洲被广泛使用
分支出多种Prolog的方言,最主要的两种为Edinburgh和Aix-Marseille
最早由Alain Colmerauer与Philippe Roussel等人于20世纪60年代末研究开发
广泛应用于人工智能的研究
创建在逻辑学的理论基础之上
学习资源推荐
小结
经典问题:地图着色问题
Prolog的语言特征
Prolog语言
逻辑编程范式

该思维导图由 AI 生成,仅供参考

你好,我是陈皓,网名左耳朵耗子。
这节课重点介绍 Prolog 语言。Prolog(Programming in Logic)是一种逻辑编程语言,它创建在逻辑学的理论基础之上,最初被运用于自然语言等研究领域。现在它已被广泛地应用在人工智能的研究中,可以用来建造专家系统、自然语言理解、智能知识库等。
Prolog 语言最早由艾克斯马赛大学(Aix-Marseille University)的 Alain Colmerauer 与 Philippe Roussel 等人于 20 世纪 60 年代末研究开发的。1972 年被公认为是 Prolog 语言正式诞生的年份,自 1972 年以后,分支出多种 Prolog 的方言。
最主要的两种方言为 Edinburgh 和 Aix-Marseille。最早的 Prolog 解释器由 Roussel 建造,而第一个 Prolog 编译器则是 David Warren 编写的。
Prolog 一直在北美和欧洲被广泛使用。日本政府曾经为了建造智能计算机而用 Prolog 来开发 ICOT 第五代计算机系统。在早期的机器智能研究领域,Prolog 曾经是主要的开发工具。
20 世纪 80 年代 Borland 开发的 Turbo Prolog,进一步普及了 Prolog 的使用。1995 年确定了 ISO Prolog 标准。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Prolog是一种基于逻辑编程的语言,它建立在谓词逻辑的理论基础上,通过规则和事实的推导来解决问题。文章介绍了Prolog语言的起源和发展,以及其逻辑编程的特点和应用。通过示例展示了Prolog的逻辑推导能力,包括定义哲学家和地图着色问题。逻辑编程范式将业务逻辑抽象成规则和事实的推导,无需关心具体实现算法,使得解决问题更加简洁和有趣。读者可以通过学习资源进一步了解Prolog,探索其在人工智能等领域的应用。文章内容生动有趣,展示了Prolog独特的编程范式和推理能力,对于想要了解逻辑编程的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《左耳听风》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • neohope
    看《七周七语言》的时候,初步学习过Prolog,有个不错的入门英文教程:http://www.amzi.com/,上面的例子还蛮有意思的。说实话Prolog对我来说,不像是在编程,而更像是在做线性规划:根据限制和初始条件,找到解。十分感兴趣这个推导过程Prolog是如何实现的。耗哥这方面有推荐的读物吗?感谢:) 个人感觉,在这个推导过程中,其实比起些现在这些通过统计学、神经网络及大数据喂出来的怪兽,比如NLP、google翻译、人工智能什么的,感觉这个逻辑简单,更适合入门一些。
    2018-06-19
    29
  • minghu6
    prolog确实在解决一些需要频繁回溯的问题上相当好用,是真正的描述规则,然后自动求解的人性化语言。
    2018-03-12
    9
  • 一墨
    难得看到这么短小的皓哥:) 也猜到回复肯定不会多, 因为理解到和用到的人少嘛:) 在此贡献一点点,作为皓粉的投名状. 之前做过一个项目, 里面用到基于C/C++的iSAT库求解Boolean Satisfaction Problem. iSAT的使用方法也是 (1) 先描述一些限制条件, 如文中所说到陈述事实; (2) 调用iSAT库进行求解, 该库内部使用BDD算法得到一个不违反限制条件的解或者没有解, (3) 根据iSAT返回的计算结果判断回到 (1)修改限制条件继续执行, 或是找到满意的计算结果停止计算. 除本文提到的着色问题以外,这一类问题其实有很多(参考NP问题), 我将其归纳为具有明确限制的启发式问题, 其最明显的特征是有规范的数学定义, 变量X离散且取值范围有限. 由于是离散的, 所以不能保证有最优解, 只有近似最优解. 至于实际应用嘛, 和算法的应用类似, 只要能把某一类问题简化为这一类问题的数学格式, 就可以套用这一类问题的通用解法, 也即是可以使用逻辑编程的范式, 不需要过多关注内部实现
    2020-06-06
    6
  • 靠人品去赢
    你好,看完觉得Prolog这类语言,我只管业务,不管实现的。入门可能会简单,隐藏了许多技术细节,但实际上效率会不高,如果没有对应的活跃社区提供相关库的话。就害怕像“人人都是产品经理”,那样,弄了很多不知道技术边界的人导致各种各样的问题。
    2019-06-24
    5
  • Johnny
    看完这节课,突然想重新学一下离散数学里的数理逻辑部分了。
    2020-04-27
    4
  • edisonhuang
    逻辑编程很类似推理中的三段论,首先给出大前提,然后给出小前提,最后推导结论。 大前提哲学家都是人,小前提苏格拉底是哲学家,结论就是苏格拉底也是人 基于逻辑的编程让我们关注真正的事,忽略控制
    2019-06-27
    3
  • 还是这么好玩的语言,这是怎么玩到的?
    2020-02-29
    2
  • limix
    这个很不错,之前看逻辑学,找到谓词逻辑的实用场景了,非常感谢
    2022-05-15
    1
  • 大叶枫
    扩展阅读:《逻辑编程:上古人工智能语言Prolog》https://zhuanlan.zhihu.com/p/675489177
    2024-02-22归属地:浙江
  • Jade@pluto-lang
    L. Suresh _et al._, “Building Scalable and Flexible Cluster Managers Using Declarative Programming,” 2020, pp. 827–844. Accessed: May 25, 2022. [Online]. Available: [https://www.usenix.org/conference/osdi20/presentation/suresh](https://www.usenix.org/conference/osdi20/presentation/suresh) 一篇文章,基于逻辑编程范式的调度系统设计,在思考这种方式是不是还可以应用到更多的领域。
    2022-08-28归属地:北京
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部