PageRank算法c++实现
首先用邻接矩阵A表示从页面j到页面i的概率,然后根据公式生成转移概率矩阵
M=(1-d)*Q+d*A 常量矩阵Q=(qi,j),qi,j=1/n
给定点击概率d,等级值初始向量R0,迭代终止条件e;
计算Ri+1=M*Ri;
ei=|Ri+1-Ri|,当ei<=e时输出Ri+1作为最终等级值向量。
#include "fstream"
#include "sstream"
#include <iostream>
#include <set>
#include <vector>using namespace std;int getNum()
{set<int> N;ifstream is("a.txt");int u, v;while (is >> u >> v){N.insert(u);N.insert(v);}return N.size();
}void getPage(vector<vector<int>>& page) //&
{ifstream is("a.txt");int u, v;while(is>>u>>v){ page[u].push_back(v);}
}void PageRank(vector<vector<int>>&page,int N,double d,double e,int maxIterations)
{//得到Mvector<vector<double>> M(N,vector<double>(N,0.0));for (int i = 0; i < N; i++){if (page[i].size() > 0){for (int j : page[i]){M[j][i]++; //0/1}for (int j=0;j<N;j++){M[j][i] /= page[i].size();}}else{for (int j : page[i]){M[j][i] = 0;}}}for (int i = 0; i < N; i++){for (int j = 0; j < N; j++){//cout << M[i][j]<<" "; //正确M[i][j] = d * M[i][j] + (1 - d) * (1.0 / N);//cout << M[i][j] << " ";}}vector<double> pagerank(N, 1.0);while (maxIterations){vector<double> newpagerank(N, 0.0);double dif=0.0;for (int i = 0; i < N; i++){for (int j = 0; j < N; j++){newpagerank[i] += M[i][j] * pagerank[j];}dif+= abs(pagerank[i]-newpagerank[i]);}//cout << dif << endl;pagerank = newpagerank;if (dif < e){//cout << maxIterations<<endl;break;}maxIterations--;}cout << "等级值分别为:" << endl;for (int i = 0; i < N; i++){cout << pagerank[i]<<endl;}
}int main()
{int num = getNum();vector<vector<int>> page(num);getPage(page);double d = 0.85;double e = 0.1;int maxIterations = 100;PageRank(page, num, d, e, maxIterations);}
数据
0 1
0 2
0 3
1 0
1 2
2 3
3 0
3 1
结果

