從基因到遺傳算法及六爻
現代的科學正史從來不曾提及,當年基因這個概念在科學界的地位,就如同江湖神棍的把戲,只會從孟德爾的豆子一直說到發現了DNA,然後就開始談一些更復雜的東西,至於它背後的東西,連一筆都不帶就過去了。
實際上,基因的概念剛提出來時,科學界的主流權威們並沒有慎重去對待它,而是各種譏諷與嘲笑,認為這是一個新神棍式的理論,因為在當時的時代看來,這完全就是件不可能存在的事情,直到後來DNA的發現才狠狠的抽了一記耳光。
DNA是一種分子,但是這種分子有令人驚奇的特性,小小的DNA就類似一個分子級別的藍圖,這個藍圖上會指導生物的發展與變化,並且DNA僅僅是由兩條核苷酸鏈構成的雙螺旋結構。這一發現大大擴展了人的視野,在生物層次上,一個人與一個蘋果的區別,從根本上來說,實際上只是DNA排序的不同。
更重要的是遺傳密碼共計64種組合,而在中國公元前幾世紀(有可能更遙遠)的文化中,也就是易學文化中認為64卦可以模擬世間的一切。在孔子在《繫辭下傳》中說:“古者包羲氏之王天下也,仰則觀象於天,俯則觀法於地,觀鳥獸之文與地之宜,近取諸身,遠取諸物,於是始作八卦,以通神明之德,以類萬物之情。”並盛讚稱:“範圍天地之化而不過,曲成萬物而不遺”。
基因的發現說明了一個問題,即使是像生物這樣複雜的事物,也可以由極微小的某一個事物,不斷的自我複製,並且在自我的複製中進行自我控制,從而發展成為一個複雜的個體,只要給予一個適當的條件,用一根頭髮絲也可以複製出一個人出來。這種自我複製的能力並不需要藉助神明的掌握,能夠自然而然的發生。
DNA在複製的過程中並不是完美的,正因為這種不完美,所以才會有變異,而變異就是導致物種多樣性的根源。這在哲學上意味著,現實中犯錯不一定是壞處,人有時會做出的不理性選擇,也不一定就是壞事,有時可能會創造出一條的新的路出來。
有些人這種變異可能難以理解,認為它有可能是對生物來說,是往的方向進行變異,也有可能是往壞的方向進行變異,那麼一好一壞的演變,會產生什麼樣的後果?
萬物始終是在運動與變化的,往好的方向變異與往壞的方向變異,但是要明白,這一切還要受制於自然的優勝劣汰,經過不斷的篩選之後,大多數情況下,往往留下的就是更優良的基因,這也是進化之所以能夠產生的原因。也就是說,生物在繁衍過程中,始終會不斷的產生變異的,而這個變異通常是一個很微小的變異,但因為複製量非常龐大,所以一點點小小的變異,反映在最終的個體上就是巨大的變化。
這種變異,有時會帶來意外的驚喜,在一些場景下,往壞的變異並不重要,但只要有好的變異,往往就會帶來更多的好處,解決現實中的棘手問題。
在現實中,有一類問題稱為是難解的,它的難解是因為計算量太大,比如某個計算花盡帶個宇宙的時間,都計算不出結果出來的話,在這個宇宙中就有可能是無解的。
那麼這類有可能無解的問題,有可能解得出來嗎?答案是有。
為什麼,因為還有運氣問題。一個良好的運氣,能大大提高得到解決方案的效率,而一個糟糕的運氣,就只能靠努力了,而這種努力有可能是沒有結果的。科學計算,其實也是要藉助運氣的。有一種解決問題的辦法,就是模擬生物的自然遺傳,從而把求解的結果放到可能放到運氣上去,這樣就有可能大大縮短解決的問題時間。
先假設一個問題,現在有一個星球,有某一處地方有珍貴的資源,現在已知如果某個位置上不存在這個資源,那麼在相同的經度、緯度及45度角的經緯度上,都不會存在這個資源,那麼我們應該怎麼樣去尋找這個珍貴資源?
如果預計地毯式搜索的話,我們假設要花費100年的時間,但是如果目前只有50年了,並不允許我們使用地毯式搜索了,我們應該如何去找出它在哪裡?
最愚笨的方法就是地毯式搜索,搜到多少是多少,這是最沒有效率的一種,而且如果一開始的定下的搜索路線如果讓該資源只有可能在最後50年找到的話,那麼一開始的搜索就是一個悲劇。
更好一點的辦法是採用隨機搜索,在這個星球上尋點隨機尋點挖掘,因為有運氣的緣故,這種搜索有可能遇到運氣好時有可能就會更快的找到,但是遇到運氣不好時,最差的情況也不過是與地毯式搜索相當,這就是寄託於運氣的一種搜索方法。
那麼,隨機搜索的辦法是否還能改進,能夠更進一步的保留運氣更好的搜索路線,拋棄運氣更差的搜索路線?當然是可以的。
方法就是模擬生物的遺傳算法,先隨機選擇多條挖掘路線,然後在挖掘過程中,把那些一直沒有出現問題的路線分解出來,篩選出一些組成的因素條件,然後再用這些條件去生成更多的挖掘路線,並且在生成的挖掘路線過程中,隨機產生一定程度的偏離與變化,這樣不算挖掘並調整下去,就會產生不斷優化的效果,可以大大縮短搜索到目標的概率。
遺傳算法現在用於解決現實問題的計算的案例很多了,感興趣的可以自己查找一些資料來看。
生物的進化過程,實際上是一個不斷優化的過程,遺傳算法的特性決定了生物會往著更適應環境的方向發展,這說明了自然界的發展是有著某種目標的,而外界產生的環境,對生物的影響,無非也只是試圖在調整生物往某個方向發展。
在純計算的角度來看,萬物的運動,生物的生長衰亡,一代代的遺傳改進,其實都是天地間這個龐大的運算中的一個部分,一切事物的運動其實都是向著某個目標在邁進,那麼這個目標是什麼?如此龐大的資源無時無刻的消耗,能量每秒都在不斷的交換、轉化形成的這個世界,它最終是想計算出什麼?
順便要提及一下,傳統的佔算中,利用六十四卦占卜過去未來,其實這個算法的過程,與遺傳算法也有很多共通之處,不過六爻卦實際上還涉及到其它很多模型,這裡暫不細說,先只說說遺傳算法在六爻中的體現。
六爻的起卦過程,首先是先求出某個一個卦,這個卦對應於六十四卦中的一卦,同時這個卦會產生變異,變異就是卦爻的變動,這個變動在卦的細節體現中是陰向陽的變化,或是陽向陰的變化,這種變異又會形成一個新的卦,同樣是六十四卦中的一卦。這個基本上的起卦過程,DNA變異的過程是一致的,只是這種變異的細節在不同的體系裡體現不同,如在梅花起卦的體系中,一次是隻有一個爻產生變異的,並且一定會有一個產生變異,而在傳統六爻卦中,完全沒有變異或是六個爻都會產生變異都是會出現的。至於在卦及變異後的卦上的佔算與判定,實際上就是遺傳算法不斷優化迭代的過程,不過這種迭代是通過一些方式來大大的進行了加速的,比如配納甲配六親等。
正因為這樣,所以說六爻卦可以用於問題的求解。至於六爻在起卦之前並沒有取用客觀事物的相關信息作為參數,而是直接先起卦,很多人會認為這種方法不科學。這種看法實際上沒有明白這其中取隨機數的問題,既然是取的隨機數,就不存在先驗還是後驗的問題,事先考慮參數再起卦,與起完卦再考慮輸入參數之間,實際上沒有任何關係。
正如上面的挖掘問題一樣,或叫人去隨機選擇挖掘點,或自己在上面隨手指定幾個挖掘,或者是寫上編號抽籤決定挖掘點,或牽只兔子看往哪裡啃草就在哪裡選擇挖掘點一樣,只是行為不同而已,其實沒有任何有區別。
古人是否知道DNA這個東西,這不是我們需要討論的問題,但是古人創建的這個術數體系,其中算法與遺傳算法的各種巧合之處令人驚異。光以六爻卦的起卦過程及分析過程來看,會發現這一切無非都在體現四個字:“道法自然”。