平阳网站建设,怎么做提升网站转化率,广告字制作哪家好,做seo推广网站首先用邻接矩阵A表示从页面j到页面i的概率#xff0c;然后根据公式生成转移概率矩阵
M#xff08;1-d#xff09;*Qd*A 常量矩阵Q(qi,j),qi,j1/n
给定点击概率d#xff0c;等级值初始向量R0#xff0c;迭代终止条件e#xff1b;
计算Ri1M*R…首先用邻接矩阵A表示从页面j到页面i的概率然后根据公式生成转移概率矩阵
M1-d*Qd*A 常量矩阵Q(qi,j),qi,j1/n
给定点击概率d等级值初始向量R0迭代终止条件e
计算Ri1M*Ri
ei|Ri1-Ri|当eie时输出Ri1作为最终等级值向量。
#include fstream
#include sstream
#include iostream
#include set
#include vectorusing namespace std;int getNum()
{setint N;ifstream is(a.txt);int u, v;while (is u v){N.insert(u);N.insert(v);}return N.size();
}void getPage(vectorvectorint page) //
{ifstream is(a.txt);int u, v;while(isuv){ page[u].push_back(v);}
}void PageRank(vectorvectorintpage,int N,double d,double e,int maxIterations)
{//得到Mvectorvectordouble M(N,vectordouble(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 j0;jN;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] ;}}vectordouble pagerank(N, 1.0);while (maxIterations){vectordouble newpagerank(N, 0.0);double dif0.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 maxIterationsendl;break;}maxIterations--;}cout 等级值分别为 endl;for (int i 0; i N; i){cout pagerank[i]endl;}
}int main()
{int num getNum();vectorvectorint 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
结果