求命題公式的主正規化

2021-10-13 07:33:33 字數 2426 閱讀 1213

實現功能:輸入命題公式的合式公式,求出公式的真值表,並輸出該公式的主合取正規化和主析取正規化。

輸入:命題公式的合式公式

輸出:公式的主析取正規化和主析取正規化,輸出形式為:「 mi ∨ mj ; mi ∧ mj」 ,極小項和 ∨ 符號之間有乙個空格,極大項和 ∧ 符號之間有乙個空格;主析取正規化和主合取正規化之間用「 ; 」隔開,「 ; 」前後各有乙個空格。 永真式的主合取正規化為 1 ,永假式的主析取正規化為 0 。

輸入公式的符號說明:

! 非,相當於書面符號中的 「 ¬ 」

& 與,相當於書面符號中的 「 ∧ 」

| 或,相當於書面符號中的 「 ∨ 」

( 前括號

) 後括號

主要思路:

1.轉化為字尾表示式(去括號)

2.數一下有多少個不同的元素(字母),列舉的時候會用到

3.轉化為二進位制,用每一位代表乙個字母的賦值

4.根據每種可能賦值計算結果並記錄

注意:永真式的主合取正規化為 1 ,永假式的主析取正規化為 0 。

#include

#include

#include

#include

using

namespace std;

char in[

1000];

int order[30]

, value[30]

=, as[

10000000]=

, cnt1 =

0, cnt2 =0;

intpriority

(char op)

;void

rpn(

int n)

;int

e_cnt()

;int

cal(

int a,

int b,

char c)

;int

rpn_cal()

;int

main()

int res =

rpn_cal()

;if(res ==1)

else

}for

(int i =

0; i < sum; i++

)else

if(as[i]==1

&& cnt1 ==1)

}if(cnt1 ==0)

cout <<

0<<

" "<<

";"<<

" ";

for(

int i =

0; i < sum; i++

)else

if(as[i]==0

&& cnt2 ==1)

}if(cnt2 ==0)

cout <<

1<< endl;

return0;

}int

priority

(char op)

//計算權值

}void

rpn(

int n)

//轉換成字尾表示式

; stack <

char

> op;

op.push

('#');

for(

int i =

0; i < n; i++

) op.

pop();

}else

if(in[i]

=='('

) op.

push

(in[i]);

else

else

op.push

(in[i]);

}}}}

while

(priority

(op.

top())

!=0)for

(int i =

0; i < n; i++)}

inte_cnt()

//計算可能賦值的上界

, ecnt =0;

for(

int i =

0; i <

strlen

(in)

; i++

)for

(int i =

0; i <

30; i++)}

return ecnt;

}int

cal(

int a,

int b,

char c)

//計算二元運算子

}int

rpn_cal()

else

if(in[i]

=='!'

)else

}int ans = num.

top();

num.

pop();

return ans;

}

求命題公式的主正規化

成績 100開啟時間 2017年04月6日 星期四 08 00 折扣0.8 折扣時間 2017年05月5日 星期五 08 00 允許遲交 否關閉時間 2017年05月18日 星期四 23 55 實現功能 輸入命題公式的合式公式,求出公式的真值表,並輸出該公式的主合取正規化和主析取正規化。輸入 命題公...

離散數學 求命題公式的主正規化

實現功能 輸入命題公式的合式公式,求出公式的真值表,並輸出該公式的主合取正規化和主析取正規化。輸入 命題公式的合式公式 輸出 公式的主析取正規化和主析取正規化,輸出形式為 mi mj mi mj 極小項和 符號之間有乙個空格,極大項和 符號之間有乙個空格 主析取正規化和主合取正規化之間用 隔開,前後...

C 實現求主析取正規化 主合取正規化

離散數學第一次上機實驗,突擊學完什麼是主析取正規化和主合取正規化之後粗略地想了下實現的思路。第一步自然是把輸入的式子轉換成字尾表示式。結合資料結構書上對基本四則運算的 和前人的思路勉強寫出來乙個,但還是有很多地方可能一轉頭就會忘了怎麼實現。轉換成字尾表示式之後的事情就顯得輕鬆多了。下面貼 inclu...