per document, hub and authority, as opposed to a single score; It is processed on a small subset of ‘relevant’ documents (a 'focused subgraph' or base set), not all documents as was the case with PageRank. In detail To begin the ranking, we let and for each page . We consider two types of updates: Authority Update Rule and Hub Update Rule. In order to calculate the hub/authority scores of each node, repeated iterations of the Authority Update Rule and the Hub Update Rule are applied. A k-step application of the Hub-Authority algorithm entails applying for k times first the Authority Update Rule and then the Hub Update Rule. Authority update rule For each , we update to where is all pages which link to page . That is, a page's authority score is the sum of all the hub scores of pages that point to it. Hub update rule For each , we update to where is all pages which page links to. That is, a page's hub score is the sum of all the authority scores of pages it points to. Normalization The final hub-authority scores of nodes are determined after infinite repetitions of the algorithm. As directly and iteratively applying the Hub Update Rule and Authority Update Rule leads to diverging values, it is necessary to normalize the matrix after every iteration. Thus the values obtained from this process will eventually converge. Pseudocode G := set of pages for each page p in G do p.auth = 1 // p.auth is the authority score of the page p p.hub = 1 // p.hub is the hub score of the page p for step from 1 to k do // run the algorithm for k steps norm = 0 for each page p in G do // update all authority values first p.auth = 0 for each page q in p.incomingNeighbors do // p.incomingNeighbors is the set of pages that link to p p.auth += q.hub norm += square(p.auth) // calculate the sum of the squared auth values to normalise norm = sqrt(norm) for each page p in G do // update the auth scores p.auth = p.auth / norm // normalise the auth values norm = 0 for each page p in G do // then update all hub values p.hub = 0 for each page r in p.outgoingNeighbors do // p.outgoingNeighbors is the set of pages