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通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
php常用图片处理类
Mar 16 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
Dec 29 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
详解php中的implements 使用
Jun 13 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
php 解析非标准json、非规范json
Apr 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
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
js设置文字颜色的方法示例
2016/12/30 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
django 中QuerySet特性功能详解
2019/07/25 Python
python批量修改ssh密码的实现
2019/08/08 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
经理秘书岗位职责
2013/11/14 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
《桥》教学反思
2014/04/09 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
关于运动会的广播稿
2014/09/22 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
spring boot中nativeQuery的用法
2021/07/26 Java/Android
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python