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…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
