如何通俗易懂地解釋什麼是演算法?

如題,當別人(外行)問起什麼是演算法的時候,如何通俗易懂的解釋?


-

謝邀。

給他講演算法的五大特徵就行:

  1. 有限性(Finiteness):一個演算法必須保證執行有限步之後結束。
  2. 確切性(Definiteness): 一個演算法的每一步驟必須有確切的定義。
  3. 輸入(Input):一個演算法有零個或多個輸入,以刻畫運算對象的初始情況,所謂零個輸入是指演算法本身給定了初始條件。
  4. 輸出(Output):一個演算法有一個或多個輸出。沒有輸出的演算法毫無意義。
  5. 可行性(Effectiveness): 一個演算法的任何計算步驟都是可以被分解為基本可執行的操作,每個操作都能夠在有限時間內完成。

PS.感覺又複習了一遍計算機原理。

-


所謂的的「通俗易懂」,其實就是對理解的模糊化。對一句話完全不懂和通俗易懂其實都是做到「說了等於沒說,沒說卻不等於說了」。在我看來,在這個世界上根本就沒有什麼是「通俗易懂」的。下面拿演算法舉例。

所謂演算法,就是計算的辦法。

怎麼樣,夠通俗易懂吧。

可是什麼是計算?什麼是辦法?你根本不理解,所以這句話說了等於沒說。

簡單地,我們列豎式,是計算的辦法。按計算器,也是計算的辦法。數手指頭,也是計算的辦法。我們先算乘除再算加減是計算的辦法,先算完一個東西,拿得到的結果再算另一個東西,也是計算的辦法。

夠通俗了吧。

屁!

我自己在寫的時候渾身上下都不自在,因為我自己都混亂了,我寫的時候就在想啊,加法是一種計算,還是一種計算的辦法?

這下你知道為什麼我總寫不出完整的文章了吧。——我只要寫東西,大腦就一定能從我寫的糾出一堆問題來。不過年紀大了之後勉強能寫一點了……咳咳

其實上面這個問題解決起來很麻煩——要提的東西太多了。我們來看點簡單點的,數手指頭。

數手指頭聽起來是多麼通俗易懂啊,你要描述起來可就不那麼容易了,首先我們想到範圍,這到底能數多少。然後假設我們遭遇的是大於10的情況,那麼如果要數10以外的數字,每一次數到十之後是初始化為手掌,手指頭再一個個向手心彎。還是數到十之後直接把手指頭倒序依次舒展,把拳頭慢慢變回手掌?這兩個操作是不一樣的。另外記憶難度,計算時間所代表的複雜程度也是需要考慮的問題。

但我想,說了這麼多,應該足夠讓人通俗易懂地理解什麼是演算法了。所以說學到後面,都會覺得課本上那些以前看不懂的東西,才是真正最通俗易懂的,至少,數學是這樣的。


在我看來,演算法是有限操作的集合!


謝邀。

Algorithm這個詞的本意就是解決問題的方法。所以我覺得直接告訴別人這個含義就能講清楚。更多資料參考:

圖靈社區 : 圖書 : 1.1 演算法


解決問題的方法嘛。

演算法的定義呀。

具體的演算法有一個解釋映像特別深。

遞歸(加黑加粗):如果你想知道什麼是遞歸,參見 遞歸(加黑加粗)。

妙!


通俗易懂的說法就是——

你可以把一個過程分解成為一定次數的步驟,然後可以每一步交給不同的人來做,然後這個人哪怕不知道自己做的東西的意義,只要他們遵守你的指令,也可以完成這個過程。

所以演算法不光用於計算機。


能解決問題的方法


這麼好的問題,居然沒人說到點子上。

演算法就是宇宙萬物的內在知識原理。


能幫助你算出結果的方法。( ̄▽ ̄)

要說大部分人能理解的話,其實和數學是差不多的。數學上有定理,以及很多歷史上流傳下來的解題方法,演算法也就是這樣的東西。一些人用一個方法解決了一個問題,然後你學習了他的方法,就可以解決一些類似的問題。

嗯,個人理解,可能會有所缺漏,歡迎指錯。


演算法就是計算機解決一個問題的方法。

可以和人解決方法一樣,也可以不一樣。

方法牛逼,計算機就可以算的快,方法無腦,很可能算一輩子。


解決問題的有限步驟。

其實生活中處處見演算法,只是執行的不是電腦和機器,是人罷了。比如路徑長短問題,我們的解法一般是笨方法--窮舉吧,在解決這個問題過程的解題思路就算是一種演算法。而我們程序猿考慮的演算法是能把這解題思路抽象成代碼、計算機指令的形式,儘可能地優化,讓計算機替我們去執行這過程,更好地解決該類問題,而不僅僅是該問題(重複性的機械工作不就正好需要計算機嗎?)

以上個人理解。


一系列通過計算來解決問題的明確的步驟。

打個比方說,怎樣從家到學校?比如一個可能的答案(如果把走類比為計算):從家門出發,直走50米,第一個十字路口右轉,繼續直行100米,到達公交站,乘402路車,5站後下車,沿人行道繼續行走200米,左轉,再直行150米,最終到達校門。

ε (?&> ? &<) з


演算法是CS與實際問題之間的橋樑。就像廚藝之於菜肉和食物


演算法就是基於數據處理的效率,在關於某個問題 或某類問題的所有解空間中,找到符合預期時間複雜度與空間複雜度的最優解。


可以這麼理解嗎? 解決一個問題的程序或者公式 ;比如一個演算法通常意味著一個可以解決循環問題的小程序 。


通俗易懂就是舉例子了,比如去人群裡面找一個穿藍衣服白褲子的短頭髮男人。先把女的都排除掉,然後不是藍衣服的排除掉,然後不是白褲子的排除掉,然後不是短頭髮的排除掉。剩下的就是你要找的人。

把這些用數學表達,然後找出最簡潔有效的那一個,就是演算法。


與其通俗話,不如節約點時間相信它本就複雜,何必多加一步通俗的複雜度。


初中政治題三大問題:是什麼,為什麼,怎麼做

而演算法就是「怎麼做」。

並不是所有的「怎麼做」都能叫演算法

唯有你一字一句全盤按照我說的去做,並且你成功了,這才能叫演算法。


通俗易懂的說:演算法就是解決某些問題的方法


通俗易懂地解釋最好的方法是把抽象實例化。

首先有個要做的目的,比如去醫院。

然後有個手段,比如騎自行車去。這就是一個演算法。

然後又有第二個演算法是坐公交車去。

兩者殊途同歸,兩者之間就是不同演算法的區別。

非要舉例計算機裡面的,比較容易舉例的是 &<&< 操作等同乘以 2。


推薦閱讀:

清理內存是否能為計算機提速?
如何有效地閱讀論文等文獻資料?
如何結合xv6 book來閱讀xv6源代碼?
阿里雲是用什麼技術攔截未備案的域名的?
如何評價電子科大楊宏春老師對計算機專業的言論?

TAG:演算法 | 數學 | 機器學習 | 計算機科學 | 大數據 |