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

内容摘要
这篇文章主要为大家详细介绍了PHP 贪婪算法解决0-1背包问题入门实例,具有一定的参考价值,可以用来参考一下。

对PHP贪婪算法解决0-1背包问题代码对此感兴趣的朋友,看看idc笔记
文章正文

这篇文章主要为大家详细介绍了PHP 贪婪算法解决0-1背包问题入门实例,具有一定的参考价值,可以用来参考一下。

对PHP贪婪算法解决0-1背包问题代码对此感兴趣的朋友,看看idc笔记做的技术笔记!贪心算法解决0-1背包问题,全局最优解通过局部最优解来获得!比动态规划解决背包问题更灵活!

/**
 * PHP贪婪算法解决0-1背包问题代码
 *
 * @param 
 * @arrange 512-笔记网: 512pic.com
 **/
//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教程(www.idcnote.com)   ***/

注:关于PHP 贪婪算法解决0-1背包问题入门实例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!