首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中表示prolog事实和规则库的最佳数据结构是什么

在python中表示prolog事实和规则库的最佳数据结构是什么
EN

Stack Overflow用户
提问于 2017-03-23 20:24:53
回答 1查看 177关注 0票数 0

我正在寻找在python中表示prolog事实和规则库的最佳数据结构,以便稍后易于操作,例如:

代码语言:javascript
复制
    parent(abraham,ismael).
    parent(abraham,isaac).
    parent(isaac,iacob).
    grandfather(B,N):- parent(B,P),parent(P,N).

是像这样的嵌套列表吗:

代码语言:javascript
复制
base=[["parent","abraham","ismael"],["parent","abraham","isaac"],["parent","isaac","iacob"]]

或者使用字典:

代码语言:javascript
复制
base={"parent": ("abraham","ismael") ,"parent": ("abraham","isaac"), "parent":("isaac","iacob") }

或者,在这种情况下,你有没有什么最好的表示方法。

PS:我的意思是:最简单,最容易,最灵活的方式。

EN

回答 1

Stack Overflow用户

发布于 2017-03-23 22:38:59

您可以直接在prolog中使用类似python的文字dict语法。

解决方案

代码语言:javascript
复制
{
    'parent':
    {
        'name_of_parent': 'abraham' ,
        'name_of_child': 'isaac'
    }
}
.

{
    'parent':
    {
        'name_of_parent': 'isaac'   ,
        'name_of_child': 'iacob'
    }
}
.

{
    'grandfather':
    {
        'name_of_grandfather':  __B__   ,
        'name_of_grandchild':   __N__
    }
}
:-
(
    {
        'parent':
        {
            'name_of_parent': __B__ ,
            'name_of_child': __P__
        }
    }
    ,
    {
        'parent':
        {
            'name_of_parent': __P__ ,
            'name_of_child': __N__
        }
    }
)
.

示例查询

代码语言:javascript
复制
?- 
{
    'grandfather':
    {
        'name_of_grandfather':  __B__ ,
        'name_of_grandchild':   __N__
    }
}
.
__B__ = abraham,
__N__ = iacob ;
false.

注意事项

可能不会为您的:实现自动定义prolog运算符。如果由于:而出现语法错误,请将以下代码放在文件的顶部:

代码语言:javascript
复制
:-  op((10'1),(yfx),(:))    .
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42975993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档