數理邏輯在程序中的應用

1、數理邏輯簡介

       數理邏輯又稱符號邏輯、理論邏輯。它既是數學的一個分支,也是邏輯學的一個分支。是用數學方法研究邏輯或形式邏輯的學科。簡而言之,數理邏輯就是精確化、數學化的形式邏輯。

  邏輯是指事物的因果關係,或者說條件和結果的關係,這些因果關係可以用邏輯運算來表示,也就是用邏輯代數來描述。事物往往存在兩種對立的狀態,在邏輯代數中可以抽象地表示爲 0 和 1 ,稱爲邏輯0狀態和邏輯1狀態。邏輯代數中的變量稱爲邏輯變量,用大寫字母表示。邏輯變量的取值只有兩種,即邏輯0和邏輯1,0 和 1 稱爲邏輯常量,並不表示數量的大小,而是表示兩種對立的邏輯狀態。
邏輯代數又稱爲布爾代數,邏輯代數也叫做開關代數。他最初的產生思想是利用計算的方法來代替人們思維中的邏輯推理過程,直到1847年,英國數學家布爾發表了《邏輯的數學分析》,建立了“布爾代數”,並創造一套符號系統,利用符號來表示邏輯中的各種概念,初步奠定數理邏輯的基礎。它的基本運算是邏輯加、邏輯乘和邏輯非,也就是命題演算中的“與”、“或”、“非”,運算對象只有兩個數 0和 1,相當於命題演算中的“真”和“假”。邏輯代數的運算特點如同電路分析中的開和關、高電位和低電位,利用電子元件可以組成相當於邏輯加、邏輯乘和邏輯非的門電路,就是邏輯元件。還能把簡單的邏輯元件組成各種邏輯網絡,這樣任何複雜的邏輯關係都可以有邏輯元件經過適當的組合來實現,從而使電子元件具有邏輯判斷的功能。

       命題邏輯等值演算就是命題代數,命題代數是一種特殊的邏輯代數。我們把命題看作運算的對象,如同代數中的數字、字母或代數式,而把邏輯連接詞看作運算符號,就像代數中的“加、減、乘、除”那樣,那麼由簡單命題組成複合和命題的過程,就可以當作邏輯運算的過程,也就是命題的演算。這樣的邏輯運算也同代數運算一樣具有一定的性質,滿足一定的運算規律。例如滿足交換律、結合律、分配律,同時也滿足邏輯上的同一律、吸收律、雙否定律、狄摩根定律、三段論定律等等。利用這些定律,我們可以進行邏輯推理,可以簡化複合命題,可以推證兩個複合命題是不是等價,也就是它們的真值表是不是完全相同等等。設W是某一語言中所有命題構成的集合,且設T與F分別爲真、假命題,∨、∧、┐分別爲命題的析取、合取、否定聯結詞,則布爾代數〈W,∨,∧,,T,F〉就是命題代數。

       邏輯代數與命題代數有所不同。它可以把1和0分別解釋爲命題的真和假,令變元只取1和0爲值,即令其爲二值的真值變元,並把、∨和∧解釋爲真值運算,從而得到一種提供命題真值運算定律的真值代數。而且,在二值的真值代數中特別可以有定理“p=1或p=0”,但在一般的命題代數和類代數中卻沒有與此相應的定理。

       類代數就是集合代數。從邏輯代數、命題代數和類代數讓我想到了代數結構(代數系統),布爾代數、集合代數、命題代數都是帶兩個二元運算和一個一元運算的代數結構。這是抽象代數中的內容,以後有時間再進行總結。

2、程序中的命題邏輯

       邏輯代數在程序中無處不在,而一階邏輯在人工智能中也被廣泛應用。

       程序的結構主要有順序結構,條件結構和循環結構。數理邏輯在程序中的應用主要是條件結構,體現在語言上就是if...else...和switch控制語句。if後面括號裏面的表達式就是命題,當命題爲真時,執行緊跟後面的語句;爲假時,執行else後面的語句。在寫程序時,一定要注意複合命題的真假對應了哪些情況,熟悉命題公式的真值表,從而使自己的程序邏輯精確無誤。switch語句只是分支語句,進行多項選擇,並沒有對命題變量的真假做出判斷。有時需要對一些複雜的複合命題進行等值演算之後(也就是化簡公式),再將命題變項寫入條件中進行判斷,這是爲了簡化判斷邏輯以及代碼的複雜度。在寫if判斷語句時,主要是根據情況的真假和條件,構造判斷語句。

        下面列幾個重要的等值式:

德摩根律:┐(A∧B)┐A┐B,┐(AB)┐A┐B

蘊涵等值式A→B⇔(A∨B)

等價等值式A↔B⇔(A→B)∧(B→A)

假言異位A→B⇔B→A

等價否定等值式A↔B⇔A↔B

歸謬論(A→B)∧(A→B)⇔A

等值演算:由已知的等值式推算出新的等值式的過程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章