演算法,在中國古代文獻中稱為“術”,最早出現在《周髀算經》、《九章算術》,
演算法,在數學和計算機科學之中,是處理各類問題的具體運算步驟,常用于計算、資料處理和自動推理,
演算法不是計算機領域中才有的概念,不僅僅局限于編程語言,它可以用任何方式來描述,
那么我們可能依然對這個演算法,并沒有什么認知,就以古埃及人為例子吧,
他們的算術主要用疊加法,做通常加減法時,他們只是靠添上或劃掉一些記號,以求得最后結果,乘法,也就是一種變相的加法,埃及就把這個形象化了,
在他們計算12乘12的時候,并不是直接運算,而是間接運算,首先是4乘12=48,8是4的2倍,那么8乘12就等于96,8是4的2倍,現在只需要48+96即可,也就是一步一步把計算規劃到小運算,
可見演算法,就是在計算程序中體現出不同的方法,我們計算12乘12,同樣也可以考慮12乘10+12乘2,這就是不用的方法,
當然,埃及人在計算分數的時候,總是把分子當1計算,那么,遇到了2/5這種數怎么辦?就寫成1/3+1/15,他們把分子為2而分母為5到101的奇數的這類分數,表達成分子為1的分數之和,這就是他們演算法的弊端了,計算程序十分復雜,(換成計算機來說,就是時間復雜度太大)而我們計算分數,是不會在意分子是不是1,這就簡化了演算法,優化了演算法,提高了效率(后來埃及這種演算法也確實被時代淘汰),
再如, 過直線l上給定的點P,作該直線的垂線,
古埃及人解決該問題的一個演算法為:

- 取12段等長繩索,依次首尾聯結成環,聯結處稱作“結”,按順時針方向編號為0到11,那么一共有十三個小線段,十二個結,
- 奴隸A看管0號結,將其固定于點P處
- 奴隸B牽動4號結,將繩索沿直線l方向盡可能地拉直(長度為4)
- 奴隸C牽動9號結,將繩索盡可能地拉直(長度為5)
- 經過0號和9號結,繪制一條直線
(想想,這其實構造了一個3、4、5的三角形,也就是勾股定理,很巧妙不是嗎?)
就這樣,這個問題就被解決了,這就是一種演算法(好比有的程式員想要在代碼中獲取次日日期,干脆寫sleep24小時)
計算機科學的本質,就是研究計算程序中的方法與科學,
而現代計算機程式中的演算法具體特征有如下幾點:
1.輸入:一個演算法必須有零個或以上輸入量,
2.輸出:一個演算法應有一個或以上輸出量,輸出量是演算法計算的結果,
3.明確性:演算法的描述必須無歧義,以保證演算法的實際執行結果是精確地符合要求或期望,通常要求實際運行結果是確定的,
4.有限性:一些演算法必須在有限個步驟內完成任務,
5.有效性:又稱可行性,能夠實作,演算法中描述的操作都是可以通過已經實作的基本運算執行有限次來實作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/413960.html
標籤:其他
