Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php实现PageRank的实例

php实现PageRank的实例

不言
不言asal
2018-07-05 16:24:021559semak imbas

这篇文章主要介绍了关于php实现PageRank的实例,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

php简单实现PageRank算法

使用的web site模型

<?php
header("Content-type:text/html; charset=utf-8");
class PageRank{
    public $map = [];    
    public $rank = [];    
    public $inputList = []; // example web &#39;a&#39; (has input link): web &#39;b&#39;

    public $size;    
    public $keyValue = 0.85;    
    public function __construct(array $map) {
        $this->map = $map;        
        $this->size = count($this->map);
    }    //init rank score and transform &#39;map&#39; format to &#39;inputList&#39; format
    public function init()
    {
        $size = $this->size;        
        foreach ($this->map as $key => $value) {            
        $this->inputList[$key] = [];
        }        foreach ($this->map as $key => $value) {            
        $this->rank[$key] = 1/$size;            
        foreach ($value as $v) {                
        if (empty($this->inputList[$v])) {                    
        $this->inputList[$v][] = $key;
                } else {
                    array_push($this->inputList[$v], $key);
                }
            }

        }
    }    public function caculate()
    {
        $tmp = $this->rank;        
        $keyValue = $this->keyValue;        
        $size = $this->size;        
        foreach ($this->inputList as $key => $value) {            
        $score = (1 - $keyValue)/$size;            
        foreach ($value as $v) {                
        $cc = count($this->map[$v]);                
        if ($cc) {                    
        $score += ($keyValue*(1/$cc * $this->rank[$v]));
                }
            }            $tmp[$key] = $score;
        }        $this->rank = $tmp;
    }


}$map = [        &#39;a&#39; => [&#39;b&#39;, &#39;c&#39;, &#39;d&#39;],// web &#39;a&#39; (has out link): web &#39;b&#39;, web &#39;c&#39;, web &#39;d&#39;
        &#39;b&#39; => [&#39;a&#39;, &#39;d&#39;],        &#39;c&#39; => [&#39;b&#39;],        &#39;d&#39; => [&#39;b&#39;, &#39;c&#39;],
];$example = new PageRank($map);
$example->init();
echo &#39;<pre class="brush:php;toolbar:false">&#39;;for ($i = 0; $i < 10; $i++) {    
$example->caculate();
    var_dump($example->rank);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

php 通过html-table形式完成excel下载的功能实现

php身份证识别ORC的方法实现

Atas ialah kandungan terperinci php实现PageRank的实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:php身份证识别ORC的方法实现Artikel seterusnya:php文件操作的方法