2014-11-22 46 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系統甚至有接口。

再見