2014-11-22 35 views
3

我正在学习序言。我想知道如何在prolog中表示以下事实?
“有些城市和一些城市之间有300英里”。 任何人都可以帮助please.I已经找到了足够的,但无法找到解决我的具体问题。在序言中代表以下事实

+0

请不要编辑您的问题的答案。如果您想回答自己的问题,请转到下面的答案框并发布您自己的答案。你甚至可以接受你自己的答案,作为最能帮助你的答案。这个结构保持StackOverflow干净。 – Sumurai8 2014-11-23 10:56:41

+0

'distance_between_cities(someCityA,someCityB,300).'? – 2014-12-02 15:35:29

+0

是的,我做了同样的事情,很久以前。无论如何,谢谢。 – Qubad 2014-12-10 12:53:39

回答

2

Prolog允许通过事实和规则来表示知识。一个 事实和规则具有以下格式:

A :- A1, .., An 

其中A,A1,...,一个是所谓的文字。如果n = 0,那么它的一个事实是,如果n> 0那么它是一个规则。

一个文字具有folllowing语法,名称是谓词名称 和术语是谓词的参数:

literal = atom [ "(" term { "," term } ]. 

知识respresentation本身就是一种艺术。该表示可以有许多要求,这可以强制它具有某种形式。

但是,您可以将其视为一个字面表达式,用于使用 来保存表格。描述列名的列 没有进入的Prolog的事实和规则,但你可以使用 Prolog的comments进入列名,如:

% distance_between_cities(Atom, Atom, Float) 

或者更具体:

% distance_between_cities(CityId, CityId, DistanceMiles) 

第一评论后,你只要输入的事实:

distance_between_cities('New York, US','Los Angeles, US',2443.85). 
    distance_between_cities('New York, US','San Francisco, US',2563.89). 
    distance_between_cities('Los Angeles, US','San Francisco, US',347.18). 

不同的谓词的名字可以命名各色nt excel表 可以这么说。一些prolog系统甚至有接口。

再见