Page Rank Algorithmus implementieren

Status
Nicht offen für weitere Antworten.

Prinz

Mitglied
Also der Algorithmus ist folgender:

PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))

Hierbei ist:
PR(A) der PageRank einer Seite A,
PR(Ti) der PageRank der Seiten Ti, von denen ein Link auf die Seite A zeigt,
C(Ti) die Gesamtanzahl der Links auf Seite Ti und
d ein Dämpfungsfaktor (Damping Factor), wobei 0 <= d <= 1 ist.


für alle A Element Seiten


Ich hab Datebanktabelle mit den 2 Atributen

- Knoten (Wäre dan A)

- Referenz von anderem Knoten (Wäre Ti)



Habt ihr Vorschläge welche Datenstrukturen da am geeignetsten wären.
Ich will das Programm möglichst effizient. Sind da HashMaps geeignet?
 
S

SlaterB

Gast
das hängt ja stark davon ab, was du mit den Daten tun willst ;)
wie oft speichern/ laden,
nur komplette Durchläufe oder Springen/ Suchen/ ..

falls du Knoten-Ids kennst und dazu den Knoten haben willst,
dann sind Maps gut, ja,
außerdem die Knoten-Objekte untereinander verknüpfen,
das klingt recht praktisch ;)
 

Prinz

Mitglied
Der Algorithmus konvergiert sehr schnell. Ich denke 10 Durchläufe sind genug.
Maximal 30


Insgesamt habe ich ca. 30.000 Knoten. Könnten aber auch 10mal soviel werden.
Die Knoten Id's kenne ich natürlich.


Also untereinander verknüpfen? Bin mir nicht sicher ob der Stack das mitmacht, da ich ja dann alle Objekte reinladen muss.

Andererseits ist es wahrscheinlich auch recht langsam jedes Objekt aus der Datenbank zu holen.
 
S

SlaterB

Gast
wenns an die Grenzen geht, dann Komfort über Board werden und speicherfreundlich arbeiten,

spontage Idee: einige int-Arrays:

ein Array enthält pro Knoten hintereinander weg die Index2 der verbundenen Knoten + Trennzeichen,
wird sehr lang und unterschiedlich lang pro Knoten

Index2 bezieht sich auf die Position im zweiten Array


ein zweites Array mit 2 Feldern pro Knoten:
die erste enthält den Index1 des Knotens im ersten Array,
die zweite den bisherigen Page-Rank


nun kann man das zweite Array durchlaufen,
zu jedem Knoten im ersten Array die zugehörigen Knoten im zweiten Array suchen und deren Page-Ranks lesen

----

dazu noch Zusatz-Infos wie Name pro Knoten in anderen Arrays oder in der DB

wenn die Arrays zu lang sind, dann mehrere Arrays und in den Positionen sowohl den Index als auch die Array-Nummer kodieren,

-------

ist dann nicht mehr wirklich objektorientiert ;)

-------

sobald es wirklich mehr Daten werden als gleichzeitig verarbeitet werden können,
dann muss zwangsläufig nachgeladen werden,
dann gibt es hoffentlich sowas wie Lokalität,
bei komplett zufälliger Vermaschung wirds bizar ;)
 

Prinz

Mitglied
mit arrays wollte ich sowieso nicht arbeiten.

Würde dann eher eine Liste verwenden. Arrays taugen mir garnicht :)
 
G

Gast

Gast
hey, gibt es inzwischen ein java programm / eine klasse die den pagerank für eine übergebene url berechnet?
 

tincup

Bekanntes Mitglied
Hi.

Also nur mal aus eigener Erfahrung: Wir haben diese Pagerank-Idee mal für Proteinhomologien implementiert. Nannte sich da Rankprop. Das Problem sind eben die vielen Verknüpfungen, die du halten musst. Eine direkte 2D-Matrix (= Array) wäre das allerschnellste. Die fällt aber natürlich flach, weil sie viel zu groß werden würde, nämlich Objekte*Objekte Zellen.

Die Verbindungsmatrix ist aber sehr "sparse", also dünn besiedelt. Das heisst jedes Objekt hat in der Regel nur Verknüpfungen mit wenigen Partner im Vergleich zur Gesamtmenge. Haben dann tatsächlich eine Implementation mit Arrays hergenommen in etwa wie sie unten beschrieben war.

