數據結構和算法—動態規劃

數據結構和算法—動態規劃html

我一直最想作的就是機器學習,因此也都是在報機器學習的崗位,在BAT三家公司中,其實仍是要講百度吧,由於阿里在一面的時候就掛了,給個人理由是我投錯了崗位(據面試官講我應該去投算法崗,但我投的是數據挖掘),後來我在想,其實還就是我沒能達到她的語氣要求;騰訊就別講了,連面試都沒收到(聽說這個崗位不招咱們學校的),這可能就是個猜想吧。重點說說百度的筆試和麪試吧,單純從技術上來說,由於我在作機器學習嘛,百度仍是我最心儀的公司。此次百度的招聘分爲筆試 面試(三個技術面 Hr面),我掛在了最後一個技術面上,先來講說武漢的筆試吧,固然筆試題我作得仍是蠻開心的,由於最後一道證實題能夠說仍是我平時的強項吧,面試中,前兩面都還好,面得比較基礎,包括基本的數據結構,算法,而後是機器學習的算法理解,不一樣算法之間的對比,這也正是我平時作的一些工做,這樣的過程仍是蠻舒服的,整個流程下來,我以爲問題不是很大。最後一關就是不少實際的項目問題,因爲我本身平時項目較少,加之本身的導師不是作機器學習的,沒作過具體的機器學習相關項目,只是將算法學習的比較全。
    我寫以上的東西也是給找工做的朋友一個建議,也是給本身一個醒目的教訓,多去實踐,因此這段時間我仍是會努力更新個人博客,固然不徹底是前面的機器學習算法,如今將包括更多的東西,我會把我如今在作的項目也慢慢更新上來,而後又基本的算法的學習材料,但願關注我博客的朋友,你們一塊兒努力,我不是科班出身,可是我但願你們不吝賜教,有你的幫助我會成長的更快。
    好了,就寫到這吧。我想仍是從一些算法開始入手吧,今天仍是來更新一篇動態規劃的文章。
1、動態規劃的思想
    動態規劃(dynamic programming)是一種算法設計的思想,主要是將一個問題劃分紅幾個更小的問題,並對這樣更小的問題進行求解,最終獲得整個問題的解。有人在想這樣的方式和分治法的求解很像。
動態規劃:各個子問題不是獨立的,他們包含了公共子問題
分治法:一個大問題是被劃分紅一些獨立的子問題,經過遞歸地求解子問題最終獲得整個問題的解
在動態規劃法中,與其對交疊的子問題一次一次求解,不如對每一個較小的子問題只求解一次並把結果記錄在表中,這樣就能從表中獲得原始問題的解。舉個簡單的例子,對於菲波那切數列來講:

對於這樣的遞推式,能夠把一個複雜的問題分解成幾個非獨立的子問題,咱們能夠採用的方式是記錄每一組值,如斐波那契數列的值依次是0,1,1,2,3,5,...。而不須要重複去計算。
2、用動態規劃求解二項式係數
二項式係數問題是一個求解的問題。咱們有以下的遞推式:

要計算的值,咱們須要記錄之間的值。動態規劃的核心思想就是要找到這樣的遞推式,而後構建這樣的存儲空間去記錄中間的值,避免重複計算。最簡單的方式是利用數組去記錄。數據分析師培訓
如上的問題能夠用下面的Java代碼實現:
[java] view plain copy 在CODE上查看代碼片派生到個人代碼片
package org.algorithm.dynamicprogramming;  
 
 
 
public class CalculateDemo {  
     
    public static int calBinomial(int n, int k) {  
        int C[][] = new int[n 1][k 1];  
        for (int i = 0; i <= n; i ) {  
            for (int j = 0; j <= minValue(i, k); j ) {  
                if (j == 0 || j == i) {  
                    C[i][j] = 1;  
                } else {  
                    C[i][j] = C[i - 1][j - 1] C[i - 1][j];  
                }  
            }  
        }  
        return C[n][k];  
    }  
 
    // 返回較小的值  
    public static int minValue(int i, int k) {  
        return (i <= k ? i : k);  
    }  
 
    public static void main(String args[]) {  
        int n = 10;  
        int k = 5;  
        System.out.println(calBinomial(n, k));  
    }  
 
java

相關文章
相關標籤/搜索