首先寫本文之前,我先拋出一個問題,什麼是算法?用官方的話說就是
是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制
我自己的理解就是生活中的實際問題,轉化成數學問題去解決,將實際的抽象性問題轉換成數理性的問題去解決。算法的五大特徵是,有窮性,可行性,確切性,輸入,輸出。凡是任何一個算法都必須滿足這5個基本特徵,只要是數學問題,不存在模稜兩可的事情。哪怕是概率問題在數學裡專門有一門課程叫「概率論」與之對應,能將這些不確定問題進行數學化。
因此計算機編程的人都有一些數學基礎才行,這裡舉幾個常見的計算機編程算法,比如快速排序,歸併排序,遞歸,窮舉,貪心算法,漢諾塔算法,八皇后算法等等,這些算法有的需要數學理論,有的可能不太需要數學理論,但是有一點可以肯定的,比需要有智商才可以搞定的東西。
好了,關於算法我就談到這些,相信大家對算法已經有一定的概念了,大家在認識上也統一一下,達成一個共識,說了這麼多,我是為了表述一下我下面的2個觀點。

學歷高不一定算法強
算法首先需要有數學理論去做輔助才行,在工作中我有這樣一個同事他是數學系畢業的,但是他的算法我看也是一般般的,他的數學理論是很棒的,如微積分,傅立葉變換,德布羅意方程組,薛丁格方程,歐拉公式,麥克斯韋方程組等等,他都是非常了解熟悉的,但是解決實際算法問題他還不如一個專科畢業的一個程式設計師強呢,這是為什麼,數學理論不等同於算法,我個人理解為這樣一個公式 數學理論加持 + 邏輯設計組織 + 智商 = 算法能力。也就是數學理論強只能說對算法是有一定幫助的,但是數學理論強並不代表算法能力強,不完全等同的。

我下面再舉一個反面例子,這個倒是很典型,也是一個真實的案例,在20多年前的時候,當時上大學就是很了不起的,我們村裡出了一個大學生,這個大學生的數學也是一級的棒,有一次,市領導來探望他,並且還想讓他幫一個忙,市領導拿出了一張河南地圖,地圖上標有比例尺,讓他算一下河南的土地面積有多大,結果這個大學生花了4個小時愣是沒算出來,用各種公式計算,特別複雜,大家都是知道的,這個地圖不是標準的長方形,正方形,那曲曲折折的拐彎拐的暈頭轉向你怎麼能算出面積呀。真把這個大學生累的不行了,但是最後這個大學生的爸爸把這個問題算出來了,牛啊,他爸用的什麼算法啊,他爸用的算法的確挺牛,別急,在說他用的算法之前,我先隆重的介紹一下他的爸爸,他的爸爸是當地一個地地道道的農民,小學文化水平,好多字認識不全。

他爸的做法是,找了一個質量均勻的50cmX50cm的正方形塑料板,稱量一下這個正方形塑料板的重量,然後對著地圖把把這個塑料板按照地圖的形狀給畫下來,然後再稱一下地圖形狀的塑料板的重量,根據重量比,以及地圖的比例尺輕鬆算出土地面積。說到這裡是不是應該為這位爸爸鼓掌呀,說明他的算法能力也是很強的啊,起碼能說明他的智商也是很高的,只不過沒受過良好的高等教育罷了,要是他會高等數學,再加上會計算機編程的話,他一定是個牛人了。

算法不單單來源於知識,也需要經驗加持
我一直認為算法是來源於生活和人的大腦的一種產物,人們生活中遇到的問題,通過一定的數學機理在加上人的大腦的組織規劃就形成了算法,算法是很嚴密的一個東西,需要考慮到邊邊角角,要求對某一個步聚進行數位化,算法強需要有強大的知識體系做支撐,但是也需要有一定的生活經驗加持才行,畢竟算法就是用於解決生活中的問題嘛,如果過於研究理論,沒有一點生活經驗也會鬧出笑話了,我就以這樣一個段子為例來說明,相信這個笑話大多數人都聽過,就是一個家庭主婦被誤加到一個博士們的聊天群,群裡突然一人問道一滴水高空自由落體運動能不能把人砸死?問題一出,群裡異常活躍,速度,加速度的各種公式計算,討論了將近一個小時沒結果,結果家庭主婦在群裡問了一句難道大家都沒有淋過雨麼?頓時群裡安靜,呵呵。

算法其實就是用數學知識去解決生活中的實際問題,他是需要人類大腦的智慧將數學的知識巧妙的組合利用起來才能去解決生活中的實際問題,如果只是有一堆數學理論知識不會合理的運用那也是不行的,只能說有數學理論基礎的算法方面會更有優勢一些,但是不代表他們的算法會更強。
大家好,我是「上世是朵花」。如果你有什麼好的看法或者觀點可以在評論區展現你的才華,互動交流,如果想進一步了解我,那就關注我吧!