PageRank算法
一.定义-迭代算法
输入:含有 n n n个结点的有向图,转移矩阵 M M M,阻尼因子 d d d,初始向量 R 0 R_0 R0,计算精度 ϵ \epsilon ϵ
输出:有向图的PageRank向量 R R R
(1)令 t = 0 t=0 t=0
(2)计算
R t + 1 = d M R t + 1 − d n 1 R_{t+1} = dMR_t + \frac{ 1 - d }{ n} 1 Rt+1=dMRt+n1−d1
(3)如果 R t + 1 R_{t+1} Rt+1与 R t R_t Rt充分接近,令 R = R t + 1 R = R_{t+1} R=Rt+1,停止迭代。
(4)否则,令 t = t + 1 , 执行步骤 ( 2 ) t=t+1,执行步骤(2) t=t+1,执行步骤(2)
输入空间
n n n
M = ∣ 1 1 ⋯ 1 n ⋮ ⋮ ⋮ n 1 ⋯ n n ∣ M = \left| \begin{array}{cccc} 1_1 & \cdots & 1_n \\ \vdots & \vdots & \vdots\\ n_1 & \cdots & n_n \end{array} \right| M= 11⋮n1⋯⋮⋯1n⋮nn
d d d
R 0 = ∣ 1 1 ⋮ n 1 ∣ R_0 = \left| \begin{array}{cccc} 1_1 \\ \vdots \\ n_1 \end{array} \right| R0= 11⋮n1
ϵ \epsilon ϵ
import numpy as np
n = 7 #有向图中一共有7个节点
M = np.array([[0, 1/4, 1/3, 0, 0, 1/2, 0],[1/4, 0, 0, 1/5, 0, 0, 0],[0, 1/4, 0, 1/5, 1/4, 0, 0],[0, 0, 1/3, 0, 1/4, 0, 0],[1/4, 0, 0, 1/5, 0, 0, 0],[1/4, 1/4, 0, 1/5, 1/4, 0, 0],[1/4, 1/4, 1/3, 1/5, 1/4, 1/2, 0]]) #根据有向图中各节点的连接情况写出转移矩阵
d = 0.85 #阻尼因子根据经验值确定,这里我们随意给一个值
R0 = np.full((7, 1), 1/7) #设置初始向量R0,R0是一个7*1的列向量,因为有7个节点,我们把R0的每一个值都设为1/7
eps = 0.000001 #设置计算精度
np.shape(M)
np.shape(R0)
PageRank的迭代算法
R t + 1 = d M R t + 1 − d n 1 R_{t+1} = dMR_t + \frac{ 1 - d }{ n} 1 Rt+1=dMRt+n1−d1
t = 0 #用来累计迭代次数
R = R0
judge = False #用来判断是否继续迭代
while not judge:next_R = d * np.matmul(M, R) + (1 - d) / n * np.ones((7, 1))diff = np.linalg.norm(R - next_R)if diff < eps:judge = TrueR = next_Rt += 1
R = R / np.sum(R)
print('iter:', t)
print('PageRank: \n', R)
二.定义-幂法算法
输入:含有 n n n个结点的有向图,有向图的转移矩阵 M M M,系数 d d d,初始向量 x 0 x_0 x0,计算精度 ϵ \epsilon ϵ
输出:有向图的PageRank向量 R R R
(1)令 t = 0 , 选择初始向量 x 0 t=0,选择初始向量x_0 t=0,选择初始向量x0
(2)计算有向图的一般转移矩阵A
A = d M + 1 − d n E A = dM + \frac{ 1 - d }{ n} E A=dM+n1−dE
(3)迭代并规范化结果向量
y t + 1 = A x t y_{t+1} = A_{xt} yt+1=Axt
x t + 1 = y t + 1 ∣ ∣ y t + 1 ∣ ∣ x_{t+1} = \frac{ y_{t+1} }{ ||y_{t+1}||} xt+1=∣∣yt+1∣∣yt+1
(4) 当 ∣ ∣ x t + 1 − x t ∣ ∣ < ϵ 时 , 令 R = x t , 停止迭代 当||x_{t+1}-x_t|| < \epsilon时,令R = x_t,停止迭代 当∣∣xt+1−xt∣∣<ϵ时,令R=xt,停止迭代
(5)否则,令 t = t + 1 , 执行步骤 ( 3 ) t = t+1,执行步骤(3) t=t+1,执行步骤(3)
(6)对 R R R进行规范化处理,使其表示概率分布。
输入空间
n n n
M = ∣ 1 1 ⋯ 1 n ⋮ ⋮ ⋮ n 1 ⋯ n n ∣ M = \left| \begin{array}{cccc} 1_1 & \cdots & 1_n \\ \vdots & \vdots & \vdots\\ n_1 & \cdots & n_n \end{array} \right| M= 11⋮n1⋯⋮⋯1n⋮nn
d d d
x 0 = ∣ 1 1 ⋮ n 1 ∣ x_0 = \left| \begin{array}{cccc} 1_1 \\ \vdots \\ n_1 \end{array} \right| x0= 11⋮n1
ϵ \epsilon ϵ
n = 7 #有向图中一共有7个节点
M = np.array([[0, 1/4, 1/3, 0, 0, 1/2, 0],[1/4, 0, 0, 1/5, 0, 0, 0],[0, 1/4, 0, 1/5, 1/4, 0, 0],[0, 0, 1/3, 0, 1/4, 0, 0],[1/4, 0, 0, 1/5, 0, 0, 0],[1/4, 1/4, 0, 1/5, 1/4, 0, 0],[1/4, 1/4, 1/3, 1/5, 1/4, 1/2, 0]]) #根据有向图中各节点的连接情况写出转移矩阵
d = 0.85 #阻尼因子根据经验值确定,这里我们随意给一个值
x_0 = np.full((7, 1), 1/7) #对x向量进行初始化
eps = 0.000001 #设置计算精度
np.shape(M)
np.shape(x_0)
PageRank的幂法算法
A = d M + 1 − d n E A = dM + \frac{ 1 - d }{ n} E A=dM+n1−dE
y t + 1 = A x t y_{t+1} = A_{xt} yt+1=Axt
x t + 1 = y t + 1 ∣ ∣ y t + 1 ∣ ∣ x_{t+1} = \frac{ y_{t+1} }{ ||y_{t+1}||} xt+1=∣∣yt+1∣∣yt+1
t = 0 #用来累计迭代次数
judge = False #用来判断是否继续迭代
A = d * M + (1 - d) / n * np.eye(n) #计算A矩阵,其中np.eye(n)用来创建n阶单位阵E
while not judge:next_y = np.matmul(A, x_0) #计算新的y向量next_x = next_y / np.linalg.norm(next_y) #对新的y向量规范化得到新的x向量diff = np.linalg.norm(x_0 - next_x) #计算新的x向量与之前的x向量之间的距离,这里采用的是欧氏距离if diff < eps: #若两向量之间的距离足够小judge = True #则停止迭代R = x_0 #得到R向量x_0 = next_x #更新x向量t += 1 #迭代次数加一
R = R / np.sum(R) #对R向量进行规范化,保证其总和为1,表示各节点的概率分布
print('iter:', t)
print('PageRank: \n', R)
相关文章:
PageRank算法
一.定义-迭代算法 输入:含有 n n n个结点的有向图,转移矩阵 M M M,阻尼因子 d d d,初始向量 R 0 R_0 R0,计算精度 ϵ \epsilon ϵ 输出:有向图的PageRank向量 R R R (1)令 t 0 t0 t0 (2)计算 R t 1 d M R t 1 − d n 1 R_{t1} dMR_t \frac{ 1 - d }{ n} 1 Rt1dMRt…...
YOLOv8改进 | 模块缝合 | C2f 融合Self-Calibrated Convolutions丰富特征图【CVPR2020】
秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…...
跨境反向代购淘宝京东商品系统的商品价格详情等数据如何轻松自动化获取?
在跨境电商领域,反向代购系统逐渐成为连接国内外市场的重要桥梁。随着技术的不断发展和市场的日益成熟,如何高效、准确地自动化获取淘宝、京东等电商平台的商品价格、详情等数据,成为跨境反向代购系统开发者必须面对的重要课题。本文将详细介…...
初始爬虫5
响应码: 数据处理: re模块(正则表达式) re模块是Python中用于正则表达式操作的标准库。它提供了一些功能强大的方法来执行模式匹配和文本处理。以下是re模块的一些常见用法及其详细说明: 1. 基本用法 1.1 匹配模式 …...
深度盘点:2024年企业最喜欢用的WMS仓库管理系统有哪些?
本文将列举国内外知名的仓库管理系统,从每个系统的适用范围、核心功能、特点来为大家解读。为企业选型提供参考! WMS系统是Warehouse Management System(仓库管理系统)的简称,它是一个帮助企业和仓库管理者高效管理仓库…...
qt如何通过特定字符将字符串拆分写入输入?
在Qt中,处理字符串并基于特定字符拆分字符串然后将其写入(比如输入控件、文件等)是一项常见的任务。Qt提供了丰富的字符串处理功能,其中最常用的类是QString。以下是一个简单的示例,展示如何使用Qt和QString类基于特定…...
结构体实现位段
目录 1.什么是位段 2.位段的计算 3. 位段的内存分配 4.位段的跨平台问题 5.位段的应⽤ 6.位段使⽤的注意事项 1.什么是位段 段位的声明和结构体是类似的,但有两个不同之处: 1. 位段的成员必须是 int ,unsigned int,或 sign…...
刷题DAY35
判断回文数 题目:MM们都爱美,“回文”就是一种非常美的特殊的数或者文字短语,他们无论是顺读还是倒读,结果都一样。例如:12321, 55555,45554。如果GG们动不动来一段回文向MM们表达一下…...
LVS--负载均衡调度器
文章目录 集群和分布式集群分布式 LVS介绍LVS特点LVS工作原理LVS集群架构 LVS集群中的术语CIPVIPRSDIPRIP LVS集群的工作模式NAT模式DR模式DR的工作原理DR的特点:DR的网络配置1.配置负载均衡器2.配置后端服务器lo接口的作用 3.测试连接: DR的典型应用场景 TUN模式 L…...
windows@共享网络共享打印机@局域网内远程调用打印机打印
文章目录 abstract流程简述预备工作启动服务🎈启用网络发现和共享开关检查共享密码保护(可选) 相关概念通过GUI设置局域网共享打印机使用开始菜单直接跳转到打印机设置逐步操作 命令行配置方式使用net命令共享打印机使用powershell相关模块配置 使用PowerShell 配置…...
sql格式化工具
1.在线格式化工具:https://www.qianbo.com.cn/Tool/Beautify/Sql-Formatter.html 2. 格式化后用拼接 string sql " SELECT rack.rackRow,rack.rackColumn,rack.rackLayer FROM rack LEFT JOIN TaskListON rack.rackColumn TaskList.Unload_ColAND rack.rackRow TaskL…...
[Python办公]常用Python数据采集爬虫技术对比
常用的数据采集技术可以分为以下几种: 1.网页抓取(Web Scraping) 网页抓取是通过模拟浏览器行为或直接发送请求来获取网页内容的技术。其核心目标是从 HTML 网页中提取有价值的数据。 常用工具:requests、BeautifulSoup、Selen…...
相机光学(三十七)——自动对焦原理
1.自动对焦的三种方式 目前在手机上采用的自动对焦系统包括反差对焦、相位对焦和激光对焦三种方案,下面我们来看一下它们的工作原理和相互之间的区别是什么。 1.1反差对焦【CDAF】- Contrast Detection Auto Focus 反差对焦是目前普及率最高、使用最广泛、成本相对…...
Go语言现代web开发05 指针和结构体
指针 Pointers are complex data types that store the memory address of value. Simply put, if we have a value stored in the memory address as 100 and a pointer to that value, the pointer value will be 100. The default value for a pointer is nil. Nil pointer…...
Postgresql 删除数组中的元素
extra为 {“a”: [null, 3, null],“b”: 111} 使用sql 将extra中a中的null移除 第一步: 首先先把[null, 3, null]移除, select json_agg(elem) filter ( where elem ! null ) from (select jsonb_array_elements([null,3,null]::jsonb) as elem) t;这…...
docker 多服务只暴露一个客户端
业务场景 docker部署多个服务时候,当为了安全考虑 部署了多个服务,数据库,缓存库,文件服务器啥的,如果全都暴露的话可能会增加资源侵入的风险,所以只需要挂载一个客户端端口给外部访问即可,其他服务均在内网,保障资源安全 docker 网络 可以把容器们都放在同一网络下,由于docke…...
DFS算法专题(二)——穷举vs暴搜vs深搜vs回溯vs剪枝【OF决策树】
目录 1、决策树 2、算法实战应用【leetcode】 2.1 题一:全排列 2.2.1 算法原理 2.2.2 算法代码 2.2 题二:子集 2.2.1 算法原理【策略一】 2.2.2 算法代码【策略一】 2.2.3 算法原理【策略二,推荐】 2.2.4 算法代码【策略二&#x…...
Spring Security 快速开始
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency> 一、认证 1、从数据中读数据完成认证 Service public class MyUserDetailsService implements UserDeta…...
Lua5.3 参考手册
《Lua 5.3 参考手册》是对 Lua 5.3 版本语言的官方定义。这份手册详细描述了 Lua 语言的语法、语义以及标准库和 C API。它是由巴西里约热内卢 Pontifical Catholic 大学的 PUC-Rio 团队开发的,并且是一个自由软件,广泛应用于世界各地的产品和项目中【9†…...
Centos如何配置阿里云的yum仓库作为yum源?
背景 Centos在国内访问官方yum源慢,可以用国内的yum源,本文以阿里云yum源为例说明。 快速命令 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.a…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
