加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP贪婪算法解决0-1背包问题实例分析

发布时间:2020-12-13 02:30:51 所属栏目:PHP教程 来源:网络整理
导读:《:PHP贪婪算法解决0-1背包问题实例分析》要点: 本文介绍了:PHP贪婪算法解决0-1背包问题实例分析,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解PHP贪婪算法解决0-1背包问题的方法.供大家参考研究.具体分析如下: PHP实战 贪心算法解决

《:PHP贪婪算法解决0-1背包问题实例分析》要点:
本文介绍了:PHP贪婪算法解决0-1背包问题实例分析,希望对您有用。如果有疑问,可以联系我们。

本篇章节讲解PHP贪婪算法解决0-1背包问题的方法.分享给大家供大家参考.具体分析如下:PHP实战

贪心算法解决0-1背包问题,全局最优解通过局部最优解来获得!比动态规划解决背包问题更灵活!PHP实战

//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贪婪算法解决0-1背包问题实例分析》是否对您有启发,欢迎查看更多与《:PHP贪婪算法解决0-1背包问题实例分析》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读