https://github.com/cschen1205/cs-page-rank
PageRank implemented in .NET
https://github.com/cschen1205/cs-page-rank
link-analysis page-rank search-engine
Last synced: 5 months ago
JSON representation
PageRank implemented in .NET
- Host: GitHub
- URL: https://github.com/cschen1205/cs-page-rank
- Owner: cschen1205
- License: mit
- Created: 2018-04-30T04:39:17.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-05-01T06:22:55.000Z (about 8 years ago)
- Last Synced: 2025-10-12T13:32:02.018Z (10 months ago)
- Topics: link-analysis, page-rank, search-engine
- Language: C#
- Homepage:
- Size: 3.24 MB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# cs-page-rank
Iterative PageRank implemented in .NET 4.6.1
# Install
```bash
Install-Package cs-page-rank
```
# Usage
The sample code below shows how to use the page rank to perform link analysis:
```cs
using System;
using System.Collections.Generic;
namespace PageRank
{
class Program
{
static void Main(string[] args)
{
PageRankByIterativeMethod();
PageRankByMatrixIterativeMethod();
}
private static void PageRankByIterativeMethod()
{
Random random = new Random();
int pageCount = 1000;
IterativePageRank pr = new IterativePageRank(pageCount);
List pages = new List();
for(int pageId = 0; pageId < pageCount; ++pageId)
{
pages.Add(pageId);
}
for(int fromPageId =0; fromPageId < pageCount; ++fromPageId)
{
int outLinkCount = random.Next(pageCount / 50);
Shuffle(pages, random);
for(int i=0; i < outLinkCount; ++i)
{
int toPageId = pages[i];
pr.AddLink(fromPageId, toPageId);
}
}
double tolerance = 0.00001;
float[] ranks = pr.RankPages(tolerance);
for(int pageId = 0; pageId < 50; ++pageId)
{
Console.WriteLine("Page: {0}, Score: {1}", pageId, ranks[pageId]);
}
}
private static void PageRankByMatrixIterativeMethod()
{
Random random = new Random();
int pageCount = 1000;
MatrixIterativePageRank pr = new MatrixIterativePageRank(pageCount);
List pages = new List();
for (int pageId = 0; pageId < pageCount; ++pageId)
{
pages.Add(pageId);
}
for (int fromPageId = 0; fromPageId < pageCount; ++fromPageId)
{
int outLinkCount = random.Next(pageCount / 50);
Shuffle(pages, random);
for (int i = 0; i < outLinkCount; ++i)
{
int toPageId = pages[i];
pr.AddLink(fromPageId, toPageId);
}
}
double tolerance = 0.00001;
double[] ranks = pr.RankPages(tolerance);
for (int pageId = 0; pageId < 50; ++pageId)
{
Console.WriteLine("Page: {0}, Score: {1}", pageId, ranks[pageId]);
}
}
private static void Shuffle(List a, Random random)
{
int i = 0;
while(i < a.Count)
{
int j = random.Next(i + 1);
Swap(a, i, j);
i++;
}
}
private static void Swap(List a, int i, int j)
{
T temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
```