課程緣起:

在某個場合裡,李校長提到邏輯對研究的重要,他希望我能開數理邏輯的課程,補補研究生邏輯訓練的基礎。我原本要開的課是計算複雜度,這學期想教近似演算法,以Vazirani的課本為主。聽了李校長所言,想一想,覺得確實有道理。近似演算法雖然有趣,但是畢竟與多數同學的距離比較遙遠,基礎的東西似乎才是目前本所研究生最欠缺的。要補基礎,我發現光是補邏輯是不足的,研究生對於理論研究論文閱讀上的障礙是多方面的,所以就根據我這幾年在暨大教書的經驗,草擬幾項我目前認為比較需要補足的部份,列了這個大綱:

        (1)    Proof Techniques (證明技巧)

        (2)    Mathematical Notations (數學記號)

        (3)    Mathematical Statements (數學陳述)

        (4)    Inductions (歸納法)

        (5)    Mathematical Logic (數理邏輯)

        (6)    Set Theory (集合論)

        (7)    Asymptotic Analysis (漸進分析)

        (8)    Special Topics (主題討論)

研究生閱讀理論研究論文,遇到的障礙來自幾個方面,首先是英文,其次是數學,最後是專業知識。關於英文,最常遇到的是研究生沒有閱讀英文原文書的經驗或習慣,以為只要用電子字典查出不認識的單字翻譯,閱讀就不成問題,結果常常是對作者的意思一知半解,猜測大於描述。關於英文,我幫不了什麼忙,不同研究領域的專業知識也不盡相同,這需要指導老師與學生長時間的投注心力與時間,也不是我的能力所能負荷。我能貢獻的,大概只有基礎數學這部份。

        基礎數學的部份,又可細分成幾項,一是對數學符號與其所使用語言的掌握,牽涉到精確性、正確性與其背後所表達的概念。有的時候很難相信資工的同學會弄不清集合裡的屬於與包含的關係,但我確實遇到不少這樣的例子。另一個是推理部份,涉及到邏輯與證明。資工的同學常憑藉自己的良知良能去設計程式,試驗幾個例子,覺得沒問題,就相信應該是這樣子沒錯,不知道其實存在一些方法,讓設計者在思慮上可以更周延、更完美。

        所以這個課程會先介紹證明的幾種模式,接下來複習常見的數學記號,以及何謂正確的數學敘述。接下來介紹歸納法,其中包含mathematical inductionstructural inductionnoetherian induction,這會讓同學對歸納法有全然不同的體會,另外也說明歸納法與演算法設計的關聯。在數理邏輯裡,我們會介紹幾個較簡單的proof systems,同學可從其中體會到如何做證明,以及證明的嚴謹性。接者講集合論,我們會介紹幾個著名的悖論(paradox),也簡單介紹無窮集合的一些理論。接者介紹演算法分析常用的Big等記號,資工的同學常常弄不清這些符號。如果還有時間,最後再選一些議題討論。

        原則上這門課的範圍涵蓋在離散數學之內,但是不會像離散數學鋪天蓋地,我們只撿幾個部份較深入的介紹。對於要考研究所的同學,我相信對其離散數學考試成績不會有什麼幫助的,因為考試的方法與閱讀研究論文的方法是不一致的,但可以確信,對於同學將來閱讀理論論文,會有些許助益。