Processing math: 0%
跳到主要內容

Set Theory Can Help You Understand Abstract Logic


在學習數理邏輯(Mathematical Logic)的時候,常常會聽到若 PQ,可能會被 "\Longrightarrow"(if .... then ...) 的意義搞得似懂非懂,就算懂了它的結果跟生活上的結合也是有種莫名陌生感,像筆者小時候會想成"因為 ... 所以 ...",但這不是它的正確意義。而日常生活中集合論的交集,聯集或許是大家比較容易理解的。本文是用集合論的觀點去了解邏輯,方程組,數學規劃上的應用,並介紹布林代數(Boolean Algebra)跟邏輯的關係,提供另一個角度可能更容易理解數學 !!

[輔助理解]
因為集合論可以在黑板上畫文氏圖(Venn Diagram),詢問點是落在哪個圈圈裡面還外面,大家都能輕易理解認同,而產生共鳴的語言!!

[假想實驗]
通常我們會先定義宇集,論域(universal set) U,代表我們所感興趣的東西,事物,元素變數符號 uPQ在日常生活中可能是某個條件(condition),性質(property),限制(constraint)。而我們會依依檢驗 U裡面的元素 u 是否滿足條件P,如果滿足就把它們收集起來,形成一個集合。
同理 Q 也照做,所以我們會收集到兩個集合!! 白話來說,可以寫成
S_P := \{ u \in U : u \text{ satisfies condition } P\}
S_Q := \{ u \in U : u \text{ satisfies condition } Q\}

註: 比較正式的寫法是可以分別把 PQ對應到布林值(Boolean 或叫 Predicate 或叫 Indicator function) f_P , f_Qf_P,f_Q: U \longrightarrow \{0 , 1 \}S_P := \{ u \in U : f_P(u) = 1  \},S_Q :=\{ u \in U : f_Q(u) = 1 \}

虛擬碼大致上是
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Into Data Into U
Write routine f_P , f_Q
Let S_P , S_Q be empty container ,
For u \in U
\qquad If(f_P(u)==1)  Put u Into S_P
\qquad If(f_Q(u)==1)  Put u Into S_Q
EndFor
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
當然我們知道還有補集合,不能遺忘它!!
\bar{S}_P := \{ u \in U : f_P(u) = 0  \} \quad \bar{S}_Q := \{ u \in U : f_Q(u) = 0  \}

我們可以再加個新條件 R ,構造出 S_{R}\bar{S}_R
有了這些集合以後,就大功告成了:

以下是列表對應:
\begin{array}{cccc} (E1) & P \Longrightarrow Q &  &  S_P \subseteq S_Q  \\ (E2)& Q \Longrightarrow R  &   & S_Q \subseteq S_R \\ (E3)& P \Longrightarrow \neg Q  &  &   S_P \subseteq \bar{S}_{Q} \\ (E4)& P \Longrightarrow R   &  &  S_P \subseteq S_R   \\ (E5)& \neg Q \Longrightarrow \neg  P   &   &   \bar{S}_Q \subseteq \bar{S}_P \\ (E6) & \neg P \Longrightarrow \neg  Q    &  &  \bar{S}_P \subseteq \bar{S}_Q   \\ (E7) & Q \Longrightarrow P &   &  S_Q \subseteq S_P  \\ \end{array}
--------------------------------------------------------------------
練習:畫文氏圖就可以很清楚回答下面的問題 :
1. Either (E1) or (E3) is True ??  Ans : No.
2.(E1), (E2) are True , (E4) is automatically True ?? Ans : Yes.
3.(E1),(E4) are True , Q,R are  automatically equivalent ?? Ans : No.
4.(E1),(E5) are equivalent ?? Ans : Yes.
5.(E6),(E7) are equivalent ?? Ans : Yes.
--------------------------------------------------------------------
[and \wedge , or \vee ]
(P\wedge Q) 會對應到 S_{P\wedge Q} = S_P \cap S_Q
(P\vee Q) 會對應到 S_{P\vee Q} = S_P \cup S_Q

[nesscessity & suffciency]
If ( (E1) and (E2) ) are  True then (E4) is True
也就是 P \Longrightarrow Q \Longrightarrow R
則稱PQ 的 充分條件(sufficient condition)
且稱RQ 的必要條件(nesscessary condition)

