算法究竟是什么,有什么用?
時間:2021-10-12 15:38:36
手機(jī)看文章
掃描二維碼
隨時隨地手機(jī)看文章
[導(dǎo)讀]搞軟件的,經(jīng)常提到算法這個詞。而且大家都對算法推崇備至,今天簡單聊一下算法究竟是干嘛的?解決什么問題?首先從宏觀上了解下,這個最好理解。我從幾個案例來分析下,目的是讓你知道為什么搞軟件需要用到算法。思考下面案例時,大家不妨把自己代入去替代CPU,或者說替代算法程序,去思考下如果是...
搞軟件的,經(jīng)常提到算法這個詞。而且大家都對算法推崇備至,今天簡單聊一下算法究竟是干嘛的?解決什么問題?
首先從宏觀上了解下,這個最好理解。我從幾個案例來分析下,目的是讓你知道為什么搞軟件需要用到算法。
思考下面案例時,大家不妨把自己代入去替代CPU,或者說替代算法程序,去思考下如果是用你的腦子來思考決策,你會怎么做?實際上你的思考和決策的過程就是你大腦里的算法在運(yùn)行。
案例1 路徑規(guī)劃問題。
已知一張地圖,然后我們在A點,要去B點,應(yīng)該走哪一條路?
大家都用過高德或者百度地圖,對這種場景很熟悉的,這就是個典型的算法問題。這個問題的復(fù)雜之處就在于實際要考慮很多因素,譬如各路段的擁堵情況,譬如是否走高速,譬如我開車還是步行,這些條件都會作為算法要考慮的參數(shù)。
如果你要做一個導(dǎo)航產(chǎn)品,你能不研究路徑規(guī)劃算法嗎?不搞定這塊,你的產(chǎn)品怎么智能化起來?
案例2 手機(jī)手表計步功能問題。
現(xiàn)在智能手機(jī)和手表都帶了計步器功能,準(zhǔn)確度其實挺高的了,但是前幾年剛出來時實際上精確度參差不齊。
實際上計步器就是通過各種傳感器的數(shù)據(jù),來綜合處理判斷這個人究竟有沒有走步??梢允褂玫降膫鞲衅髦饕峭勇輧x和加速度傳感器。大家可以理解為就是個MPU6050,玩過四軸的同學(xué)都熟悉。
陀螺儀能告訴你姿態(tài)變化,加速度傳感器能告訴你加速度變化,這兩個值本身對你的運(yùn)動都很敏感,傳感器本身零度也很高。
但是問題是你怎么從這兩個值能得到人到底走沒走?走了幾步?這就需要算法。你的算法效果越好則測到的步數(shù)越準(zhǔn),不會遺漏,也不會多算。而且還要考慮算法本身的復(fù)雜度,計算所需要的運(yùn)算量,功耗等。
最好的算法的標(biāo)準(zhǔn)就是,消耗更少的輸入數(shù)據(jù)和功耗,運(yùn)算量,運(yùn)算時間,得到最精準(zhǔn)高效的結(jié)果。然而現(xiàn)實中不可能有各方面都最好的算法,總是要做一些取舍。
案例3 電動汽車電機(jī)控制器
電動汽車用電機(jī)驅(qū)動,這個和傳統(tǒng)的燃油車完全不同。大家如果開過兩種車,做個對比就會發(fā)現(xiàn)“手感”是不同的。
傳統(tǒng)燃油車的核心技術(shù)是發(fā)動機(jī)和變速箱,這個大家都聽過。那為什么是這兩個?難在哪里?你想想,汽車那么重,路況又復(fù)雜,燃油發(fā)動機(jī)產(chǎn)生的燃燒動能在變速箱和一系列加減速齒輪的作用下,要輸出平穩(wěn)的動力,讓汽車能正常運(yùn)行,這多難啊,這其實就是一套“機(jī)械實現(xiàn)的運(yùn)動控制算法”。
而電動車呢?也需要這一套算法,甚至需要考慮“動能回收”等更復(fù)雜的功能。難不難?在計算機(jī)領(lǐng)域算挺難的,但是和燃油發(fā)動機(jī)相比其實難度大大降低,這也是為什么汽車電動化有助于國產(chǎn)汽車崛起的一大原因。
電機(jī)控制的應(yīng)用場景很多,譬如吹風(fēng)筒,各種機(jī)器設(shè)備等場景和具體要求完全不同,所以需要應(yīng)對的問題和算法策略也不同,這就是為什么需要很多開發(fā)電機(jī)控制算法的人。
還有很多案例,譬如電動車的電池充電問題,手機(jī)的自動鎖屏自動檢測人臉驗證開鎖問題,汽車的空氣懸架問題,甚至噴水馬桶怎么洗干凈屁股的問題,等等都是算法問題。
所以做算法有很大需求,可以說智能化的本質(zhì),就是玩轉(zhuǎn)傳感器和算法。
首先從宏觀上了解下,這個最好理解。我從幾個案例來分析下,目的是讓你知道為什么搞軟件需要用到算法。
思考下面案例時,大家不妨把自己代入去替代CPU,或者說替代算法程序,去思考下如果是用你的腦子來思考決策,你會怎么做?實際上你的思考和決策的過程就是你大腦里的算法在運(yùn)行。
案例1 路徑規(guī)劃問題。
已知一張地圖,然后我們在A點,要去B點,應(yīng)該走哪一條路?
大家都用過高德或者百度地圖,對這種場景很熟悉的,這就是個典型的算法問題。這個問題的復(fù)雜之處就在于實際要考慮很多因素,譬如各路段的擁堵情況,譬如是否走高速,譬如我開車還是步行,這些條件都會作為算法要考慮的參數(shù)。
如果你要做一個導(dǎo)航產(chǎn)品,你能不研究路徑規(guī)劃算法嗎?不搞定這塊,你的產(chǎn)品怎么智能化起來?
案例2 手機(jī)手表計步功能問題。
現(xiàn)在智能手機(jī)和手表都帶了計步器功能,準(zhǔn)確度其實挺高的了,但是前幾年剛出來時實際上精確度參差不齊。
實際上計步器就是通過各種傳感器的數(shù)據(jù),來綜合處理判斷這個人究竟有沒有走步??梢允褂玫降膫鞲衅髦饕峭勇輧x和加速度傳感器。大家可以理解為就是個MPU6050,玩過四軸的同學(xué)都熟悉。
陀螺儀能告訴你姿態(tài)變化,加速度傳感器能告訴你加速度變化,這兩個值本身對你的運(yùn)動都很敏感,傳感器本身零度也很高。
但是問題是你怎么從這兩個值能得到人到底走沒走?走了幾步?這就需要算法。你的算法效果越好則測到的步數(shù)越準(zhǔn),不會遺漏,也不會多算。而且還要考慮算法本身的復(fù)雜度,計算所需要的運(yùn)算量,功耗等。
最好的算法的標(biāo)準(zhǔn)就是,消耗更少的輸入數(shù)據(jù)和功耗,運(yùn)算量,運(yùn)算時間,得到最精準(zhǔn)高效的結(jié)果。然而現(xiàn)實中不可能有各方面都最好的算法,總是要做一些取舍。
案例3 電動汽車電機(jī)控制器
電動汽車用電機(jī)驅(qū)動,這個和傳統(tǒng)的燃油車完全不同。大家如果開過兩種車,做個對比就會發(fā)現(xiàn)“手感”是不同的。
傳統(tǒng)燃油車的核心技術(shù)是發(fā)動機(jī)和變速箱,這個大家都聽過。那為什么是這兩個?難在哪里?你想想,汽車那么重,路況又復(fù)雜,燃油發(fā)動機(jī)產(chǎn)生的燃燒動能在變速箱和一系列加減速齒輪的作用下,要輸出平穩(wěn)的動力,讓汽車能正常運(yùn)行,這多難啊,這其實就是一套“機(jī)械實現(xiàn)的運(yùn)動控制算法”。
而電動車呢?也需要這一套算法,甚至需要考慮“動能回收”等更復(fù)雜的功能。難不難?在計算機(jī)領(lǐng)域算挺難的,但是和燃油發(fā)動機(jī)相比其實難度大大降低,這也是為什么汽車電動化有助于國產(chǎn)汽車崛起的一大原因。
電機(jī)控制的應(yīng)用場景很多,譬如吹風(fēng)筒,各種機(jī)器設(shè)備等場景和具體要求完全不同,所以需要應(yīng)對的問題和算法策略也不同,這就是為什么需要很多開發(fā)電機(jī)控制算法的人。
還有很多案例,譬如電動車的電池充電問題,手機(jī)的自動鎖屏自動檢測人臉驗證開鎖問題,汽車的空氣懸架問題,甚至噴水馬桶怎么洗干凈屁股的問題,等等都是算法問題。
所以做算法有很大需求,可以說智能化的本質(zhì),就是玩轉(zhuǎn)傳感器和算法。