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 相关文章推荐
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
apache mysql php 源码编译使用方法
May 03 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
Jun 17 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php生成百度sitemap站点地图类函数实例
Oct 17 PHP
分享最受欢迎的5款PHP框架
Nov 27 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
Dec 22 PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
php中数组最简单的使用方法
Dec 27 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 socket客户端及服务器端应用实例
2014/07/04 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
javascript显示选择目录对话框的代码
2008/11/10 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
js实现动态时钟
2020/03/12 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
python一键去抖音视频水印工具
2018/09/14 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python实现简单坦克大战
2020/03/27 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
上海某公司.net方向笔试题
2014/09/14 面试题
咖啡店自主创业商业计划书
2014/01/22 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
婚前协议书标准版
2014/10/19 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
党员公开承诺书2015
2015/01/21 职场文书