Pyke 學(xué)習(xí)筆記(二)

規(guī)則

Pyke 通過回溯的方式蓬蝶,嘗試每個(gè)可能的匹配尘分。因此,同一規(guī)則可能多次適用成功丸氛,每次成功匹配的是不同的事實(shí)培愁。在規(guī)則的 if 子句的“前提列表”中,是進(jìn)還是退缓窜、是上還是下定续,取決于前提的證明是成功還是失敗。在列表中往后退禾锤,嘗試別的證明辦法私股,這個(gè)過程叫做回溯。


推理

規(guī)則保存在規(guī)則庫中恩掷,各有不同的具體內(nèi)容倡鲸。規(guī)則之間沒有嵌套和顯性關(guān)聯(lián)。Pyke 必須自己設(shè)法來解決規(guī)則之間的整合黄娘,以完成某些大型任務(wù)峭状。 Pyke 用的辦法叫做“推理”,它有兩種不同的方式:

1)應(yīng)用正向推理規(guī)則逼争,要求規(guī)則庫已經(jīng)激活优床。 正向推理規(guī)則可以斷言新的事實(shí),可以激活更多的規(guī)則庫誓焦。?

2)當(dāng)你的程序要求 Pyke 證明某個(gè)具體目標(biāo)時(shí)胆敞,使用反向推理規(guī)則(例如,向 Pyke 詢問)。 應(yīng)用這些規(guī)則移层,是為了回答某個(gè)問題仍翰,而非斷言新事實(shí),或者激活更多的規(guī)則庫幽钢。 反向推理規(guī)則歉备,還能匯集 Python 函數(shù),形成具體的“調(diào)用順序圖”或叫做“方案圖”的程序匪燕,以處理實(shí)際問題蕾羊。


正向推理(用?foreach?和?asssert?代替?if?和?then

規(guī)則庫激活后,正向規(guī)則執(zhí)行的順序帽驯,以其在.krb規(guī)則庫文件中的次序?yàn)闇?zhǔn)龟再。

為了進(jìn)行正向推理,Pyke 查看哪個(gè)規(guī)則的 if 子句尼变,與已知事實(shí)相匹配( if 子句可以多次匹配成功利凑,參見“回溯”)。 規(guī)則匹配成功后嫌术,開始啟用它哀澈,將其 than 子句中的事實(shí),加入已知事實(shí)的列表度气。 新的事實(shí)與其他正向規(guī)則 if 子句匹配后割按,可以將其啟用。各種深度的推理過程磷籍,都可發(fā)生這種匹配适荣。正向推理的過程,持續(xù)到?jīng)]有規(guī)則可供使用院领。

規(guī)則的 if 子句中有事實(shí)陳述的模式弛矛,它們可能與幾個(gè)事實(shí)匹配,于是比然,規(guī)則可能多次匹配啟用丈氓。 規(guī)則 then 子句的事實(shí)陳述也有模式。每當(dāng)規(guī)則啟用谈秫,then 子句中的模式變量扒寄,可以約束成不同值,從而斷言出不同事實(shí)拟烫。

注意,foreach?子句末尾的事實(shí)迄本,可以多次匹配成功硕淑,由此多次啟用?assert?子句。?

可是,?foreach?子句起始的事實(shí)置媳,僅能匹配失敗一次于樟。若匹配失敗,整個(gè)規(guī)則適用失敗拇囊。

例子


反向推理 (用?use?和?when?代替?then?和 if)

Pyke 的證明活動(dòng)迂曲,開始于尋找某一規(guī)則,其 then 子句與目標(biāo)匹配寥袭。?

Pyke 接著證明規(guī)則 if 子句為真路捧。?

亦即:規(guī)則的 if 子句,與另一規(guī)則的 then 子句传黄,可以建立連接杰扫。

Pyke 最終會(huì)形成一條“證據(jù)鏈”,從第一條規(guī)則的 if 子句開始膘掰,到下一規(guī)則的 then 子句結(jié)束章姓。

Pyke 只允許在 use 子句里出現(xiàn)一個(gè)事實(shí)陳述,這與正向推理的 assert 子句(允許多個(gè)事實(shí))不同识埋。

在向 Pyke 求證某個(gè)目標(biāo)的要求之后凡伊,這些規(guī)則才被調(diào)用。?

提出求證要求的最簡方式窒舟,是用函數(shù)?some_engine.prove_1_goal?或者?some_engine.prove_goal系忙。函數(shù)?prove_1_goal?返回找到的第一個(gè)證據(jù)后,便停止運(yùn)行(或者引起意外:pyke.knowledge_engine.CanNotProve)辜纲。函數(shù)?prove_goal?返回的是求證過程中產(chǎn)生的全部證據(jù)的“管理器”笨觅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耕腾,隨后出現(xiàn)的幾起案子见剩,更是在濱河造成了極大的恐慌,老刑警劉巖扫俺,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苍苞,死亡現(xiàn)場離奇詭異,居然都是意外死亡狼纬,警方通過查閱死者的電腦和手機(jī)羹呵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疗琉,“玉大人冈欢,你說我怎么就攤上這事∮颍” “怎么了凑耻?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵太示,是天一觀的道長。 經(jīng)常有香客問我香浩,道長类缤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任邻吭,我火速辦了婚禮餐弱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘囱晴。我一直安慰自己膏蚓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布速缆。 她就那樣靜靜地躺著降允,像睡著了一般。 火紅的嫁衣襯著肌膚如雪艺糜。 梳的紋絲不亂的頭發(fā)上剧董,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機(jī)與錄音破停,去河邊找鬼翅楼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛真慢,可吹牛的內(nèi)容都是我干的毅臊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼黑界,長吁一口氣:“原來是場噩夢啊……” “哼管嬉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起朗鸠,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蚯撩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后烛占,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胎挎,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年忆家,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犹菇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芽卿,死狀恐怖揭芍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卸例,我是刑警寧澤沼沈,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布流酬,位于F島的核電站币厕,受9級特大地震影響列另,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旦装,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一页衙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阴绢,春花似錦店乐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至左电,卻和暖如春廉侧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背篓足。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人两踏。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓授段,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涩哟。 傳聞我的和親對象是個(gè)殘疾皇子索赏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容