逻辑编程是一种编程范例,它将计算视为对事实和规则构成的知识数据库的自动推理。它是一种编程方式,基于形式逻辑。这种语言的程序是一组逻辑形式的句子,表达关于问题域的事实和规则。其中,Datalog是一个这样的主要逻辑编程语言家族。
我们来谈谈事实和规则。事实是真实的陈述 - 比如,布加勒斯特是罗马尼亚的首都。规则是导致我们对问题域做出结论的约束。这些是表达事实的逻辑条款。我们使用以下语法编写规则(作为子句):
H - > B1,...,Bn。
我们可以这样读:
H if B1 and … and Bn.
这里,“H”是规则的头部,“B1,...,Bn”是身体。事实是没有身体的规则:
H。
一个例子是:
fallible(X) -> human(X)
每个逻辑程序都需要基于其来实现给定目标的事实。规则是能够让我们得出结论的约束。
将算法视为逻辑和控制的组合。
算法=逻辑+控制
在纯逻辑编程语言中,逻辑组件单独获得解决方案。但是,我们可以改变控制组件以执行逻辑程序的其他方法。
准备使用Python进行逻辑编程,我们将安装几个包。让我们用pip来做这件事。
>>> pip install kanren
>>> pip install sympy
通过逻辑编程,我们可以比较表达式并找出未知值。考虑以下代码:
>>> 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),)
>>> run(0,(a,b,c),eq(expr2,expression))
((3,-1,-2),)
>> > run(0,(a,b,c),eq(expr3,expression))
()
你会看到第三个表达式没有给我们什么。它在数学上是相同的,但在结构上是不同的。
如果我们有一个数字列表,我们可以找出哪些是素数,也可以生成这样的数字。我们来看看如何。
>>> 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}
>>> run(7,n,prime_test(n))
(2,3,5,7,11,13,17)
所以,这完全在Python逻辑编程中。希望你喜欢我们的解释。
在这篇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 删除。