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 相关文章推荐
用PHP写的MySQL数据库用户认证系统代码
Mar 22 PHP
php抓取https的内容的代码
Apr 06 PHP
PHP中英混合字符串截取函数代码
Jul 17 PHP
PHP 图片上传代码
Sep 13 PHP
简单的php缓存类分享     php缓存机制
Jan 22 PHP
php读取纯真ip数据库使用示例
Jan 26 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 PHP
php查看网页源代码的方法
Mar 13 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 PHP
解决laravel 5.1报错:No supported encrypter found的办法
Jun 07 PHP
PHP生成随机数的方法总结
Mar 01 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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
js分页工具实例
2015/01/28 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
python实现的udp协议Server和Client代码实例
2014/06/04 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
django创建超级用户过程解析
2019/09/18 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
python音频处理的示例详解
2020/12/23 Python
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
社团招新策划书
2014/02/04 职场文书
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
财产公证书格式
2014/04/10 职场文书
捐助倡议书范文
2014/04/15 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis
Python 视频画质增强
2022/04/28 Python