Knowledge 複習內容

2021-10-01 07:30:53 字數 3078 閱讀 4392

前面都講的是知識表示和知識推理的內容,也就是人工智慧裡面的符號主義的學派(另乙個是連線主義),把腦袋中儲存的知識用符號表示,用什麼符號呢?邏輯的形式化語言來表示,我們講了兩個邏輯,乙個命題邏輯和一階謂詞邏輯,表式的範圍是不一樣,命題邏輯能夠表達能力小一些。

兩套邏輯,講課思路如圖。每一種邏輯都會定義形式語言、定義形式語法,語言要定義清楚。任何一種程式語言,比如c等要定義清楚語法。這兩種不同的邏輯表達邏輯不同,裡面基本要素不同。

命題邏輯中有兩個基本要素:原子命題大寫字母表示,太陽從東方公升起,可以用p表示。還有各種連線詞(5個)原子命題通過連線詞可以連線成複雜的sentence,可以得到kb。對應的一階謂詞邏輯中,表達能力強,基本要素就擴充了引入了變數和常量,還有函式的概念,函式可以是k元的函式,k個object通過某種關係對映到另乙個object上面。同時還有謂詞的概念,可以理解是特殊的函式,自變數也可以是k元的,值只有2個,true或者false,相當於乙個特殊的函式。還有全稱量詞和存在量詞還有乙個等於的符號,這些構成了基本要素。在命題邏輯中有原子命題,在一階謂詞中首先定義了原子senten,經過連線詞構造成複雜sentence

左側那個是,任何邏輯都想說有了kb,可以從語義上蘊含新的知識,所以我們kb乙個怎麼蘊含乙個新的sentence  a ,這個蘊含要給出乙個形式的定義。這定義是什麼呢?任意的乙個模型,如果使得kb為真,都能使得a為真,那麼我們說kb蘊含a。這個是乙個基本的概念。但是,我們要分別去看,在命題邏輯怎麼才能叫它的乙個模型,在一階謂詞中怎麼又可以稱為它的乙個模型。在命題邏輯裡面,假設kb中有k個原子命題,那麼我做一次真值指派,相當於我要把k個原子命題,每乙個都賦值真假。在這樣乙個真值指派下,我們要檢測蘊含的a是不是為真。他有多少種真值指派2^k個。在一階謂詞邏輯中,這個模型就比較複雜,所謂對它做乙個解釋。我們要kb中每乙個object指派到現實生活的object,然後他的每乙個predicate,在kb中就是乙個符號,一串字母,要指到現實生活中關係上,我們做了這個指派之後,我們去檢查,是不是這個模型使得kb為真,然後我們就可以使得a為真,這個指派與命題邏輯中真值指派完全不同,要指派object和具體哪乙個關係。左側一定要搞清蘊含的基本概念是什麼,有了概念之後,我給你一堆kb,我就可以得到另乙個集合,這裡面每乙個sentence,都是通過kb蘊含出來,相當於是sentence的新的集合

右側,而是語法上的推演,左側叫entailment,右側叫deduction,這兩個是不一樣的,那麼在命題邏輯中,我們講了三套形式推演的系統,第乙個有11個規則,第二個是歸結原理。第三個是mp規則。第三個並不適用於一般的kb,只適用於包含definite clause(每乙個sen有且僅有乙個正文本),我們才可以使用mp規則。那在一階謂詞邏輯中,我們只講了兩套規則generate resolutiongenerate mp。乙個是三套乙個是兩套。11條規則那套規則不考,其他的都會考。那麼不管怎麼說,我給乙個套形式推演規則,我可以使用形式推演得到另外乙個集合,用那些推演規則推出來的,右側是推出來的,也是乙個集合

怎麼評估這一套形式推演規則是不是好,怎麼知道好?任意的形式推演規則都要證明完備性和可靠性,可靠性實際上,右側集合是左側的子集,完備性是左側是右側的子集。那麼,我們在命題邏輯中,我們非常形式化的證明了歸結原理和mp規則的完備性和可靠性,這個是重點。

但是在一階謂詞中,我們沒有去證明,因為比較複雜。具體講,由於一階謂詞中,語言豐富,所以他的推演系統複雜一些,比如用歸結原理,基本的步驟,要把一階謂詞中每乙個sen都轉換成合取正規化的形式。與此同時,這個步驟其實有好幾步,第一步要把裡面用存在量詞修飾的變數變成sigaone化,去掉存在量詞。裡面的每乙個變數都是全稱量詞表示,就把全稱去掉,這個情況下,再做各種語義上等價轉換變成合取正規化形式。然後做歸結原理來證明。

另外我們左側有乙個重要的知識往往要證明kb是否可以蘊含a?但是我們在講課的時候,我證明這個東西不是直接證明,轉換為乙個等價的式子,證明kb implement a 這個sentence是不是永真的?這個他的乙個等價形式,或者證明kb合取否的a是不是永假的?要把這個記住。

右側,我們有了這個kb之後,我們特別是做了謂詞邏輯之後,講完謂詞邏輯之後,我們用謂詞邏輯就可以表示生活中知識,比如不到長城非好漢,到了長城就是好漢。可以用符號表達這些知識,這個過程就是乙個知識表示的乙個過程。有了知識表示,就可以做形式推演。

最重要的,介紹了prolog這個語言,他的程式設計模式和c等不同。這個程式設計模式,kb寫好,然後想要問啥就問一下,然後回答你的問題,求解的過程你是不知道的,求解的過程實際上是乙個搜尋的過程。prolog中kb只能包含有且只有乙個正文本的句子。因為一般的東西,歸結過程複雜度非常高。而且為了效率考慮,有可能推出錯的東西,有可能正確的推不出來。即便這樣,還是有人再用。

最後,我們要知道,雖然在命題和一階謂詞邏輯中均有自己形式推演系統,而且命題邏輯和一階謂詞邏輯中歸結原理都是完備和可靠的,命題邏輯歸結系統總是可能停機(找不到句子可以歸結或者找到乙個句子是空子句),但是在一階謂詞邏輯中可能不停機,可能永遠歸結下去。你不知道他將來能不能找到空子句。這就是引入了更多表達能力,系統上就會有缺陷。

NOIP複習內容

考了幾天試,感覺noip的內容其實也挺雜的 主要還是以計數為主吧,容斥原理 組合數什麼的都要學好 概率期望是重點 斯特靈數 尤拉函式 擴充套件歐幾里得 其實我連逆元是什麼都不知道 線段樹 樹狀陣列比較常見,一定要學好 注意公式的化簡,然後還有一些單調資料結構。線段樹有空做一做gss系列吧 tarja...

C 時常複習內容

繼承 多型 封裝首先是建立在繼承的基礎上,先有繼承才有多型 多型是指不同的子類在繼承父類後分別都重寫覆蓋了父類的方法1.指標是乙個實體,引用僅是乙個別名 2.引用時無需引用 指標需要引用 3.引用只能在定義時初始化一次,之後不可變 指標可變 引用從一而終 4.引用沒有const 指標有const c...

今天的複習內容

第一題 看程式說答案 int a 10 int b 3 int c a b int d a b int e a b int f a b int g a b a 10 a 11 b 3 b 2 第二題 看程式說答案 int a 10 a 2 a a 2 12 a 3 a a 3 7 a 4 a a 4...