ITPub博客

首页 > Linux操作系统 > Linux操作系统 > pagerank的Java实现

pagerank的Java实现

原创 Linux操作系统 作者:mikeliuy 时间:2012-10-07 13:19:14 0 删除 编辑

经过网上的学习,自己写个demo,试试这个算法。
如图,页面的连接示意图。
首先定义PageEntity类,代表页面。
public class PageEntity {
    /* 页面的路径 */
    private String path;
    /* 页面内容 */
    private String content;
    /* 外链(本页面链向其它页面)*/
    private List utLinks = new ArrayList();
    /* 内链(其它页面链向本页面)*/
    private List inLinks = new ArrayList();
    /* 本页面的PageRank值 */
    private double pr;


再定义测试类,这个类包括pagerank的算法
public class PageRankDemo {
    /* 阈值 */
    public static double MAX = 0.00000000001;
    /* 阻尼系数 */
    public static double alpha = 0.85;

   。。。。。。。。
   public static void main(String[] args) {
        //加载要进行计算的页面,将pageMap,pageList,init等进行初始化。
        //PageEntity的pr属性无值外,其它属性已经初始化完毕。
        loadHtmlPages();
        //使用PageRank算法对pr进行初始化
        pr = doPageRank();


        //进行Pagerank计算,只要值超出界限,就停止计算,保留结果。
        while (!(checkMax())) {
            System.arraycopy(pr, 0, init, 0, init.length);
            pr = doPageRank();
        }


        //将pr值保存到对应的页面对象中
        for (int i = 0; i < pr.length; i++) {
            PageEntity pe = pageList.get(i);
            pe.setPr(pr);
        }
       。。。。。。。。


具体的算法实现:
   private static double[] doPageRank() {
        double[] pr = new double[init.length];
        for (int i = 0; i < init.length; i++) {
            double temp = 0;
            PageEntity pe0 = pageList.get(i);
            for (int j = 0; j < init.length; j++) {
                PageEntity pe = pageList.get(j);
                if (i != j && pe.getOutLinks().size() != 0
                        && pe.getOutLinks().contains(pe0.getPath())) {
                    temp = temp + init[j] / pe.getOutLinks().size();
                }
            }
            pr = alpha + (1 - alpha) * temp;
        }
        return pr;
    }

最后得到4个页面的pr值:
d:\Projects\PageRankDemo\htmldocs\3.html : 1.098420818505078
d:\Projects\PageRankDemo\htmldocs\4.html : 0.9755338078290176
d:\Projects\PageRankDemo\htmldocs\1.html : 0.9415035587187258
d:\Projects\PageRankDemo\htmldocs\2.html : 0.9415035587187258


pr1.jpg

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26812308/viewspace-745821/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: pangrank概念
下一篇: pagerank的Java实现
请登录后发表评论 登录
全部评论

注册时间:2012-06-18

  • 博文量
    72
  • 访问量
    420986