前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python逻辑编程实例

Python逻辑编程实例

原创
作者头像
用户3382876
修改2018-11-05 16:44:54
2.1K0
修改2018-11-05 16:44:54
举报
文章被收录于专栏:技术翻译

编程AI的一个主要部分是理解和输入逻辑,本教程给出了一些在Python中执行此操作的示例。

什么是逻辑编程?

逻辑编程是一种编程范例,它将计算视为对事实和规则构成的知识数据库的自动推理。它是一种编程方式,基于形式逻辑。这种语言的程序是一组逻辑形式的句子,表达关于问题域的事实和规则。其中,Datalog是一个这样的主要逻辑编程语言家族。

结构体

我们来谈谈事实和规则。事实是真实的陈述 - 比如,布加勒斯特是罗马尼亚的首都。规则是导致我们对问题域做出结论的约束。这些是表达事实的逻辑条款。我们使用以下语法编写规则(作为子句):

H - > B1,...,Bn。

我们可以这样读:

H if B1 and … and Bn.

这里,“H”是规则的头部,“B1,...,Bn”是身体。事实是没有身体的规则:

H。

一个例子是:

fallible(X) -> human(X)

每个逻辑程序都需要基于其来实现给定目标的事实。规则是能够让我们得出结论的约束。

逻辑与控制

将算法视为逻辑和控制的组合。

算法=逻辑+控制

在纯逻辑编程语言中,逻辑组件单独获得解决方案。但是,我们可以改变控制组件以执行逻辑程序的其他方法。

Python入门

准备使用Python进行逻辑编程,我们将安装几个包。让我们用pip来做这件事。

  • Kanren: 它让我们将逻辑表达为规则和事实,并简化了为业务逻辑制作代码的过程。
代码语言:javascript
复制
>>> pip install kanren
  • SymPy: 这是一个用于符号数学的Python库。它几乎是一个功能齐全的计算机代数系统。
代码语言:javascript
复制
>>> pip install sympy

Python逻辑编程实例

通过逻辑编程,我们可以比较表达式并找出未知值。考虑以下代码:

代码语言:javascript
复制
>>> from kanren import run,var,fact
>>> from kanren.assoccomm import eq_assoccomm as eq
>>> from kanren.assoccomm import commutative,associative
>>> add='add' #Defining operations
>>> mul='mul'
>>> fact(commutative,mul) #Addition and multiplication are commutative and associative
>>> fact(commutative,add)
>>> fact(associative,mul)
>>> fact(associative,add)
>>> a,b,c=var('a'),var('b'),var('c') #Defining variables
>>> #2ab+b+3c is the expression we have'
>>> expression=(add, (mul, 2, a, b), b, (mul, 3, c))
>>> expression=(add,(mul,3,-2),(mul,(add,1,(mul,2,3)),-1)) #Expression
>>> expr1=(add,(mul,(add,1,(mul,2,a)),b),(mul,3,c)) #Expressions to match
>>> expr2=(add,(mul,c,3),(mul,b,(add,(mul,2,a),1)))
>>> expr3=(add,(add,(mul,(mul,2,a),b),b),(mul,3,c))
>>> run(0,(a,b,c),eq(expr1,expression)) #Calls to run()
​

((3,-1,-2),)

代码语言:javascript
复制
  >>> run(0,(a,b,c),eq(expr2,expression))

((3,-1,-2),)

代码语言:javascript
复制
 >> >  run(0,(a,b,c),eq(expr3,expression))

()

你会看到第三个表达式没有给我们什么。它在数学上是相同的,但在结构上是不同的。

在Python逻辑编程中检查素数

如果我们有一个数字列表,我们可以找出哪些是素数,也可以生成这样的数字。我们来看看如何。

代码语言:javascript
复制
>>> from kanren import isvar,run,membero
>>> from kanren.core import success,fail,goaleval,condeseq,eq,var
>>> from sympy.ntheory.generate import prime,isprime
>>> import itertools as it
>>> def prime_test(n): #Function to test for prime
if isvar(n):
return condeseq([(eq,n,p)] for p in map(prime,it.count(1)))
else:
return success if isprime(n) else fail
>>> n=var() #Variable to use
>>> set(run(0,n,(membero,n,(12,14,15,19,21,20,22,29,23,30,41,44,62,52,65,85)),(prime_test,n)))

{41,19,29,23}

代码语言:javascript
复制
>>> run(7,n,prime_test(n))

(2,3,5,7,11,13,17)

所以,这完全在Python逻辑编程中。希望你喜欢我们的解释。

结论 - Python AI逻辑编程

在这篇Python AI Logic Programming教程中,我们讨论了Python中逻辑编程的含义。此外,我们看到了Python逻辑编程的例子。此外,我们讨论了Prime数字的检查。但是,如果您对Python逻辑编程有任何疑问,请在注释选项卡中询问。

原文标题《Python Logic Programming With Example》

作者:Rinu Gour

译者:Sonia

不代表云加社区观点,更多详情请查看原文链接

原文链接:https://dzone.com/articles/ai-python-logic-programming-with-example

原文作者:Rinu Gour

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编程AI的一个主要部分是理解和输入逻辑,本教程给出了一些在Python中执行此操作的示例。
  • 什么是逻辑编程?
    • 结构体
      • 逻辑与控制
      • Python入门
      • Python逻辑编程实例
      • 在Python逻辑编程中检查素数
      • 结论 - Python AI逻辑编程
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档