Hash-Algorithmus

Status
Nicht offen für weitere Antworten.

minzel

Aktives Mitglied
Hallo, habe da mal eine Frage anderer Art:

Code:
	private int mod_hash128 (String str, int i) {
		if(i<=0) return 0;
		System.out.println( (int) str.charAt(i-1) * p(128,str.length() + (i*-1)) );
		return mod_hash128(str,--i);
	}
	
	private int p(int x, int y){
		  return (y==0) ? 1 : x * p(x, y-1); 
	}

Dieser Code gibt 3 Zahlen aus. Die mit jeweils der, an stelle, multiplizierten Potenz 128 aus.
Soweit kommen die richtigen Ergebnisse

=> (int) n * 128^2 + (int) o * 128^1 + (int) w * 128^0

Das Wort "now" soll hier mittels Modalelm-Hashing dargestellt werden. Mein Problem ist dabei, das ich irgendwie auf dem Schlauch stehe und nicht weiß wie ich in der Rekursiven Methode die "sysout" - Werte zusammen addieren kann und als Rückgabewert zurück geben kann, ohne dabei noch eine Variable hinzuzunehmen. (Da es dann ja keine Rekusrive Methode mehr ist sondern mehr eine Aufzählung (Iterator).

Hoff jemand weiß Rat.
 
S

SlaterB

Gast
Code:
  private static int mod_hash128(String str, int i) {
        if (i <= 0) {
            return 0;
        }
        int x = (int) ( str.charAt(i - 1) * Math.pow(128, str.length() - i) );
        return x + mod_hash128(str, --i);
    }
 

Ark

Top Contributor
SlaterB hat gesagt.:
Code:
Math.pow(128, str.length() - i)
Ich hoffe, ich zeige jetzt, dass ich in Mathe aufgepasst habe. ^^
Code:
// Hier steht das Zeichen ^ für "hoch".

(a^b)^c
=a^(b*c)

128^x
=(2^7)^x
=2^(7*x)
=1<<7*x

Math.pow(128, str.length() - i)
=1 << 7*(str.length() -i)
So, das sollte funzen und dabei wesentlich genauer und schneller sein (evtl. long benutzen).

MfG
Ark
 

byte

Top Contributor
Wäre mal interessant zu wissen, wie die native pow() rechnet, um entscheiden zu können, ob das wirklich schneller ist. Ansonsten ist das aber ein guter Ansatz. Nur die Geschwindigkeit wird wohl eh bei den String-Operationen flöten gehn. ;)
 

minzel

Aktives Mitglied
Muss mich wohl entschuldigen :) Mich hat vor ein paar Tagen die Grippe erwischt und sehe jetzt erst das im 1. Lösungsvorschlag das Math.pow(); enthalten ist. Natürlich soll es ohne dem gehen.
Ich Arbeite mich zur Zeit in Hashing ein und will optional alle Methoden selber schreiben. Natürlich solange es im Rahmen bleibt wie bei der Potenz-Methode.

Nur stutz ich eben bei dem Post von Ark.Was ist das? :)
 
S

SlaterB

Gast
2 = ..00000010 in Bits
4 = ..00000100 in Bits

die Bitdarstellung ist automatisch da, mit 2 multiplizieren entspricht dort einfach eine Verschiebung aller Bits um 1 nach links, was sehr schnell zu machen ist,
und ähnliche Tricks
 

Ark

Top Contributor
@minzel: Nur verstehe ich etwas bei Deinem Algorithmus nicht. 1<<7*x erzeugt bereits bei x=5 eine Zahl, die 36 Bits benötigt, ein int ist allerdings nur 32 Bit breit … ???:L

Ark

EDIT: Na ja, String.hashCode() arbeitet zwar ähnlich, aber trotzdem … seltsam …
 

minzel

Aktives Mitglied
Also, mit int arbeite ich nicht wirklich. In dem Beispiel ganz oben geht es darum anhand Modularem-Hashing auf der Basis von 128 ein String zu kodieren. Raus kommt dabei ein Schlüssel in Form einer Zahl.

Das einzigste was ich dort gemacht habe ist. Ein Char nach int zu konvertieren. Was man, wie ich bereits gesehen habe sogar ganz weglassen könnte.

Glaub wir reden aneinaner vorbei, oder?
 

byte

Top Contributor
Wenns um effiziente hashCode() Implementierung geht, ist dieser Link zu empfehlen. Gibt mittlerweile schon viele Java Bücher, die auf diese Lösung von Joshua Bloch hinweisen (siehe Thinking in Java, 4th Edition). Eclipse in der Version 3.2 bietet sogar Möglichkeiten, die hashCode() nach dem Schema automatisch zu implementieren (Source -> Generate hashCode() and equals()...).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C HASH Algorithmus 2 Strings ergeben das Selbe. Allgemeine Java-Themen 2
I hash-algorithmus Allgemeine Java-Themen 9
E Hash Size (Sha 256) Allgemeine Java-Themen 5
Kirby.exe Hash Map Allgemeine Java-Themen 24
L Hash-Tabelle Allgemeine Java-Themen 2
J Passwort Verschlüsselung hash Allgemeine Java-Themen 2
Thallius Hash über serialisiertes Objekt? Allgemeine Java-Themen 3
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
W Passwort Clientseitig sicher ablegen ohne Hash Allgemeine Java-Themen 2
R Großes Hash-Set erzeugen Allgemeine Java-Themen 12
R MD5-Hash eines Strings bestimmen Allgemeine Java-Themen 2
J Hash aus Verzeichniss generieren Allgemeine Java-Themen 2
S Hash-Bereiche erstellen die gleichverteilt sind..? Allgemeine Java-Themen 8
J MD5-Hash einer Datei Allgemeine Java-Themen 4
O Hash Wert von Passwörter erstellen (SHA) Allgemeine Java-Themen 9
F Passwort hash Allgemeine Java-Themen 8
M@rk MD5 Hash Allgemeine Java-Themen 3
H Hash Tabelle einlesen und die Werte an ein Array übergeben Allgemeine Java-Themen 10
M Hash Tables Allgemeine Java-Themen 5
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

Ähnliche Java Themen

Neue Themen


Oben