Recently reviewed Hadoop found a lot of notes before, posted out very everyone share under.
a brief introduction to Google matrix and page Rank
Page rank, part of Google's ranking algorithm, is a way for Google to identify the level/importance of Web pages, and is the standard that Google uses to measure a site's quality. After blending all the other factors, such as the title tag and the keywords logo, Google adjusts the results by PageRank to make those more "grade/importance" pages more ranked in search results, improving the relevance and quality of search results. Its level from 0 to 10, 10 for full marks. The higher the PR value means the more important the Web page is.
Google's PageRank measure the value of a site based on the number and quality of external links and internal links.
[above quoted from: Baidu Encyclopedia, see http://baike.baidu.com/view/1518.htm in detail, do not introduce more]
Matrix Concept related
I believe many people forget about the "linear algebra" of the university; in the Google matrix solution process we have to use a few basic concepts: eigenvector, matrix addition, matrix multiplication.
A matrix is a two-dimensional array. A matrix of n rows m columns can be multiplied by a matrix of m rows p columns, the resulting result is a matrix of n rows p columns, where the number of the J column in line I is equal to the sum of all M products multiplied by the M number on line I of the previous matrix and the M number on the first J column of the Last matrix. For example, the following formula represents a matrix of 2 rows of 2 columns multiplied by 2 rows of 3 columns, and the result is a 2 row 3 column matrix
If you forget about it (landlord is also), it is recommended to spend two or three hours to review. Recommendation: Http://wenku.baidu.com/view/3d8e80373968011ca30091c0 from page 14th (determinant) start to recall.
(digression: Everyone is cursing the irrationality of college-oriented education, but here we can find: the wrong is the system itself rather than knowledge. For the acquisition of knowledge: I have learned to forget and I have not learned is a qualitative difference---welcome to make bricks)
If you still haven't figured out the eigenvector, can actually skim first, as is an n row 1 column of the matrix (haha originally is), we want through this matrix to continue to carry out Q (n) =g*q (n-1) (G is Pangrank matrix, Q is eigenvector) operation, until Q (n) =q ( n-1), q (n) is the value of PR.
Reference information: http://www.cnblogs.com/itTeacher/archive/2013/06/08/3126914.html
Implementing PageRank with Java programming
Package com.hadoop;
public class Getpagerank {//A is a damping factor, Google takes a equals 0.85 private static float alpha = 0.85f;
public static void Main (string[] args) {try {//Transfer matrix Float[][] S = {0, 0, 0, 0}, {0.3333333f, 0, 0, 1}, {0.3333333f, 0.5f, 0,
0}, {0.3333333f, 0.5f, 1, 0}};
Initial eigenvector float[][] U = {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1},
{1, 1, 1, 1}}; float[][] F1 = Multigenematrix (alpha, S);/as float[][] F2 = Multigenematrix ((1-alpha)/s[1). length, U);//(1-A)/n*u//Get pagerank float[][] G = Addmatrix (f1, F2);
/as+ (1-A)/n*u//Print matrix content Printcontentofmatrix (G);Eigenvector float[] Pr_cur = {1f, 1f, 1f, 1f};//result:0.15000004 1.492991
0.82702124 1.5299894 int i = 0;
Ask PageRank value Q (n) =g*q (n-1) until Q (n) =q (n-1), q (n) is the value of PR.
while (true) {float[] Pr_next = Multimatrixvector (G, pr_cur); if (Comparematrix (Pr_cur, Pr_next)) {System.out.println ("Total calculated: + i +")
Times "); System.out.println (Pr_next[0] + "--" + pr_next[1] + "--" + Pr_nex
T[2] + "--" + pr_next[3]);
Break
else {i++;
Pr_cur = Pr_next;
} The catch (Exception e) {System.out.println (E.getmessage ());
}//matrix multiplies with vectors public static float[] Multimatrixvector (float[][] m, float[] v) {
float[] RV = null;
try {RV = new float[v.length];
for (int vl = 0; VL < V.length, vl++) {for (int row = 0; row < m.length; row++) {
float one = 0; for (int col = 0; col < m[1].length col++) {one + = M[row][col] * v[c
OL];
} Rv[row] = one; The catch (Exception e) {System.out.println (e.getmes
Sage ()); return RV; }//Two matrix addition public static float[][] Addmatrix (float[][] F1, float[][] f2) {float[][]
result = NULL;
try {result = new Float[f1.length][f1[1].length]; for (int row = 0; row < f1.length. row++) {for (int col = 0; col < f1[1].length; c
ol++) {Result[row][col] = F1[row][col] + F2[row][col]; The catch (Exception e) {} return
Result }//matrix multiplication factor public static float[][] Multigenematrix (float F, float[][] FM) {float[][]
result = NULL;
try {result = new Float[fm.length][fm[1].length];
for (int row = 0; row < fm.length; row++) { for (int col = 0; col < fm[1].length; col++) {Result[row][c
OL] = Fm[row][col] * F;
The catch (Exception e) {} return result;
}//Print matrix content public static void Printcontentofmatrix (float[][] f) {try {
System.out.println ("--------------get the Google matrix as follows---------------"); for (int row = 0; row < f.length. row++) {for (int col = 0; col < F[1].length; col
+ +) {System.out.print (F[row][col] + "");
} System.out.println (); } System.out. println ("---------------------------------
-------------"); catch (Exception e) {System.out.println (E.getmessage ());
}//Compare two eigenvector public static Boolean Comparematrix (float[] Now, float[] next) { try {for (int i = 0; i < next.length; i++) {if (Next-
Now > 0.0000001) {return false; The catch (Exception e) {System.out.println (e.getmes
Sage ());
return true; }
}