美文网首页
4. 贪心算法

4. 贪心算法

作者: MangoDai | 来源:发表于2017-10-11 09:47 被阅读0次

    What

    A greedy algorithm is an algorithmic paradigm that follows the problem solving heuristic of making the locally optimal choice at each stage with the hope of finding a global optimum. In many problems, a greedy strategy does not in general produce an optimal solution, but nonetheless a greedy heuristic may yield locally optimal solutions that approximate a global optimal solution in a reasonable time.
    说白了,贪心算法是分步走,每一个找到最优解。总体的找到解不一定是最优解。

    Why

    Compare to Dynamic Programming

    1. A greedy algorithm is effective powerful, beacuse it isn't pay attention to global result.
    2. More then appropriate NP(Non-determine Problem) 问题

    How to design

    1. 贪心算法使用组合优化问题,该问题满足优化原则
    2. 求解过程是多步判断过程,最终的判断序列对应问题的最优解
    3. 判断一句某种短视的贪心选择原则,原则的好坏决定了算法的成败
    4. 贪心法必须进行正确性证明
    Greedy Select
    input : S=set{1,2 ... n},活动开始时间Si,截止时间Fi
    output : A, it is one of S
    A = {1}
    j = 1
    for i =2 to n do
      if Si > Fj
      then A = A + {i}
        j = i
    return A
    

    Sample

    1. Generate Minimum Tree
    Prim
    input : Graphic G = < Vector, Edge, Weight>
    output : Tree T
    S = {1} // start
    T = null
    while V - S != null do
      temp = V - S
      j = selectMinimalWeightOfEdge(temp)
      T = T + ei
      S = S + j
    
    Kruskal
    input : Graphic G = < Vector, Edge, Weight>
    output : Tree T
    1. Sorting edges by Weight
    2. T = null
    3. repeat
    4.   e = Minimal edge
    5.   if e is not into continue branch T
    6.   then T = T + e
    7.   E = E - e
    8. Until T include n-1 edge
    

    相关文章

      网友评论

          本文标题:4. 贪心算法

          本文链接:https://www.haomeiwen.com/subject/mruiyxtx.html