有趣的演算法世界---附錄(2) (轉)

amyz發表於2007-11-12
有趣的演算法世界---附錄(2) (轉)[@more@]

 

 有趣的演算法世界---附錄(2)

 二  關於演算法的確定性:namespace prefix = o ns = "urn:schemas--com::office" />

 

有人說演算法的確定性是每一步都應是確定的,或無歧義,結果不應成為我們不可預測的東西?這也是從微觀上講吧,我想如此定義就沒有不確定性的存在了.在一步中執行是不確定的,結果完全超出了我們的預測範圍,就如整數群,+運算在Z上是封閉的,但有兩個整數a,b,對於除法運算/,從整數集的角度看,“a/b“的結果你可能給算沒了J,那是不允許的.目前的要防止這一點,只要我們想一想我們如何辛苦的構建 好的,穩定的,就會明白這一點.

我認為,現在的“確定性“與“不確定性“,是在實際運算中,這一步到下一步的轉換上,你是否可以預先確定.比如求和:

For i:=0 to n-1 Do

  sum:=sum+a[i];

任何一步到下一步的轉換,都是線形的,可唯一確定.但諸如遺傳演算法中,下一代的種群在具體的執行前是無法確定的,有很多可能性,就是說此步到下一步,不是線形的關係.我們稱之為非確定性.

關於這個問題, 網友Dream_soft說到隨機的本質問題.當然我們知道目前計算機的隨機數都是”偽隨機數”,透過一定演算法得到的,不同於真正的隨機.但要說到什麼是真正的隨機,這又是個近於哲學上的問題.我們就不說了.

 

  三  關於演算法與設計方法理論

 

網友dorcom提到了演算法與,與語言體制,或者說,演算法與程式設計方法學的關係.

我們知道,程式設計方法學,是研究程式設計理論的學科.我們以前程式設計,有摳機器程式碼的階段(呵呵J,相當辛苦),後來出現了過程化程式設計,結構化程式設計,到現在的面向程式設計,大規模程式設計方法學等等.的確,程式設計方法理論的進步,幫我們解決了許多問題.我們的程式設計方便了,高了,可移植性好了,可重用性好了,易維護了,但是,它於演算法要解決的不是同一問題.

所以誰也代替不了誰.無論哪方面,作為電腦科學與技術人員,我們都要掌握.

 

  四  關於一些錯誤

 

文章是我現打的,沒有底稿,所以出現了這樣或那樣的錯誤,還請大家原諒.尤其是網友zcr139, cadinfo等,非常感謝您指出了我的失誤與錯誤.

 

    五  關於寫作計劃和參考資料

構思這些文章的時候,我準備:

(1)  綜述,吹起向演算法進軍的號角吧J.

(2)  什麼是演算法,一篇,討論演算法的定義和演算法的一些特點.其中演算法的定義參考了康立山老師的<>.可惜本資料是我們學校的內部資料,是平行計算和演化計算的好書,但不能為大家所看到.

(3)  演算法之根,計劃兩篇,由Hilbert問題引出演算法的本質問題,由代數結構和有窮自動機引出圖靈機.介紹各種圖靈機變形後,引出我心中的演算法樹,說明我們這次旅行的大致路線.其中圖靈機定義和有關例子,參考了<>(美 Michael Sipser 著,張立昂等譯)一書.

 

如此,我們第一部分就可以結束了.最後仍然是感謝大家.對鼓勵我的網友我心存感謝,對批評我指正錯誤的網友我心存感激,而對那些喜歡了演算法,準備細細看書的網友,呵呵,我心存敬佩~~~~

 

後注:又是因為不能一篇發帖才分作兩篇的.J.呵呵,為什麼要限制呢.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981970/,如需轉載,請註明出處,否則將追究法律責任。

相關文章