java经典算法大全_JAVA 经典算法大全:PageRank算法
public class PageRank {
private static double alpha = 0.85;
/**
* PageRank vector q is defined as q = Gq where
* G = aS + (1-a)*U/n
* S 为转移矩阵
* U 是值都为1的矩阵
* n 是节点数
* a 权重值
* @param args
*/
public static void main(String[] args) {
//转移矩阵S
double[][] S = { { 0, 0.5, 0.5, 0, 0.5 },
{ 0.25, 0, 0, 0, 0 },
{ 0.25, 0, 0, 1, 0.5 },
{ 0.25, 0.5, 0.5, 0, 0 },
{ 0.25, 0, 0, 0, 0 } };
double[][] U = { { 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 } };
//计算 aS
double[][] aS = multi(alpha, S);
//(1-a)*U/n 的值
double[][] matrix2 = multi((1-alpha)/S[0].length,U);
//G 的值 = aS+(1-a)/n*U 两个矩阵相加
double[][] G = addMatrix(aS,matrix2);
//矩阵内容
matrixToString(G);
//初试时,假设上网者在每一个网页的概率都是相等的,PageRank 向量 vector
double[] pr_cur={1,1,1,1,1};
for(int i = 0; i < 100; i++){
double[] pr_next = multiMatrixVector(G, pr_cur);
System.out.println(pr_next[0]+" "+pr_next[1]+" "+pr_next[2]+" "+pr_next[3]+" "+pr_next[4]);
pr_cur = pr_next;
}
}
// 矩阵与向量相乘
/**
*
* @param multi 矩阵
* @param vector PageRank vector
* @return
*/
public static double[] multiMatrixVector(double[][] multi, double[] vector) {
//
double[] pageRankVector = new double[vector.length];
for (int i = 0; i < vector.length; i++) {
for (int row = 0; row < multi.length; row++) {
double pageRank = 0;
for (int col = 0; col < multi.length; col++) {
pageRank += (multi[row][col] * vector[col]);
}
pageRankVector[row] = pageRank;
}
}
return pageRankVector;
}
/**
* 两矩阵相加
* @param matrix1 矩阵1
* @param matrix2 矩阵2
* @return
*/
public static double[][] addMatrix(double[][] matrix1, double[][] matrix2) {
double[][] result = new double[matrix1.length][matrix1.length];
for (int row = 0; row < matrix1.length; row++) {
for (int col = 0; col < matrix1.length; col++) {
result[row][col] = matrix1[row][col] + matrix2[row][col];
}
}
return result;
}
/**
* // 矩阵乘因子
* @param gene 因子
* @param matrix
* @return
*/
public static double[][] multi(double gene, double[][] matrix) {
double[][] result = new double[matrix.length][matrix.length];
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix.length; col++) {
result[row][col] = matrix[row][col] * gene;
}
}
return result;
}
/**
* 打印矩阵内容
* @param matrix 矩阵
*/
public static void matrixToString(double[][] matrix) {
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix.length; col++) {
System.out.print(matrix[row][col] + ",");
}
}
}
}
java经典算法大全_JAVA 经典算法大全:PageRank算法相关推荐
- java随机数抽奖系统_Java实现游戏抽奖的算法
Java实现游戏抽奖的算法 发布时间:2020-05-29 13:27:44 来源:亿速云 阅读:282 作者:鸽子 Java开发游戏抽奖算法主要有随机数一一对应.离散法Alias算法等. 一.随机数 ...
- pagerank算法实现matlab,Matlab 入门及PageRank算法求解.ppt
Matlab 入门及PageRank算法求解 矩阵运算 + 矩阵加 - 矩阵减 * 矩阵乘 / 矩阵左除 \ 矩阵右除 ^ 矩阵幂 维数相同才能加减:方 阵才能求幂. 注意左乘,右乘. a\b?求a* ...
- java经典50题_JAVA经典算法50题(3)【面试+工作】
原标题:JAVA经典算法50题(3)[面试+工作] JAVA经典算法50题(3)[面试+工作] [程序21] 题目:求1+2!+3!+...+20!的和. 1.程序分析:此程序只是把累加变成了累乘. ...
- java string逆序_java经典入门算法题,java初学者必备
java经典入门算法题 开头求关注警告 喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资 料的也可以私信我! 祝关注我的人都:身体健康,财源广进,福如东海,寿比 ...
- java求公式例题_JAVA经典算法40题
1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...
- java冒泡遍历对象_Java经典排序算法(冒泡、选择、插入)
排序算法说明 排序说明 对一序列对象根据某个关键字进行排序. 术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面: 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b ...
- java web面试题大全_Java经典面试题之Java web开发汇总(附答案)
1.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? 答:Web 容器加载Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其init 方法进行Servle ...
- java中queue排序_Java中常见的排序算法有哪些?---选择排序
排序相关的的基本概念 排序: 将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): 它是待排序数据对象的有限集合. 排序码(key):通常数据对象有多个属性域, 即多个数据 ...
- java算法知识点_Java知识点梳理——数据结构与算法
第二部分:数据结构与算法 一.数据结构 1.数组.链表.栈.队列的应用 (1)数组 优点在于: 构建非常简单 能在 O(1) 的时间里根据数组的下标(index)查询某个元素 缺点在于: 构建时必须分 ...
最新文章
- kentico中自定义错误页面
- spring-boot-maven-plugin 插件的作用(转)
- android+点击屏幕隐藏键盘,Android点击EditText文本框之外任何地方隐藏键盘的解决办法...
- php之自动加载(懒加载)
- 联想小新300加固态_就联想小新 Pro 13 固态硬盘混用一事,官方回应
- 发展之道:简单与专注
- php基础 简书,PHP的基础(一)
- 对服务与工厂感到困惑
- Yaml spring boot 二维数组写法
- JAVA人力、项目面试常谈问题以及个人开场介绍模板
- 企业信息安全模型(成熟度模型)
- 质谱借力ICL平台,静待LDT制度打开更大空间
- Python中文数字对照表,学生成绩管理【笔记】
- ue4 从小到大_UE4 Pak 相关知识总结
- 谷歌ai人工智能叫什么_用Google新的AI强大工具翻译古代象形文字
- Nessus 安装文件和详细教程(kali系统,附网盘下载链接)
- html多个好看的背景动态效果(附源码)
- Dijkstra 最短路径算法 秒懂详解
- 模拟登陆广西科技大学正方教务系统
- 任正非接班人李一男离开华为时给属下的忠告