PHP贪婪算法解决0-1背包问题实例分析


Posted in PHP onMarch 23, 2015

本文实例讲述了PHP贪婪算法解决0-1背包问题的方法。分享给大家供大家参考。具体分析如下:

贪心算法解决0-1背包问题,全局最优解通过局部最优解来获得!比动态规划解决背包问题更灵活!

//0-1背包贪心算法问题
class tanxin{
  public $weight;
  public $price;
  public function __construct($weight=0,$price=0)
  {
    $this->weight=$weight;
    $this->price=$price;
  }
}
//生成数据
$n=10;
for($i=1;$i<=$n;$i++){
  $weight=rand(1,20);
  $price=rand(1,10);
  $x[$i]=new tanxin($weight,$price);
}
//输出结果
function display($x)
{
  $len=count($x);
  foreach($x as $val){
    echo $val->weight,' ',$val->price;
    echo '<br>';
  }
}
//按照价格和重量比排序
function tsort(&$x)
{
  $len=count($x);
  for($i=1;$i<=$len;$i++)
  {
    for($j=1;$j<=$len-$i;$j++)
    { 
      $temp=$x[$j];
      $res=$x[$j+1]->price/$x[$j+1]->weight;
      $temres=$temp->price/$temp->weight;
      if($res>$temres){
        $x[$j]=$x[$j+1];
        $x[$j+1]=$temp;
      }
    }
  } 
}
//贪心算法
function tanxin($x,$totalweight=50)
{
  $len=count($x);
  $allprice=0;
  for($i=1;$i<=$len;$i++){
    if($x[$i]->weight>$totalweight) break;
    else{
      $allprice+=$x[$i]->price;
      $totalweight=$totalweight-$x[$i]->weight;
    }
  }
  if($i<$len) $allprice+=$x[$i]->price*($totalweight/$x[$i]->weight);
  return $allprice;
}
tsort($x);//按非递增次序排序
display($x);//显示
echo '0-1背包最优解为:';
echo tanxin($x);

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
织梦模板标记简介
Mar 11 PHP
php 方便水印和缩略图的图形类
May 21 PHP
PHP 采集程序中常用的函数
Dec 09 PHP
php中mysql模块部分功能的简单封装
Sep 30 PHP
教你如何用php实现LOL数据远程获取
Jun 10 PHP
php从memcache读取数据再批量写入mysql的方法
Dec 29 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
PHP异常处理Exception类
Dec 11 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
php获取excel文件数据
Apr 21 PHP
PHP手机短信验证码实现流程详解
May 17 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 #PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 #PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 #PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 #PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 #PHP
php使用正则表达式进行字符串搜索的方法
Mar 23 #PHP
分享十款最出色的PHP安全开发库中文详细介绍
Mar 22 #PHP
You might like
多php服务器实现多session并发运行
2006/10/09 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
Python字符串匹配算法KMP实例
2015/07/18 Python
详解python开发环境搭建
2016/12/16 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
Python argparse模块应用实例解析
2019/11/15 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
2013/09/02 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
女方回门宴答谢词
2014/01/14 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
绿色环保标语
2014/06/12 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
Python中的 Set 与 dict
2022/03/13 Python
Python中的嵌套循环详情
2022/03/23 Python