这篇文章主要介绍了关于php实现PageRank的实例,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
php简单实现pagerank算法
<?php
header("Content-type:text/html; charset=utf-8");
class PageRank{
public $map = [];
public $rank = [];
public $inputList = []; // example web 'a' (has input link): web 'b'
public $size;
public $keyValue = 0.85;
public function __construct(array $map) {
$this->map = $map;
$this->size = count($this->map);
} //init rank score and transform 'map' format to 'inputList' 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 = [ 'a' => ['b', 'c', 'd'],// web 'a' (has out link): web 'b', web 'c', web 'd'
'b' => ['a', 'd'], 'c' => ['b'], 'd' => ['b', 'c'],
];$example = new PageRank($map);
$example->init();
echo '<pre>';for ($i = 0; $i < 10; $i++) {
$example->caculate();
var_dump($example->rank);
}以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
php 通过html-table形式完成excel下载的功能实现
立即学习“PHP免费学习笔记(深入)”;
以上就是php实现PageRank的实例的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号