Weiss es grad nicht mehr ganz exakt (müsste nachgucken), aber es war schon pro Knoten zwei Arrays, jeweils mit der PartnerID und dem Pagerank. Diese beiden listen dann noch nach PartnerID sortiert für schnelle binäre Suche.

Mein genereller Tip auch aus der konkreten Erfahrung: Wenn es wirklich viele Daten werden wird das ganze verdammt groß. Dann solltest oder musst du leider auf entsprechende "schöne" Java Klassen wie List<E>, HashMap<K,V> etc. verzichten. Diese Datenstrukturen und vor allem die zugrundeliegenden Objekte (Integer statt int, Float statt float etc.) rauben dir dein letztes Byte :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Code Page characters darstellen Allgemeine Java-Themen 12
A Element für Preferences Page Allgemeine Java-Themen 3
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
schegga_B AES-Algorithmus in javax.crypto Allgemeine Java-Themen 3
M Laufzeit des Prim Algorithmus Allgemeine Java-Themen 3
O Newton Algorithmus Java Allgemeine Java-Themen 1
CptK Backpropagation Algorithmus Allgemeine Java-Themen 6
N Google Authenticator Algorithmus (SHA1) Allgemeine Java-Themen 1
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
Zrebna Quicksort-Algorithmus - zufälliges Pivot wählen Allgemeine Java-Themen 6
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
B Algorithmus Warteschlange Ringpuffer wirklich fehlerfrei Allgemeine Java-Themen 8
M Probleme mit Negamax-Algorithmus Allgemeine Java-Themen 29
F Q - Learning Algorithmus Bug Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
M Minmax Algorithmus Verständnisproblem Allgemeine Java-Themen 2
H Rundreise frage (Algorithmus) Allgemeine Java-Themen 18
F KMP-Algorithmus Allgemeine Java-Themen 9
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
P MinMax Algorithmus Allgemeine Java-Themen 0
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
K Djikstra-Algorithmus Allgemeine Java-Themen 1
T Minimax/Alphabeta Algorithmus hängt sich auf (?) Allgemeine Java-Themen 2
M Algorithmus zum Zahlen einteilen Allgemeine Java-Themen 8
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
S Rucksackproblem und genetischer Algorithmus Allgemeine Java-Themen 9
L Abbruch des Algorithmus Allgemeine Java-Themen 8
D Input/Output Ausgleichen chemischer Reaktionsgleichungen mit dem Gauß-Algorithmus Allgemeine Java-Themen 2
Messoras A*-Algorithmus integrieren Allgemeine Java-Themen 3
S Buchscan 3D Dewarp Algorithmus - Ansätze Allgemeine Java-Themen 1
B Verteilungs-/Vergabe-Algorithmus mit abhängigen Score-Werten Allgemeine Java-Themen 3
Androbin "Shunting Yard"-Algorithmus Allgemeine Java-Themen 6
B Algorithmus - Project Euler Problem 18 Allgemeine Java-Themen 2
N Algorithmus zum bewerten von mathematischen Funktionen Allgemeine Java-Themen 11
O Algorithmus Optimierung Allgemeine Java-Themen 3
Joew0815 Algorithmus - Zahlenfolge in 4 ähnliche Teile aufteilen Allgemeine Java-Themen 0
O Tag Cloud Algorithmus Idee gesucht Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
C Eclipse Probleme bei selbst erstelltem Algorithmus Allgemeine Java-Themen 2
H Graph-Algorithmus gesucht Allgemeine Java-Themen 21
N Algorithmus durch Workflow Allgemeine Java-Themen 7
M tree-based diff Algorithmus (Code-Vergleiche) Allgemeine Java-Themen 3
S Uhrzeit Algorithmus sale Allgemeine Java-Themen 11
N A*-Algorithmus Allgemeine Java-Themen 5
A Suche Algorithmus zum Erstellen eines planaren Graphen Allgemeine Java-Themen 5
F Methoden Algorithmus zur Gegnerfindung (Turnier) Allgemeine Java-Themen 9
T Algorithmus Graph Allgemeine Java-Themen 10
J Algorithmus gesucht (Stringtransformation) Allgemeine Java-Themen 4
B Algorithmus Krankenhausbelegung Allgemeine Java-Themen 17
S Algorithmus von Dijkstra Allgemeine Java-Themen 2
alex_fairytail OOP Banknoten Algorithmus Teil 2 Allgemeine Java-Themen 13
2 ArrayList aktualisieren Algorithmus Allgemeine Java-Themen 11
alex_fairytail Methoden Banknoten Algorithmus Allgemeine Java-Themen 10
R Codehinweise: Algorithmus Größenvergleich von n Zahlen Allgemeine Java-Themen 5
SuperSeppel13 WTF?! Algorithmus-Geschwindigkeitstest Allgemeine Java-Themen 2
L Algorithmus für kürzesten Weg mit Wegpunkten Allgemeine Java-Themen 21
C Algorithmus Problem in Minesweeper Allgemeine Java-Themen 5
S Algorithmus um Labyrinth zu erzeugen Allgemeine Java-Themen 6
V Problem mit A* Pathfinder-Algorithmus Allgemeine Java-Themen 2
S Algorithmus um nächst folgende Primzahl zu berechnen Allgemeine Java-Themen 7
S Algorithmus Problem. Rechtecke effizient auf Spielfeld anordnen. Allgemeine Java-Themen 7
C Algorithmus-Hilfe Allgemeine Java-Themen 20
J Algorithmus Längenkombinationen? Allgemeine Java-Themen 7
M Kombinationen über rekursiven Algorithmus berechnen? Allgemeine Java-Themen 10
L Algorithmus für Poker-Hände Allgemeine Java-Themen 7
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
D Abstruse Probleme mit eigenem replace Algorithmus Allgemeine Java-Themen 11
P RC4 Algorithmus Allgemeine Java-Themen 3
D RSA Verfahren - Erweiterter Euklidischer Algorithmus Allgemeine Java-Themen 4
C IBAN und Bic Validieren (Algorithmus) Allgemeine Java-Themen 10
P Problem mit A*-Algorithmus Allgemeine Java-Themen 12
M Wörter Algorithmus Allgemeine Java-Themen 7
M Algorithmus für automatische Zeilenumbrüche Allgemeine Java-Themen 12
K Postleitzahlen Algorithmus Allgemeine Java-Themen 12
G Problem mit Algorithmus Allgemeine Java-Themen 3
T Hilfe bei einem Algorithmus Allgemeine Java-Themen 2
S Stemming-Algorithmus gesucht (z.B. Porter) Allgemeine Java-Themen 2
RoliMG präfix zu infix algorithmus Allgemeine Java-Themen 6
Z A*-Algorithmus - Probleme mit offener/geschlossener Liste Allgemeine Java-Themen 7
S Javaimplementierung des MD5 Algorithmus Allgemeine Java-Themen 2
E Container-Pack-Algorithmus Allgemeine Java-Themen 4
G k nearest neighbor algorithmus Allgemeine Java-Themen 7
C HASH Algorithmus 2 Strings ergeben das Selbe. Allgemeine Java-Themen 2
T Problem RSA-Algorithmus in Java? Allgemeine Java-Themen 2
minzel Hash-Algorithmus Allgemeine Java-Themen 9
Y komprimierung mittels Huffman-Algorithmus, bit-shifting. Allgemeine Java-Themen 2
K Algorithmus Allgemeine Java-Themen 10
C Algorithmus für Array Allgemeine Java-Themen 9
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
J fällt euch ein Algorithmus ein? Allgemeine Java-Themen 4
S Algorithmus für Sudoku Allgemeine Java-Themen 17
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
F Algorithmus für Sortierung gesucht Allgemeine Java-Themen 15
T Algorithmus verbessern Allgemeine Java-Themen 10
U Suche Algorithmus zur bestimmung des längsten Wegs Allgemeine Java-Themen 3
U Ford-Fulkerson Algorithmus gesucht Allgemeine Java-Themen 1
U Dijkstra Algorithmus gesucht Allgemeine Java-Themen 4
D Algorithmus für die Erkennung fehlerhafter Eingaben Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben