天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP實現(xiàn)克魯斯卡爾算法實例解析

本文實例展示了php實現(xiàn)的格魯斯卡爾算法(kruscal)的實現(xiàn)方法,分享給大家供大家參考。相信對于大家的php程序設(shè)計有一定的借鑒價值。

具體代碼如下:

<?phprequire 'edge.php';$a = array(  'a',  'b',  'c',  'd',  'e',  'f',  'g',  'h',  'i');$b = array(  'ab' => '10',  'af' => '11',  'gb' => '16',  'fg' => '17',  'bc' => '18',  'bi' => '12',  'ci' => '8',  'cd' => '22',  'di' => '21',  'dg' => '24',  'gh' => '19',  'dh' => '16',  'de' => '20',  'eh' => '7',  'fe' => '26');$test = new Edge($a, $b);print_r($test->kruscal());?>

edge.php文件代碼如下:

<?php//邊集數(shù)組的邊類class EdgeArc {  private $begin; //起始點  private $end; //結(jié)束點  private $weight; //權(quán)值  public function EdgeArc($begin, $end, $weight) {    $this->begin = $begin;    $this->end = $end;    $this->weight = $weight;  }  public function getBegin() {    return $this->begin;  }  public function getEnd() {    return $this->end;  }  public function getWeight() {    return $this->weight;  }}class Edge {  //邊集數(shù)組實現(xiàn)圖  private $vexs; //頂點集合  private $arc; //邊集合  private $arcData; //要構(gòu)建圖的邊信息  private $krus; //kruscal算法時存放森林信息  public function Edge($vexsData, $arcData) {    $this->vexs = $vexsData;    $this->arcData = $arcData;    $this->createArc();  }  //創(chuàng)建邊  private function createArc() {    foreach ($this->arcData as $key => $value) {      $key = str_split($key);      $this->arc[] = new EdgeArc($key[0], $key[1], $value);    }  }  //對邊數(shù)組按權(quán)值排序  public function sortArc() {    $this->quicklySort(0, count($this->arc) - 1, $this->arc);    return $this->arc;  }  //采用快排  private function quicklySort($begin, $end, &$item) {    if ($begin < 0($begin >= $end)) return;    $key = $this->excuteSort($begin, $end, $item);    $this->quicklySort(0, $key - 1, $item);    $this->quicklySort($key + 1, $end, $item);  }  private function excuteSort($begin, $end, &$item) {    $key = $item[$begin];    $left = array();    $right = array();    for ($i = ($begin + 1); $i <= $end; $i++) {      if ($item[$i]->getWeight() <= $key->getWeight()) {        $left[] = $item[$i];      } else {        $right[] = $item[$i];      }    }    $return = $this->unio($left, $right, $key);    $k = 0;    for ($i = $begin; $i <= $end; $i++) {      $item[$i] = $return[$k];      $k++;    }    return $begin + count($left);  }  private function unio($left, $right, $key) {    return array_merge($left, array(      $key    ) , $right);  }  //kruscal算法  public function kruscal() {    $this->krus = array();    $this->sortArc();    foreach ($this->vexs as $value) {      $this->krus[$value] = "0";    }    foreach ($this->arc as $key => $value) {      $begin = $this->findRoot($value->getBegin());      $end = $this->findRoot($value->getEnd());      if ($begin != $end) {        $this->krus[$begin] = $end;        echo $value->getBegin() . "-" . $value->getEnd() . ":" . $value->getWeight() . "/n";      }    }  }  //查找子樹的尾結(jié)點  private function findRoot($node) {    while ($this->krus[$node] != "0") {      $node = $this->krus[$node];    }    return $node;  }}?> 

感興趣的讀者可以調(diào)試運行一下本文克魯斯卡爾算法實例,相信會有新的收獲。

php技術(shù)PHP實現(xiàn)克魯斯卡爾算法實例解析,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产成人在线视频观看 | 乱码AV午夜噜噜噜噜 | 国产精品玖玖玖影院 | A片毛片免费视频在线看 | 亚洲AV天堂无码麻豆电影 | 桥本有菜护士 | 国产真实女人一级毛片 | 我就去色色| 一二三四视频免费社区5 | 秋霞伦理电影在2017韩国在线伦 | 好爽胸大好深好多水 | 色欲AV精品一区二区入口 | 无套内谢大学生A片 | 亚洲AV无码乱码国产麻豆P | 重口味av| 第四色播日韩AV第一页 | 久久综久久美利坚合众国 | 囯产精品麻豆巨作久久 | 第一会所欧美无码原创 | 宝贝好紧好爽再搔一点试視頻 | 久久热这里面只有精品 | 成人在线免费视频观看 | 国产伦精品一区二区三区免费 | 99热国产这里只有精品6 | 欲奴第一季在线观看全集 | 欧美性爱-第1页 | 韩国精品韩国专区久久 | 久久久综合中文字幕久久 | 交换邻居波多野结衣中文字幕 | 各种肉黄浪荡故事集 | 美女爱爱网站 | 成人a视频片在线观看免费 成人a毛片久久免费播放 | 超碰97人人做人人爱少妇 | 国产精品久久久久久人妻香蕉 | 99久久久国产精品免费蜜臀 | 啊灬啊灬啊灬快灬深高潮啦 | 夜色福利院在线观看免费 | 欧美一级久久久久久久久大 | 色橹橹欧美在线观看视频高清 | 二色AV天堂在线 | 伊人久久大香线蕉观看 |