我爱黑客网首页 设为首页
加入收藏
联系我们
 首 页  技术文章 下载中心 站长学院 交流论坛
 软件:
 文章:        教程:
 推荐: 我爱黑客网论坛
 
 
 
 
   
黑软: Q Q 软件 木马间谍 探嗅监听 溢出攻击 加密解密 漏洞扫描 脚本注入 远程控制 综合利用 聊天工具  
 
技术文章: 爱黑新闻 | 黑客攻防 | 网络技术 | 程序设计 | 系统操作 | 本站动态 | 业界动态 | 安全公告 | 病毒公告 | 八卦黑客
 
 
您当前的位置:我爱黑客 -> 程序设计 -> C语言 -> C数据结构 -> 文章内容  
栏目导航
· 入门基础 · c编程实例
· C数据结构 · C等级考试
热门文章
· c语言算法--贪婪算法-..
· 数据结构--序言
· c语言算法--贪婪算法
· c语言算法--算法思想
· c语言算法--贪婪算法-..
· c语言算法--贪婪算法-..
· c语言算法--贪婪算法-..
· c语言算法--贪婪算法-..
· c语言算法--贪婪算法-..
· c语言算法--分而治之算..
· c语言算法--分而治之算..
· c语言算法--分而治之算..
相关文章

· 二级C语言实例解答
· 二级考试大纲(C语言..
· 2003全国等级考三级..
· 计算机二级C语言过关..
· 二级(C语言程序设计..
· c语言算法--贪婪算法..
· c语言算法--算法思想..
· c语言算法--贪婪算法..
· c语言算法--贪婪算法..
· c语言算法--贪婪算法..
查看更多与c语言算法--贪婪算法---货箱装船相关内容

c语言算法--贪婪算法---货箱装船
作者:幽火  来源:www.5ihack.com  发布时间:2007-1-8 17:00:31  发布人:ghostfire

减小字体 增大字体

  这个问题来自例1 - 2。船可以分步装载,每步装一个货箱,且需要考虑装载哪一个货箱。根据这种思想可利用如下贪婪准则:从剩下的货箱中,选择重量最小的货箱。这种选择次序可以保证所选的货箱总重量最小,从而可以装载更多的货箱。根据这种贪婪策略,首先选择最轻的货箱,然后选次轻的货箱,如此下去直到所有货箱均装上船或船上不能再容纳其他任何一个货箱。

  例1-7 假设n =8, [w1 , ... w8 ]=[100,200,50,90,150,50,20,80], c= 4 0 0。利用贪婪算法时,所考察货箱的顺序为7 , 3 , 6 , 8 , 4 , 1 , 5 , 2。货箱7 , 3 , 6 , 8 , 4 , 1的总重量为3 9 0个单位且已被装载,剩下的装载能力为1 0个单位,小于剩下的任何一个货箱。在这种贪婪解决算法中得到[x1 , ..., x8 ] = [ 1 , 0 , 1 , 1 , 0 , 1 , 1 , 1 ]且?xi = 6。

  定理1-1 利用贪婪算法能产生最佳装载。

  证明可以采用如下方式来证明贪婪算法的最优性:令x = [x1 , ..., xn ]为用贪婪算法获得的解,令y =[ y1 , ..., yn ]为任意一个可行解,只需证明n ?i= 1xi ≥n ?i= 1yi 。不失一般性,可以假设货箱都排好了序:即wi≤wi + 1(1≤i≤n)。然后分几步将y 转化为x,转换过程中每一步都产生一个可行的新y,且n ?i = 1yi 大于等于未转化前的值,最后便可证明n ?i = 1xi ≥n ?j = 1yi 。

  根据贪婪算法的工作过程,可知在[0, n] 的范围内有一个k,使得xi =1, i≤k且xi =0, i>k。寻找[ 1 ,n]范围内最小的整数j,使得xj≠yj 。若没有这样的j 存在,则n ?i= 1xi =n ?i = 1yi 。如果有这样的j 存在,则j≤k,否则y 就不是一个可行解,因为xj≠yj ,xj = 1且yj = 0。令yj = 1,若结果得到的y 不是可行解,则在[ j+ 1 ,n]范围内必有一个l 使得yl = 1。令yl = 0,由于wj≤wl ,则得到的y 是可行的。而且,得到的新y 至少与原来的y 具有相同数目的1。

  经过数次这种转化,可将y 转化为x。由于每次转化产生的新y 至少与前一个y 具有相同数目的1,因此x 至少与初始的y 具有相同的数目1。货箱装载算法的C + +代码实现见程序1 3 - 1。由于贪婪算法按货箱重量递增的顺序装载,程序1 3 - 1首先利用间接寻址排序函数I n d i r e c t S o r t对货箱重量进行排序(见3 . 5节间接寻址的定义),随后货箱便可按重量递增的顺序装载。由于间接寻址排序所需的时间为O (nl o gn)(也可利用9 . 5 . 1节的堆排序及第2章的归并排序),算法其余部分所需时间为O (n),因此程序1 3 - 1的总的复杂性为O (nl o gn)。

查看更多与c语言算法--贪婪算法---货箱装船相关内容

[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:
下一篇文章:
      c语言算法--贪婪算法---0/1背包问题       c语言算法--算法思想
∷相关文章评论∷   (评论内容只代表网友观点,与本站立场无关!) [发表评论]
 
 
 
 
晋ICP备05008232   维护网络安全、传播安全技术才是我们的目标! 
 
关于本站 - 网站帮助 - - 下载声明 - 友情连接 -网站地图