以下談很重要的部分
****廣義演算法搜尋概念****
承上也可以寫成 S_P \subseteq S_Q \subseteq S_R
當我們想要從U裡找u\in S_Q
可以使用窮舉法(Brute & Force), [BF]
++++++++++++++++++++++++++++++++++
For u \in U
\qquad if(f_{Q}(u)==1)  then  u is solution  !!
EndFor
+++++++++++++++++++++++++++++++++++
但是如果無法直接刻劃出S_Q具體搜尋方法 or f_Q的具體運算性質 or 運算成本太高,我們就要發展理論去找刻劃f_{R},f_{P} !!
發展 [For_U_If_R+P] 演算法!!
++++++++++++++++++++++++++++++++++
For u \in U
\qquad if(f_{R}(u)==1)  then  u maybe solution (candidate)  !!
\qquad if(f_{P}(u)==1)  then  u is a solution !!
EndFor
+++++++++++++++++++++++++++++++++++

但是|U|通常很大甚至無限,我們要想辦法改善搜尋範圍,如果我們能刻劃出 S_R 的具體搜尋方法,則可以改寫成新演算法 [For_R_If_P]
+++++++++++++++++++++++++++++++++++
For u \in S_R
\qquad if(f_{P}(u)==1)  then  u is a solution !!
EndFor
則我們只要搜尋S_R 就足夠了
+++++++++++++++++++++++++++++++++++
同理如果我們能刻劃出S_P,則[For_P]演算法,每一步都是解!!

但是就算有刻劃出S_RS_P的集合搜尋性質,我們也無法找到所有的解!! 
注意:除非我們證明PRQ等價(證明 S_Q \subseteq S_P or S_R \subseteq S_Q) !!
數學上就稱PRQ 的充要條件(sufficient + nesscessary condition)!!

