ruby pagerank

#!/usr/bin/ruby -w
require 'matrix'

$tacnum=0.85
$cycletime=10
#p ARGV[0]
$nodesnum=ARGV[1].to_i

$values=Array.new($nodesnum, 0)
$nodes=Array.new($nodesnum){Array.new($nodesnum, 0)}
$everynodenum=Array.new($nodesnum, 0)
#p $nodes

#p $nodes

File.open(ARGV[0], "r") do |f|
  f.each do |line|
    if line=~/(\d+)\s+(\d+)/
      puts "#{$~[1]} #{$~[2]}"
      srcnode=$~[1].to_i
      dstnode=$~[2].to_i
      $nodes[srcnode][dstnode]=1
      $everynodenum[srcnode]+=1
#      p "---------------"
#      p $nodes
#      p "---------------"

    end
  end
end

$nodesnum.times do |i|
  if $everynodenum[i]>0
    $nodesnum.times do |j|
      $nodes[i][j]=$nodes[i][j]*1.0/$everynodenum[i]
    end
  else
    $nodesnum.times do |j|
      $nodes[i][j]=1.0/$nodesnum
    end
  end
  
end

#puts "the wanted:"
#p $nodes
#p "---------------------"
#p $everynodenum

e=Matrix[Array.new($nodesnum, 1.0)].transpose*Matrix[Array.new($nodesnum, 1.0)]

#p e

a=Matrix.rows($nodes)

#p a

a=a*$tacnum+e*((1-$tacnum)/6.0)

#p a

$cycletime.times do
  tmpa=a*a
  a=tmpa
end
p a.to_s

$nodesnum.times do |i|
  $nodesnum.times do |j|
    $values[i]=$values[i]+a[j, i]
  end
end

$valuesHash=Hash.new

$nodesnum.times do |i|
  $valuesHash[i.to_s]=$values[i]
end



p $values.to_a
p $values.sort
p $valuesHash

sortresult=$valuesHash.sort_by {|key, value| -value}

p sortresult

$nodesnum.times do |i|
  p sortresult[i][0]
end






















ruby *.rb guanxi.txt 结点数

guanxi.txt:

0 1
0 2
1 0
1 2
2 1
3 2
3 4
3 5
5 3

5 4

pagerank排序结果:

1

2

0

4

3

5


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值