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中的foreach问题
Jun 30 PHP
使用php实现截取指定长度
Aug 06 PHP
CMS中PHP判断系统是否已经安装的方法示例
Jul 26 PHP
php提取字符串中网站url地址的方法
Dec 03 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
PHP Hash算法:Times33算法代码实例
May 13 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
php array_keys 返回数组的键名
Oct 25 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
PHP接入支付宝接口失效流程详解
Nov 10 PHP
PHP基于ip2long实现IP转换整形
Dec 11 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
15 个 JavaScript Web UI 库
2010/05/19 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
python线程池的实现实例
2013/11/18 Python
python计算牛顿迭代多项式实例分析
2015/05/07 Python
python实现数组插入新元素的方法
2015/05/22 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
使用Python发现隐藏的wifi
2020/03/04 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
外企测试工程师面试题
2015/02/01 面试题
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
公务员职业生涯规划书范文  
2014/01/19 职场文书
班主任个人工作反思
2014/04/28 职场文书
初中学校军训方案
2014/05/09 职场文书
家具商场的活动方案
2014/08/16 职场文书
机票销售员态度不好检讨书
2014/09/27 职场文书
新党章的学习心得体会
2014/11/07 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
中国合伙人观后感
2015/06/02 职场文书
人代会简报
2015/07/21 职场文书