最优化问题是计算机领域的一个很重要的问题,很多现实的问题本质上都是最优化问题,或者说都可以转化为最优化的问题。比如说怎么规划旅游线路最省钱,在指定的时间里做更多的事情等等,这些都是最优化问题。为了解决最优化问题,计算机界提出了各种算法。

其中有五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。

 

1) 贪婪算法

在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的是在某种意义上的局部最优解。可以通过一系列局部最优的选择,扩展到整体比较满意的解。贪婪算法可以获取到问题的局部最优解,不一定能获取到全局最优解,同时获取最优解的好坏要看贪婪策略的选择。

例如背包问题中,我们放物品可以选择按物品价值最大的先放;可以选择按重量最小的物品来放;也可以选择单位重量的价值最大来放。

物品类:

 1     /// <summary>
 2     /// 物品类用于存储物品的属性
 3     /// </summary>
 4     public class Goods{
 5 
 6         //编号
 7         public int flag;
 8         //重量
 9         public int weight;
10         //价值
11         public int value;
12         //单位重量
13         public double vw;
14 
15         /// <summary>
16         /// goods的构造函数
17         /// </summary>
18         /// <param name="flag">编号</param>
19         /// <param name="weight">重量</param>
20         /// <param name="value">价值</param>
21         /// <param name="vw">单位重量价值</param>
22         public Goods(int flag, int weight, int value, double vw)
23         {
24             this.flag = flag;
25             this.weight = weight;
26             this.value = value;
27             this.vw = vw;
28         }
29     }
View Code

相关文章:

  • 2022-12-23
  • 2021-07-03
  • 2021-06-22
  • 2021-08-04
  • 2021-12-07
  • 2021-07-04
  • 2021-10-31
猜你喜欢
  • 2021-11-06
  • 2021-12-06
  • 2021-11-28
  • 2021-05-28
相关资源
相似解决方案