《PHP应用:PHP贪婪算法解决0-1背包问题实例分析》要点:
本文介绍了PHP应用: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应用:PHP贪婪算法解决0-1背包问题实例分析》是否对您有启发,欢迎查看更多与《PHP应用:PHP贪婪算法解决0-1背包问题实例分析》相关教程,学精学透。维易PHP学院为您提供精彩教程。