前言與心得整理 由於第六週的內容牽扯到P=NP相關理論還有NP-Complete的證明.所以我把內容拆成兩個禮拜,希望能夠更仔細地來了解這個部分. 相關文章 [Coursera][Automata] 自動機理論-Automata筆記-第一週Finite Automata [Coursera][Automata] 自動機理論-Automata筆記-第二週: Regular Expression [Coursera][Automata] 自動機理論-Automata筆記-第三週: Context-Free Grammars and Pushdown Automata [Coursera][Automata] 自動機理論-Automata筆記-第四週: Pushdown Automata and Properties of Context-Free Languages [Coursera][Automata] 自動機理論-Automata筆記-第五週: Turing Machines and Undecidability [Coursera][Automata] 自動機理論-Automata筆記-第六週(上): Intractable Problems and NP-completeness [Coursera][Automata] 自動機理論-Automata筆記-第六週(下): Intractable Problems and NP-completeness 第六週前半部分的課程內容: ###Intractable Problems P類問題 接下來會介紹一些需要耗費相當多的時間(指的是處理時間超過指數時間(polynomial-time)的問題. 回過頭來先要定義如何指出圖靈機的時間限制: T(n): 指的是輸入w長度為n的時候,該圖靈機一定會停止的 這時候就會帶出第一個名詞: P 也就是如何定義一個問題是屬於P類的問題 (Class P problem) Class P: 指的是在DTM(Deterministic Turing Machine)下,其T(n)= polynomial-time (指數時間) 關於”P類”問題的範例 DTM可以被來當成是否可以用DFA(Deterministic Finite Automata_來表示其狀態的TM(Turing Machine). 所以其實要尋找類似的範例其實不難,只是該問題必須要是在指數時間才能解決的,課堂上提供的範例如下: 在CFG的 L(G) 給予一個字串w.判斷w in L(G) 之前有提過要快的話,必須使用CYK演算法.然後其時間複雜度為O(n^3) NP類問題 在介紹NP類問題前,雖然課堂上老師直接透過背包問題(Knapsack Problem)來引導NP類問題.不過我個人認為,還是需要簡單的瞭解一下`NP類問題`的定義: Class NP: 指在NTM(Nondeterministic Turing Machine)下,其T(n)為指數時間(polynomial-time) 沒有錯,P類問題與NP類問題最大的差異是TM讀入一個輸入的時候.其反應是唯一的(DFA)或是多重的(NFA). 接下來就可以將背包問題(Knapsack Problem)開始帶入: 什麼是背包問題(Knapsack Problem) 關於背包問題的定義,種類與範例.其實這一篇台師大的文章講得非常好.這裡僅僅簡單的帶過: 背包問題: 將一堆東西放進背包,每一件物品有它的重量與價值,透過有限制重量的背包來取得放入價值的最大化. 解法與時間複雜度: 對於背包問題的解法,一般而言就是透過動態規劃(Dynamic Programming)的方式來找.如此一來: 如果有n個物件,就必須要找出該物件放進背包與不放進背包的價值.所以時間複雜度為O(n * 2^n) (2是因為要計算 出現與不出現.必須要反覆計算n回) P = NP ? 接下來就帶入大家都了解的P=NP這個被稱為史上七大難解問題之一. 究竟P是不是相同於NP? 其實課堂上也有一些簡單的討論. 以上的圖是來是Wiki,主要是講解如果認為P不等於NP的時候.他的概念是以這樣的方式作為出發來討論. NP-Complete Problem 首先要討論P是否相同於NP,可以透過一個面向來探討.就是透過NP完全(NP-Complete Problem). A decision problem C is NP-complete if: C is in NP, and Every problem in NP is reducible to C in polynomial time 這是從NP-Completeness看到比較formal的定義.也就是說,如果我們能夠透過polytime reductions的方式來朝向證明NP-Completeness Polytime Reductions Polytime Reductions 又稱為Polynomial-time reduction,以下會解釋這種reduction 的目標與方法: 目標: 如果可以找到一個方式將所有的NP問題歸約(reduction)成語言L,並且能夠找到多項式的解決時間(Polytime).那麼就可以找到多項式的演算法(deterministic polytime algorithm)來計算所有的NP問題. 簡單的來說:...
##前言
這次的Golang Taipei Gathering #15 我有參與閃電秀.
###Gobot
講者: kerkerj
slide:
Golang Taipei Gathering #15 - 進擊的 Gobot! from kerkerj
主要是講姐Gobot的一些指令,Gobot提供相當好的介面可以直接去控制GPIO跟一些相關的機器. RPI/Ardurino甚至提供指令直接控制Sphero. Gobot 提供直接的方式可以控制COM port 與RS232直接對Ardurino與其他設備來溝通.
閃電秀: Project 52
不好意思~~我的閃電秀….
Project52 from Evan Lin
###Go Microserver Use Case
講者: David Hernandez
針對Microservice 講者注重的是:
How to handle big request in short time
What if some service down –> circuit breaker
有展示Goconvey的測試,感覺很酷.