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函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
php从完整文件路径中分离文件目录和文件名的方法
Mar 13 PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 PHP
PHP CURL 多线程操作代码实例
May 13 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
Mar 17 PHP
php中mkdir()函数的权限问题分析
Sep 24 PHP
ThinkPHP的SAE开发相关注意事项详解
Oct 09 PHP
php格式化时间戳
Dec 17 PHP
php实现的双色球算法示例
Jun 20 PHP
php微信开发之图片回复功能
Jun 14 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 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实现小型站点广告管理
2006/10/09 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
laravel model 两表联查示例
2019/10/24 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
jquery+css实现下拉列表功能
2017/09/03 jQuery
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python中使用SAX解析xml实例
2014/11/21 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
python如何定义带参数的装饰器
2018/03/20 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
pytorch: Parameter 的数据结构实例
2019/12/31 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
中国入世承诺
2014/04/01 职场文书
感恩寄语大全
2014/04/11 职场文书
劳动竞赛口号
2014/06/16 职场文书
学党史心得体会
2014/09/05 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
python标准库ElementTree处理xml
2022/05/20 Python
python数字图像处理:图像的绘制
2022/06/28 Python