练习1——贪心算法总结

来源:互联网 发布:网络淦是什么意思 编辑:程序博客网 时间:2024/05/22 08:22

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解

 

  实现贪心的具体步骤是:

  • Begin 从问题的某一初始解出发;
  • while 能朝给定总目标前进一步 do
  • 求出可行解的一个解元素;
  • 由所有解元素组合成问题的一个可行解

    从我的理解来看,目前遇到的贪心问题分为三种:背包问题,区间问题,Huffman编码问题

 

    背包问题属于比较简单的那种类型,上课老师讲的例题就是这种类型,这类问题要么以物品数量为标准,要么以性价比为标准,通过一次For循环即可求解。

    区间问题是一个难点,ProblemA等题是这类问题的代表,区间问题的特点是较难找出一个求最优解的标准,标准找不出,问题就很难解决,以ProblemA为例,解题的关键是理解串行和并行,并将通过次数最多的路段的总时间作为最优解。

    Huffman编码问题,是一类比较特殊的贪心问题,Huffman编码从通俗上讲,就是利将固定二进制位的字符编码,变成有弹性位数的编码,出现频率越高的字符二进制的位数越短,反之则越高,通过这种方式来压缩文本,在题目中,这种问题的解决方式是利用优先队列容器,优先的标准是频率,然后将字符频率排序并入队,每次取出两个,将频率相加再次入队,直到队列为空为止。

 

  这就是我目前的理解,如果以后有了更深的理解,会在此继续补充的。

 

  经过最近几周的刷题训练,我经历了AC时的喜悦,也经历了一整天做不出一个题的悲伤。我明白了ACM事业任重而道远,要想在这条路上走得远,就必须要肯动脑,肯吃苦。

 

 

 

 

  欢迎各位道友批评和指正。

  代码托管地址:https://github.com/WiseDoge/ACM_Practice_One

2 0