相关文章:
PageRank算法c++实现
首先用邻接矩阵A表示从页面j到页面i的概率,然后根据公式生成转移概率矩阵 M(1-d)*Qd*A 常量矩阵Q(qi,j),qi,j1/n 给定点击概率d,等级值初始向量R0,迭代终止条件e; 计算Ri1M*R…...
超低价:阿里云双11服务器优惠价格表_87元一年起
2023阿里云双十一优惠活动已经开启了,轻量2核2G服务器3M带宽优惠价87元一年、2核4G4M带宽优惠价165元一年,云服务器ECS经济型e实例2核2G3M固定带宽优惠价格99元一年,还有2核4G、2核8G、4核8G、4核16G、8核32G等配置报价,云服务器e…...
docker的安装Centos8
在CentOS 7中,可以使用yum安装Docker。Docker官方提供了一个yum源,可以用于安装Docker。以下是安装Docker的步骤: 卸载旧版本的Docker(如果有) 如果你之前安装过Docker,需要先卸载旧版本的Docker。执行以…...
Android.mk文件制定了链接库,但是出现ld Error
问题描述 Android.mk文件中,指定了库: LOCAL_LDLIBS : -lmylib LOCAL_LDFLAGS -L$(MYLIB_DIR)/lib出现ld: error: undefined symbol: my_function,于是查看so里面是否有my_function函数: nm -D libmylib.so | grep my_functio…...
10.MySQL事务(上)
个人主页:Lei宝啊 愿所有美好如期而遇 目录 前言: 是什么? 为什么? 怎么做? 前言: 本篇文章将会说明什么是事务,为什么会出现事务?事务是怎么做的? 是什么? 我…...
nexus搭建npm私有镜像
假设有一个nexus服务,地址为: http://10.10.33.50:8081/ 创建存储空间 登录后创建存储空间,选择存储类型为File,并设置空间名称为 npm-private 创建仓库类型 2.1 创建hosted类型仓库 创建一个名为 npm-hosted 的本地类型仓库 2.…...
智能化的宠物喂食器解决方案
随着经济条件的不断改善,越来越多的家庭开始追求生活的便捷享受,于是喂食器开始走进千家万户,喂食器主要由储存食物的蓄食箱和传送食物的滑道构成,在外部框架的支撑下,一台喂食器才能正常进行工作,而宠物喂…...
java配置GDAL
<gdal.version>3.7.0</gdal.version><!-- gdal--><dependency><groupId>org.gdal</groupId><artifactId>gdal</artifactId><version>${gdal.version}</version></dependency> GDAL环境安装 downlo…...
采购对接门禁系统采购进厂 空车出厂
本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:山JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文…...
服务器经常被攻击的原因
很多中小型企业都是选择虚拟主机服务器,是把一个服务器分成很多个给很多企业一起共用,可能同一个 IP服务器上就有很多个不同企业的网站,这个时候如果跟你同一个IP服务器的网站遭到DDoS攻击,就很有可能会影响到你的网站也无法正常访…...
子女购买房屋,父母出资的如果父母有关借贷的举证不充分则应认定该出资为赠与行为
现实生活中,由于父母与子女不和、子女离婚时父母为保全自己的出资等原因还经常会出现父母请求返还出资的情形。从司法实践反馈情况来看,父母请求返还出资所主张的基础法律关系往往为借贷而非赠与。基干父母子女之间密切的人身财产关系,父母出…...
【腾讯云HAI域探秘】速通腾讯云HAI
速览HAI 产品简介 腾讯云高性能应用服务(Hyper Application lnventor,HA),是一款面向 Al、科学计算的 GPU 应用服务产品,为开发者量身打造的澎湃算力平台。无需复杂配置,便可享受即开即用的GPU云服务体验。在 HA] 中,…...
R语言爬虫代码模版:技术原理与实践应用
目录 一、爬虫技术原理 二、R语言爬虫代码模板 三、实践应用与拓展 四、注意事项 总结 随着互联网的发展,网络爬虫已经成为获取网络数据的重要手段。R语言作为一门强大的数据分析工具,结合爬虫技术,可以让我们轻松地获取并分析网络数据。…...
行业观察:数字化企业需要什么样的数据中心
伴随着数字经济在中国乃至全球的高速发展,数字化转型已经成为广大企业的必经之路。而作为数字经济的核心基础设施,数据中心充当了接收、处理、存储与转发数据流的“中枢大脑”,对驱动数字经济发展和企业数字化转型起到了极为关键的重要作用。…...
PHP依赖注入 与 控制反转详解
依赖注入 是一种设计模式,用于解耦组件之间的依赖关系。 它的主要思想是通过将依赖的对象传递给调用方,而不是由调用方自己创建或管理依赖的对象。这种方式使得组件的依赖关系更加灵活,易于维护和测试。 控制反转 是一个更广泛的概念&#…...
算法:Java构建二叉树并迭代实现二叉树的前序、中序、后序遍历
先自定义一下二叉树的类: // Definition for a binary tree node. public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left…...
大数据毕业设计选题推荐-旅游景点游客数据分析-Hadoop-Spark-Hive
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...
单片机,0.06
...
[PyTorch][chapter 59][强化学习-2-有模型学习]
前言: 在已知模型的环境里面学习,称为有模型学习(model-based learning). 此刻,下列参数是已知的: : 在状态x 下面,执行动作a ,转移到状态 的概率 : 在状态x 下面,执行动作a ,转移到 的奖赏 有模型强化学习的应用案例 …...
【接口测试】HTTP接口详细验证清单
概述 当我们在构建、测试、发布一套新的HTTP API时,包括我在内的大多数人都不知道他们所构建的每一个组件的复杂性和细微差别。 即使你对每一个组件都有深刻的理解,也可能会有太多的信息在你的脑海中出现。 以至于我们不可能一下把所有的信息进行梳理…...
5个技巧快速掌握猫抓插件:免费高效的浏览器资源下载终极指南
5个技巧快速掌握猫抓插件:免费高效的浏览器资源下载终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今数字内容爆炸的时代…...
用Python和罗技驱动DLL实现《穿越火线》红名自动检测与开枪(保姆级避坑指南)
Python游戏自动化开发实战:基于颜色识别的智能交互系统设计 在数字娱乐领域,自动化技术正悄然改变着用户的交互体验。本文将深入探讨如何利用Python构建一套安全、高效的屏幕元素识别与自动化交互系统,重点解析颜色识别算法的核心实现与硬件接…...
图像采集卡与相机内置采集:架构差异、性能对比与选型指南
1. 项目概述:从“外挂”到“内置”的采集路径之争在视觉系统集成或工业检测项目里,选型阶段总会遇到一个基础但关键的问题:图像采集卡和相机内置的采集功能,到底该用哪个?这可不是一个简单的“哪个更好”的问题&#x…...
RK3562核心板选型与开发实战:从硬件拆解到软件适配
1. 项目概述:为什么是PET_RK3562_CORE? 在嵌入式开发领域,尤其是智能硬件和物联网设备的设计中,核心板的选择往往是决定项目成败、成本控制和技术路线的关键一步。最近几年,基于ARM架构的国产化芯片方案异军突起&#…...
性能优化必看:你的Unity粒子特效为什么这么卡?从ParticleSystem参数入手排查
Unity粒子特效性能优化实战指南:从参数调优到帧率提升 1. 粒子特效性能问题的根源剖析 在移动端和VR项目中,粒子特效往往是性能瓶颈的重灾区。一次性能审计中,某款手游的瀑布场景因未限制粒子最大数量,导致中端机型帧率骤降至18fp…...
为初创团队构建AI应用时如何利用Taotoken控制初期成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为初创团队构建AI应用时如何利用Taotoken控制初期成本 对于资源有限的初创团队而言,在开发AI功能原型时,最…...
别再自己造轮子了!用BouncyCastle库在C#里快速搞定SM4国密加解密
用BouncyCastle在C#中高效实现SM4国密算法 金融级数据安全已成为现代企业系统的刚需,而国密算法作为我国自主研发的密码体系核心,正在政务、金融等高安全要求场景中快速普及。SM4作为国密标准中的对称加密算法,其128位分组长度和32轮非线性迭…...
万维网免费开放30年:除了浏览器,我们还能从CERN的决策中学到什么开源哲学?
万维网开源决策的启示:从技术公共性到开发者行动指南 1993年4月30日,欧洲核子研究中心(CERN)宣布将万维网技术置于公共领域,这一决定彻底改变了人类获取信息的方式。当我们回溯这个历史性时刻,会发现它远不…...
cube studio开源一站式云原生机器学习平台--pytorch分布式训练
全栈工程师开发手册 (作者:栾鹏) 一站式云原生机器学习平台 前言 开源地址:https://github.com/data-infra/cube-studio cube studio 开源的国内最热门的一站式机器学习mlops/大模型训练平台,支持多租户,…...
3分钟解决Windows热键冲突:Hotkey Detective完全使用指南
3分钟解决Windows热键冲突:Hotkey Detective完全使用指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否…...
