使用C#实现PageRank算法

使用C#实现PageRank算法

using System;
using System.Collections.Generic;
using System.IO;

namespace EXP2_C
{
    class PageRank
    {
        public int N;
        private double AFA;
        private double DELTA;
        private double MAX_TIMES;
        List<List<int>> graph;

        public PageRank(int N, double AFA, double DELTA, double MAX_TIMES)
        {
            this.N = N;
            this.AFA = AFA;
            this.DELTA = DELTA;
            this.MAX_TIMES= MAX_TIMES;
        }

        public  void pagerank()
        {
            double[] Prnew = new double[N];
            for (int i = 0; i < N; i++)
            {
                Prnew[i] = 1.0 / N;
            }
            double[] Pr;
            //迭代至|Pn+1−Pn|<ϵ

            for (int i = 1; i < MAX_TIMES; i++)
            {
                //保留迭代前的Pr
                Pr = Prnew;
                //迭代后
                Prnew = get_Prnew(graph, Pr);
                double delta = get_DELTA(Prnew, Pr);
                Console.WriteLine("第" + i + "次迭代完成,DELTA = " + delta);
                if (delta < DELTA)
                    break;
            }
            showResult(Prnew);
        }
        private void showResult(double[] Prnew)
        {
            //打印前十个pr节点
            Console.WriteLine("开始计算前五节点...");
            double[][] big = getBiggestPr(Prnew);
            for (int j = 0; j < 5; j++)
            {
                Console.WriteLine("第" + (j + 1) + "大节点, node: " +( Convert.ToInt32(big[
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值