算法帶來真正的創新(馮文)
任何學電腦的人都必須學編程,而編程則必須掌握處理數據的方法,這稱之為Algorithm,中文譯作「算法」(不是計「算」,應作盤「算」之謂)。入門的算法不難,掌握幾套典型純熟運用便可,較進取的則嘗試優化個別算法的運行表現。那麼,進階的算法學習什麼呢?答案是,如何處理現行算法都無法解決的問題!
發展近似算法解難題
原來,不少情況不但沒有人想得出簡明有效的處理方法,更甚者,個別問題已被證明根本不可能有便捷的解決辦法;通常這些問題數目稍大,所需計算量便激增,如是者即使投入更大量的運算能力,問題也無法解決。
在70年代,電腦理論界不少的精力都花在鑑定這類「無得解」的問題,發現大量例子,情況一度令人擔心,因為這類問題本身又是在應用情況中常常遇到。例如所謂「背包問題」,假設某人有一個固定容量的背包,有很多不同大小和價值的東西要放進去,他要把總數達到某一價值的東西收入內,而不能超越背包體積的容量,這問題已證明沒有便捷的解決方案。
但這困難卻沒有窒礙算法研究的發展,反而提供有用的研究目標。若然無法獲得完整的算法,那可否設定一些約略的算法?這就促成90年代以來日漸成熟的所謂approximation algorithm(中譯「近似算法」)發展,目標在於把問題解決達致某一程度的準繩,雖然並非十全十美,但不失為實際可行的方案。因為這些問題往往跟成本有關,就是不能得出「賺到盡」的方案,這些算法仍然能算得出究竟少賺了多少,於是可以把這負數分擔。
一個國家或公司擁有對算法的知識,能夠有效解決其他人未能解決的問題,那當然有利競爭。如果技術就是我們對環境開發的掌握,算法也是技術的一種。以技術為基礎,可以發展創新的企業,這是我們所應大力鼓勵的。我們日常所聽聞的創新,好像別人搞「網上打的」,我們亦搞,這些只能稱之為一個項目。真正的創新,必須是社會關係的改造,而這每每建基於技術的突破。
更多馮文文章:
支持EJ Tech
如欲投稿、報料,發布新聞稿或採訪通知,按這裏聯絡我們。