[微積分求極值例子] 在實數軸上找 y = g(x) 的極小值時
S_Q = \underset{x\in \mathbb{R}}{\text{argmax} }f(x) (Local Min Definiton)
S_P = \{x\in \mathbb{R}: g''(x)>0 , g'(x) = 0 \}  (Sufficient Second Order Condition)
S_R = \{x\in \mathbb{R}:  g'(x) = 0 \} (Nesscessary First Order Condition)
其中 :
S_P \subseteq S_Q \subseteq S_R
f_P(x) 代表 [ 要檢查 g''(x) 是否大於 0 , g'(x) 是否等於 0,皆是則回傳 1,否則回傳 0 ]
f_R(x) 代表 [ 要檢查 g'(x) 是否等於 0 ,是則回傳 1,否則回傳 0 ]

[跟方程組的關係]
假設我們要找 x \in U滿足這兩條方程式 E_1(x) \leq 0 , E_2(x) \leq 0
可以想成集合版本
S_P:=\{x  \in  U : E_1(x) \leq 0 \}
S_Q:=\{x \in U : E_2(x) \leq 0 \}
則解聯立方程組相當於找 S_{P\wedge Q} = S_P \cap S_Q
這告訴我們加入限制式跟取交集一樣,限制式越多,集合會越來越小!!,無解代表空集合!!

接下來介紹一個非常重要的應用:

*****在數學規劃(Mathematical Programming)上的領域*****
給定兩個集合 A\subseteq B , g 為 real-valued function
\underset{x\in B}{\text{min } } g(x) \leq  \underset{x\in A}{\text{min } } g(x)  
\underset{x\in A}{\text{max } } g(x) \leq  \underset{x\in B}{\text{max } } g(x)
(註: 嚴格要假設 A,B 是緊緻集 (compact set) 或是 max 改成 sup , min 改成 inf )

這是一個很難察覺但很容易判斷的事實,可以類比於回答下列的問題:
Q1:全台灣最高的山跟全世界最高的山哪一個比較高?
Q2:全台灣最矮的山跟全世界最矮的山哪一個比較矮?

根據方程組結論我們得到限制式越多,集合越來越小則 max 值會越來越小,
min 值會越來越大。
而這事實上就是 cutting plane algorithm (branch and bound) 的原理 !!
以下大致敘述其原理 :
---------------------------------------------------------------
以純整數規劃(Pure Integer Programming)來說,極大化問題來說,假設n個 0-1決策變數
可行解域(Feasible Solution) F^{I} :=\{0,1\}^{n},最佳解x^{*} ,最佳值 y^{*},我們可以擴大可行解域即 LP-relaxation ,定義為 F^{LP}:= [0,1]^{n}  很明顯  F^{I} \subseteq F^{LP},假設k為迭代次數,而 cutting plane algorithm 會持續一直加限制式(valid inequality) 會把問題化成一系列的可行解域\{F^k\} (\forall k \ ,F^{I}\subseteq F^k \subseteq F^{LP}) 演算法會求出 x^ky^k := f(x^k) =\underset{x \in F^{k} }{\text{max}} g(x)  ,很明顯 y^{*} \leq y^{k} ,隨著 k 越大 F_{k} 會越小,則 y^{k} 會越來越接近 y^{*} ,我們稱y^{k} 為上界(Bound)。
(註: 這是主要 bound + cut 的核心概念,下界的概念跟 branch 的部分可在參考整數規劃相關領域)
---------------------------------------------------------------
[布林代數的應用]
回顧可以用集合S_P, S_Q  表示邏輯的條件 P,Q,也介紹了 Indicator function f_P,f_Q
還可以用 0,1 四則運算來代替交集聯集,也可以使用整數規劃限制式來表達邏輯!!


\begin{array}{cccc}  \text{Logicial Condition }& \text{Set Thinking} & \text{Boolean Operation } & \text{IP Linear Constraint} \\ P& S_P & f_P &  f_P  \\ \neg P& \bar{S}_P & 1- f_P & 1-f_P & \\ P\wedge Q &  S_P \cap S_Q & f_P \cdot f_Q   \text{ or  min }(f_P , f_Q) &   Z \leq f_P , Z \leq f_Q , f_P + f_Q \leq 1+Z  \\ P\vee Q& S_P \cup S_Q  & (f_P + f_Q) - f_P \cdot f_Q  \text{ or  max }(f_P , f_Q) & f_P + f_Q \geq 1  \\ P\Longrightarrow Q & S_P \subseteq S_Q &  \text{ max }(1-f_P , f_Q)   & f_P \leq f_Q  \\ \end{array}

註: Z \in \{0,1\} 是輔助變數,
註: 整數規劃(IP)的例子,U = \{a,b,c,d,e\}P代表 元素是 "a"S_P = \{a\}f_P(u) ==1相當於 u == a 的意思
[小結]
我們可以發現,邏輯,集合,布林,線性限制式,有某種對應!!邏輯建立了數學,數學又是科學之母。而可以用集合方便人們去思考邏輯,而在資工電機等科系,軟硬體上,布林扮演在實作上很重要的角色,而整數規劃限制式更是在現實問題數學建模(mathematical modeling)有很大的幫助!! 透過此文希望能讓讀者更全面認識邏輯 !!


[以上純為學術經驗交流知識分享,如有錯誤或建議可留言~~] 
by Plus & Minus 2017.08






留言

這個網誌中的熱門文章

Nash Equilibrium & Best Responce Function (BRF) In Continuous Strategies

經濟學重要的賽局理論( Game Theory )領域,用數學描述人與人之間的理性互動,最重要的就是尋找奈許均衡( Nash equilibrium ), 本篇介紹其數學規劃與非線性方程組!!  假設有 p 名玩家(player i),i=1,2,3,4,5,....p , 正在玩一場遊戲(Game)~~,完全不合作,各自獨立作決策 每個人有決策向量 x_i \in \Omega_i \subseteq R^{n_i} (有n_i個決策變數)  定義長向量: \underbrace{x =  (x_1,x_2,x_3,....x_p)}_{\# \text{ of } \sum^{p}_{i=1}n_i \text{ variables }} \in  \prod^{p}_{i=1} \Omega_i = \Omega 對於每個 player i ,長向量可以寫成 x = (x_i , x_{-i})x_{-i} 代表其他人(不是 player i) 能做的決策向量。 所有人各自作決策後,每個人都會個自的存在報酬效用函數 f_i (x)  \in \mathbb{R}  (報酬函數皆為公開已知資訊) 假設每位玩家是理性人(會極大化自己效用) 即 \forall i = 1,2,3,4....p \qquad  \underset{x_i \in \Omega_i}{\text{max }}f_i(x)   [註: 如果為合作可視為多目標規劃問題( multiobjective ),即 x_1,x_2,...x_p 可以由領導人一起決定] [註: 如果為合作而且把效用加總,即目標式變成 \sum_{i=1}^{p} f_i(x) ,可能對集體效益有更大的幫助,但是如何分配效益給 ( player i )會是個議題,可以查關鍵字 fair optimization ] 我們可以定義每個 player i 的 Best Response Function (BRF) or Best Reponce Set S_i(x_{-i}) \subset \Omega_i $$  S_i(x...

Lattice & Multinomial Theorem

本文介紹格子點(Lattice) 幾何意義與多項式定理(Mutinomial Theorem) 的關係,並可協助我們理解計算一些機率問題。 [符號定義] 非負整數 / 非負實數:  \mathbb{Z}_{\geq 0} := \{0,1,2,3,4,......\}  \subseteq [0,\infty) =: \mathbb{R}_{\geq 0} 離散機率向量:  p_{I} := (p_{i})_{i \in I} \text{ s.t } \sum_{i\in I}p_i =1 ,|I|<\infty  發生事件 i \in I 的累積次數向量: k_{I} := (k_i)_{i \in I} \in \mathbb{Z}^{|I|}_{\geq 0} \mathbb{Z}^{|I|}_{\geq 0} 就是 |I| 維格子點 !! [格子點情境] 出發點定義為 k^{start}_{I}:= \overbrace{(0,0...,0)}^{|I|},今發生一次 p_{I} 分布隨機互斥事件,等價於"點的移動"(state transition),數學定義如下:   \text{Event } i  \text{ happens }  \Longleftrightarrow  \overbrace{(\color{red}{k_i},k_{-i})}^{k^{old}_{I}}  \underset{\text{with probability }p_{i}}{\longrightarrow}   \overbrace{(\color{red}{k_i+1},k_{-i})}^{ k^{new}_{I}}    PS1: 其中  k_{-i} := (k_{i'})_{i' \in I-\{i\}} PS2: 不管怎麼走都在第一象限,也就是只能往右,往上,往高.... 當發生 n 次獨立同分布 p_{I} (iid) 的事件後,所有可能點位置在以下的集合上 $$  S_{n}(\col...

Linear Regression By Using Linear Programming

當拿到一筆資料準備玩統計,往往會想要做線性迴歸( Linear Regression ),找出一個模型( mathematical model )來解釋變數間的關係,一般都是使用平方距離,但是如果我們採用絕對值距離呢?? 而剛好在工業工程( Industrial Engineering ),作業研究( Operation Research ) 領域,發展成熟的線性規劃( Linear Programming ) 恰好可以來解決,是一個跨領域的應用 !! 已經存在有許多商業或open source 軟體,如: Gurobi , Cplex , Xpress , Mosek , SCIP  可以輕易求解大型的線性規劃問題。而不僅如此也可以利用整數規劃( Integer Programming )來做特徵選擇 ( Feature Selection ),甚至可以偵測離群值( Detect Outlier ) !! 本文只介紹最小絕對值和,關於 Feature Selection , Detect Outlier 可以參考 Mixed-Integer Linear Programming Robust Regression with Feature Selection , Oleksii Omelchenko , 2010 的論文。 [Data Fitting Problem] 給定n筆實數型訓練資料 (training data) \{(x^{k},y^{k})\}^{n}_{k=1} = \mathcal{D} , x^{k} =(x^{k}_1,x^{k}_2, ... , x^{k}_{p})\in \mathbb{R}^{p} , y^{k} \in \mathbb{R} , 我們目標是想要找到一個函數 f_{\mathcal{D}} : \mathbb{R}^p \rightarrow \mathbb{R} 使得  \forall x \in \mathbb{R}^{p} , f_{\mathcal{D}}(x) \approx y , 精確來說: $$ \text{Find } f_{\mathcal{D}} \text{ such that } f_{\mathcal{D}}(x)\...