贪婪算法的基本思想:通过一系列步骤来构造问题的解,每一步都是对已构造的部分解的一个扩展,直到获得问题的完整解。贪婪算法中,每一步“贪婪地” 选择最好的部分解,但不顾及这样选择对整体的影响(局部最优),因此得到的全局解不一定最好的解,但对许多问题它能产生整体最优解。具体算法描述: 1: void Knapsack(int n,float M, float v[], float w[], float x[]) 2: { 3: Sort(n, v, w); 4: int i; 5: for(i = 1; i < n; i++) 6: x... Read More
对于一个问题,我们常常会有多种的解决方法,也就是说有多种的算法可以解决这个问题,那么怎样评价一个算法的好坏呢?一个算法好不好体现在运行该算法所需要的计算机资源的多少上,而该计算机资源最重要的两个方面就是时间和空间。而我们常常将改进算法的精力集中在时间效率上。1.运行时间度量单位那么用什么来度量这个运行时间呢?时,分,秒吗?更常用的方法是把基本操作次数作为算法运行时间的度量单位。2.增长次数(增长幅度)小规模输入在运行时间上差别不足以将高效的算法和低效的算法法区分开来,所以需要考虑大规模输入时执行次数的增长次数。3.算法的最优、最差和平均效率最差效率:指当输入规模为n时,算法的最坏情况下的效率。 Read More