Heim  >  Artikel  >  Backend-Entwicklung  >  Das Prinzip und die Verwendung des PHP-Greedy-Algorithmus

Das Prinzip und die Verwendung des PHP-Greedy-Algorithmus

墨辰丷
墨辰丷Original
2018-06-12 10:41:471818Durchsuche

In diesem Artikel wird hauptsächlich der PHP-Greed-Algorithmus zur Lösung des 0-1-Rucksackproblems vorgestellt. Er analysiert die Prinzipien des Greedy-Algorithmus und die Implementierungsfähigkeiten des Rucksackproblems anhand von Beispielen.

Dieser Artikel beschreibt Beispiele für den PHP-Greedy-Algorithmus, der das 0-1-Rucksackproblem löst. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Der gierige Algorithmus löst das 0-1-Rucksackproblem und erhält die globale optimale Lösung durch die lokale optimale Lösung! Flexibler als dynamische Programmierung zur Lösung des Rucksackproblems!

//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,&#39; &#39;,$val->price;
    echo &#39;<br>&#39;;
  }
}
//按照价格和重量比排序
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 &#39;0-1背包最优解为:&#39;;
echo tanxin($x);

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

Wie man Dateien mit der rekursiven PHP-Funktion durchläuft und löscht

So subtrahiert man zwei Arrays in PHP

PHP-Methode zur Berechnung des genauen Osterdatums

Das obige ist der detaillierte Inhalt vonDas Prinzip und die Verwendung des PHP-Greedy-Algorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn