C1.1 - 算法註記

第一章內容主要以展轉相除展開具體內容。其中對於算法E的解釋,亦或是(1)(2)變式都不易產生困惑。算法

可是變式(3)會遇到翻譯上的理解障礙。主要問題是,段落中前半部分是對式(2)的說明,後半部分是對(3)的推導翻譯

參考習題8的設定,給出我認爲比較通俗的解釋:字符串

  推導式以下:字符串處理

    1.f((σ,j)) = (σ,ajgc

    2.f((σ,j)) = (αΦjω,bj集合

    3.f((σ,N)) = (σ,N) 字符

  上述公式,其實就是把除法變相運用在字符串處理中,m個a,n個b,每次刪除j數量的a和b(公式2,每次刪除一個a和一個b並在最左端加上一個c,直到不存在ab這種字符組合,一共會重複j次這樣的操做),若字符串中再也不存在a或者不存在b(即更小的值被除掉了,參考表達式 m = qn + r),則已經向原字符串中插入了j個c。重複該過程時,隱含的設定是把結果字符串中左側的c當作a,右側的字母當作b。gcd

  雖然上面用到的是集合的關係,以m=3,n=2爲例,A*爲[{aaabb}, {aabb}, {abb}, {bb}, {aaab}, {aaa}, {aab}, {aa}, {ab}, {a}].其實就包含了每次刪除以後的結果(每次刪除其實就是從子集i變成了子集j)。這就是這邊所說的模式匹配的概念ab

 

 最後,看原書的習題解答,有: 令A = {a, b, c},N = 5, 算法結束時獲得字符串agcd(m,n)

 也就不難理解爲何說:「每次迭代要麼減小m,要麼保持m不變並減小n」了。

相關文章
相關標籤/搜索