離散數學 邏輯推理系統

2021-08-30 04:37:09 字數 1337 閱讀 7334

邏輯判斷-推理系統

設計概要:

根據聯結詞的優先順序:¬∧∨→↔

輸入中綴邏輯式

將之轉化為字尾表示式

得到公式模板(字尾式)和變數名集合

構造《變數名,bool>的對映關係

根據字尾式和 構造好的《變數-bool> 對映 可計算其真值

類實現:

c++:(初次實現,無圖形介面)

class

logic;

python:(以c++的類為基礎,新增圖形介面)

真值表儲存結構:> ,string-bool對映的動態陣列

以¬a^b→c為例

將行號轉化為二進位制數,每一位二進位制賦給對應變數,呼叫calculate函式計算結果,並將結果新增到真值表中。

以這些基本方法和資料為基礎就可以實現較複雜的功能。

以判斷系統為基礎,推理系統無非是增加判斷邏輯式為重言式

輸入前提:以逗號(,)分隔

輸入結論:

假設前提為 ¬a∨b, b∧c

結論為 a

我所做的處理:前提兩側加」(「  」)」,用」)∧(」替換逗號,再用」→」連線結論

比如此時樣例為 ((¬a∨b)∧( b∧c))→a,

可通過邏輯判斷系統,判斷這個式子為重言式(真值表result全為1)

優化:限制鍵盤輸入,只能輸入字母和相應聯結詞

自動識別變數

當變數個數超過13,真值計算超過2^13次,排版會導致卡頓,修改:當變數個數超過13,不建立真值表,新增了乙個查詢控制項,可以輸入0/1序列查詢真值。

遺憾:不能預先判斷邏輯式是否合法

¬為單目運算子,實在想不到辦法怎麼與其他聯結詞區分

第一次是用c++寫的**,但在c++的圖形介面出了點問題,這是用python-tkinter寫的,現學現賣,難免存在一些問題,**很亂,可讀性不高。

推理系統,其實是以判斷系統的功能為基礎,做了一點點擴充套件。

程式:原始碼:

培養邏輯推理

沒有解決不了的問題,只有打不開的思路。思維一旦被限制,動再多的腦筋也跳不出固有的圈子 思路一經調換,難題往往便迎刃而解 類似數學推理我們重點關注兩點 一 盡可能多的發現屬性,現象 1 靜態的 一般擺在我們面前的我們都能注意到,但是 涉案現場的任何小細節我們都要去問為什麼,不要放過任何乙個細節背後的原...

做邏輯推理

做邏輯推理 進行邏輯推理有什麼用呢?其實是為了訓練我們的邏輯感強,思維縝密,做事周到的能力。下面是matrix67創作的下面 10 個邏輯推理問題。在每個問題中,甲 乙 丙三人各說了一句話,你需要判斷出每個人說的究竟是真話還是假話。每個問題都有唯一解。注意,與傳統的邏輯推理題 目不同,沒有任何條件告...

黑與白(邏輯推理)

黑與白 有 a b c d e 這 5 個人,每個人額頭上都貼了一張黑或白的紙。5 人對坐,每個人都可以看到其他人額頭上紙的顏色。5 人相互觀察後,a 說 我看見有 3 人額頭上貼的是白紙,1 人額頭上貼的是黑紙。b 說 我看見其他 4 人額頭上貼的都是黑紙 c 說 我看見 1 人額頭上貼的是白紙,...