Suchen mit Hashfunktion ?!

endstille

Mitglied
Hallo ich hab da mal ein paar fragen, wir hatten in den letzten stunden verschiedene sortieralgorithmen und jetzt haben die uns iwas zu hashfunktionen erzählt.
Eine hashfunktion wir in folgenden beispiel, sagt ja eigtl nur wie man eine bestimmte zahl findet oder? und die offene verkettung, kann ich mir wie eine art behälter vorstellen, wo alle gleichen zahlen gespeichert werden?

hier ist die aufgabe:

Gegeben sei ein Hashfeld der Länge n und eine Hash-Funktion h(x) = (x*x/2) % n. Beim Auftreten einer
Kollision wird die offene Verkettung angewendet.

a) Geben Sie die Belegung des Feldes für n = 7 nach Eintragen der Werte 10, 3, -4, 5, 1 und 11 an.
b) Wieviele Schritte sind bei der entstandenen Belegung höchstens nötig, um festzustellen, dass ein
beliebiger Wert nicht in der Tabelle enthalten ist?
c) Auf welche Größe n muss das Feld mindestens vergrößert werden, damit mit den obigen Werten
beim Eintragen keine Kollision auftritt?
d) Geben Sie für dieses n ebenfalls die dann entstehende Belegung an.
e) Wieviele Schritte benötigt eine Suche in diesem Fall maximal, um das Fehlen eines Elementes
festzustellen?

Meine Ansätze:

a) wäre ja einfach nur einzusetzen:
für h(10)=(10*10/2)%7=1
für 3 = 4,5
für -4 = 1
für 5 = 5,5
für 1 = 1
für 11 = 4
die belegung von n wäre dann:
1(3mal) , 4.5 , 5.5 , 4

b) da es ja nur eigtl 4 zahlen (1,4, 4.5 , 5.5) sind. 4 schritte? oder wie darf man schritte verstehen?

c)hm.. ok? wie keine kollision? dass dann sozusagen die zahl(1 ja in dem fall) sozusagen an die nächste freie stelle kommt? wäre ja dann n=6 weil wir ja 6 werte eintragen. ähm oder?

d)hier wäre die belegung von n dann:
1 , 4.5 , 1 , 5.5 , 1 , 4

e)hm was meine die denn da schon wieder für eine suche? linear oder? wären in dem fall dann ja auch wieder 6


hoffe ihr könnt mir ein bisschen helfen :)
 

faetzminator

Gesperrter Benutzer
Eine hashfunktion wir in folgenden beispiel, sagt ja eigtl nur wie man eine bestimmte zahl findet oder?
Für eine Map wird der Hash als Key verwendet, damit lässt sich alles einfach finden. Erst wenn Kollisionen auftreten, muss alles durchsucht werden (mit dem gleichen Hash).
und die offene verkettung, kann ich mir wie eine art behälter vorstellen, wo alle gleichen zahlen gespeichert werden?
Wird wohl so gemeint sein. Alle Objekte mit gleichem Hash werden in einem Pool, also Behälter gespeichert.
Und zu den Aufgaben: Aufgabe A solltest du bereits lösen können :) Einfach den Hash mit der angegebenen Funktion berechnen.
 

XHelp

Top Contributor
Das 4.5te Feld ist etwas albern. Es sollten schon ganze Zahlen rauskommen. 3/2 = 1
Und die Schritte: im 1. Schritt suchst du die passende "Tasche" aus und dann gehst du alle Elemente in dieser "Tasche" durch.
 

bERt0r

Top Contributor
Also erstmal, das gehört doch ins Hausaufgaben-Forum, oder?
2. Gehts hier wirklich um java oder allgemein um Hashing?
3. Was heißt offene Verkettung. Die Begrifflichkeiten sind oft nicht überall eindeutig. Wenn ich mir z.B Wikipedia anschau, trennt das die Kollisionsstrategien in offenes Hashing und Kollisionsauflösung durch Verkettung :D.
 

Nasjer

Mitglied
also erst einmal:
schön die aufgabe von der erstsemester-übung von der HU rausgeschrieben ;)
man sieht sich also morgen :p

aber nun gut:

a)
1 10 -4 - 3 5 11
0 1 2 3 4 5 6

den wert den du mit der hash-funktion ausrechnest, gibt dir den index an, wo die zahl hingeschrieben wird und da kommt auch gleich die offene verkettung ins spiel:
wenn ein wert bereits an der stelle ist, dann wird zur nächsten freien stelle gesprungen; wenn man hinten angekommen is, dann sucht man von links nach rechts die erste freie stelle

c)hm.. ok? wie keine kollision? dass dann sozusagen die zahl(1 ja in dem fall) sozusagen an die nächste freie stelle kommt? wäre ja dann n=6 weil wir ja 6 werte eintragen. ähm oder?

ähm nein..da steht in der aufgabe vergrößern und nicht verkleinern
stell dir das wie beim stuhltanz vor: kein freier platz -> gehe zum nächsten freien platz..wenn es eng wird nehmen wir halt noch nen paar stühle dazu


d) solltest du nun alleine schaffen können

und nun zu b und e:
du sollst die max. schritte bestimmen. heißt, wenn du jetzt eine zahl hast die meinetwegen auf dem index 4 hinmüsste, müsstest du laut offener verkettung die zahl an der nächsten freien stelle plazieren. kommt die zahl nicht bis zur nächsten freien stelle ist sie nicht drin. da du 7 felder durchlaufen hast, ist die deine zahl
anders ausgedrückt: such dir enfach die längste kette zwischen zwei freien stellen und das ist in diesem fall die lösung


noch ne gute nacht;)
 

endstille

Mitglied
Hallo, erstmal vielen dank für eure antworten:toll:
ähm ja nächstes mal schreib ichs ins hausaufgaben forum, wusste gar nicht, dass es sowas gibt

a)
1 10 -4 - 3 5 11
0 1 2 3 4 5 6

Also ich glaub iwas versteh ich echt nicht. ich dachte ich muss die werte 1 10 -4 3 5 11 in die funktion einsetzen also: wenn ich in die gleichung zb 1 einsetze erhalte ich:
h(x) = (1*1/2) % 7 = (0,5) %7 kann man denn überhaupt mit mod durch kommazahlen rechnen? dachte das geht eigtl nicht? oder nimmt man dann einfach den ganzzahligen rest bei 0,5 % 7= ?
und wenn mir nun die hashfunktion angibt, an welche stelle die zahl hingeschreiben wird brauche ich doch ganze zahlen oder?

ok und die anzahl an schritten um festzustellen, dass eine zahl fehlt, ist alwo der längste platz zwischen 2 zahlen.
wäre ja dann bei nasjers a.)
a)
1 10 -4 - 3 5 11
0 1 2 3 4 5 6
dann zwischen 1 und 10 oder?

oh man hoffe ihr haltet mich jetzt nicht für ganz blöde;)
 

Nasjer

Mitglied
h(10)=1
h(3)=4
h(-4)=1
usw.
gib diese funktion doch einfach mal bei eclipse ein und dann siehst du was raus kommt
und das ergebnis is die stelle im feld, wohin die zahl kommt

und zu dem suchen
du beginnst bei 4 und gehst dann sozusagen zur 3..also ingesamt 7 schritte
beim suchen nimmst du dir den längsten zusammenhängenden abschnitt
beginnst dann bei dem anfangsminus - ,gehst dann hier im beispiel so rum 4 5 6 0 1 2 3
dann hast du hier das komplette feld durchsucht und der wert ist nicht vorhanden

bei teilaufgabe e)
1 - - 5 3 10 11 - -4
0 1 2 3 4 5 6 7 8

da beginnst du beim index 2 und gehst bis zum index 7..hast also 5 schritte benötigt
 

endstille

Mitglied
hey vielen dank nochmal. jetzt hab sogar ich es verstanden und nachdem ichs in eclipse probiert habe, ist mir auch einiges klarer.:toll:
dankeschön und vllt sieht man sich ja mal zufällig ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
I String nach Wort suchen Java Basics - Anfänger-Themen 6
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
CptK Koordinate in Liste suchen Java Basics - Anfänger-Themen 20
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
B Java Mail: suchen von mehreren Emailadressen Java Basics - Anfänger-Themen 5
D Erste Schritte Wert im Array suchen Java Basics - Anfänger-Themen 12
B Suchen und sortieren Java Basics - Anfänger-Themen 10
J Wörter aus Textdatei suchen Java Basics - Anfänger-Themen 2
A Erste Schritte Buchstaben im Array suchen Java Basics - Anfänger-Themen 8
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
S Wort suchen und ersetzen in einer Datei Java Basics - Anfänger-Themen 6
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
C In ArrayList suchen Java Basics - Anfänger-Themen 6
G nach 9 - stelliger Nummer suchen Java Basics - Anfänger-Themen 7
D Liste nach 2 gleichen Einträgen suchen Java Basics - Anfänger-Themen 4
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
Y Explizites Suchen Java Basics - Anfänger-Themen 13
G Zeichen suchen und Ausgeben. Java Basics - Anfänger-Themen 3
K String in String-Array suchen Java Basics - Anfänger-Themen 11
T Suchen in sortiertem Feld Java Basics - Anfänger-Themen 2
K Im String Array suchen Java Basics - Anfänger-Themen 8
E Belebeste Area im Game of Life suchen Java Basics - Anfänger-Themen 0
A Hash Tabelle Element suchen Java Basics - Anfänger-Themen 1
L Name im Array suchen Java Basics - Anfänger-Themen 12
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
F Methoden Kontaktliste - String in einem Array suchen und ausgeben Java Basics - Anfänger-Themen 3
A Suchen und ersetzen Java Basics - Anfänger-Themen 13
P Teilstring suchen Java Basics - Anfänger-Themen 3
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
D String in Datei suchen und löschen Java Basics - Anfänger-Themen 2
A Nach dem Objekt suchen Java Basics - Anfänger-Themen 1
F In einem String nach einem String suchen und Zeichen danach ausgeben Java Basics - Anfänger-Themen 6
K Maximum Suchen Array Java Basics - Anfänger-Themen 6
W .txt auslesen und nach schlüsselbegriffen suchen Java Basics - Anfänger-Themen 7
S Suchen in Arrays Java Basics - Anfänger-Themen 7
J Input/Output String Suchen und Ersetzen Java Basics - Anfänger-Themen 8
A Kleinste Ziffer im Array suchen um Sortierung zu erzeugen Java Basics - Anfänger-Themen 2
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
T String in Array suchen Java Basics - Anfänger-Themen 9
G Erste Schritte Nach bestimmten Dateien suchen und dann in die Registry schreiben. Java Basics - Anfänger-Themen 6
B Nach regulären Ausdrücken suchen Java Basics - Anfänger-Themen 14
C Bestimmte Informationen von Webseite suchen Java Basics - Anfänger-Themen 13
B Suchen und ersetzten mit \ ? Java Basics - Anfänger-Themen 9
A String in String suchen Java Basics - Anfänger-Themen 3
J Nach einem Wert suchen +/- x Java Basics - Anfänger-Themen 8
D Binäres Suchen Java Basics - Anfänger-Themen 11
N Weg suchen bei Adjazenzmatrix Java Basics - Anfänger-Themen 2
C Binäres Suchen mit Rekursion Java Basics - Anfänger-Themen 5
I Erste Schritte Ein Zeichen in einem Array Suchen Java Basics - Anfänger-Themen 8
N Binär suchen: Java Basics - Anfänger-Themen 4
D In Hashtable suchen Java Basics - Anfänger-Themen 3
J In String suchen Java Basics - Anfänger-Themen 14
D Nach String "{" suchen Java Basics - Anfänger-Themen 4
3 3. Element mit regulären Ausdruck suchen Java Basics - Anfänger-Themen 12
L String suchen und ersetzten, ohne neue Datei Java Basics - Anfänger-Themen 4
M Notiz suchen-Programm Java Basics - Anfänger-Themen 3
F Zusammenhängend Komponente suchen(Graph) Java Basics - Anfänger-Themen 4
M Teilmatrix suchen Java Basics - Anfänger-Themen 16
B Java nach bestimmter dateiendung suchen Java Basics - Anfänger-Themen 6
B Element in Folge suchen Java Basics - Anfänger-Themen 7
T String aus einer ArrayList suchen Java Basics - Anfänger-Themen 7
V Doppelte Zahl suchen Java Basics - Anfänger-Themen 14
G List suchen und doppelte rausfiltern Java Basics - Anfänger-Themen 3
R Datentypen In String nach String suchen und hinzufügen Java Basics - Anfänger-Themen 2
D Textdatei einlesen und darin suchen Java Basics - Anfänger-Themen 11
I Wie kann ich ein Wort in einem String suchen Java Basics - Anfänger-Themen 3
P char[] - suchen/ löschen Java Basics - Anfänger-Themen 6
S Datentypen In ArrayList nach Element suchen und Position ausgeben Java Basics - Anfänger-Themen 9
D Array Fehler / groesste Primzahl suchen Java Basics - Anfänger-Themen 4
C Objekt aus Liste suchen Java Basics - Anfänger-Themen 6
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
D In String suchen und extrahieren Java Basics - Anfänger-Themen 13
B Suchen nach Teilstring, um Text danach ausgeben Java Basics - Anfänger-Themen 11
H Höchsten int-Wert(key) aus einer Hashmap suchen Java Basics - Anfänger-Themen 19
J Feld in Tabelle suchen Java Basics - Anfänger-Themen 8
Developer_X Strings in JTextarea suchen Java Basics - Anfänger-Themen 15
F Datei suchen --> Pfad als String speichern Java Basics - Anfänger-Themen 8
R einen gegebenen String in einem String suchen Java Basics - Anfänger-Themen 6
J Suchen nach ArrayObjekten Java Basics - Anfänger-Themen 17
? Algo gleicher Buchstabe in 2 Wörtern suchen Java Basics - Anfänger-Themen 16
G String suchen Java Basics - Anfänger-Themen 4
X Attribut in n Objekten suchen Java Basics - Anfänger-Themen 8
G String in Array suchen Java Basics - Anfänger-Themen 6
G Texte innerhalb von Dateien suchen Java Basics - Anfänger-Themen 9
P Text in Verzeichnisse suchen Java Basics - Anfänger-Themen 4
-horn- String im String suchen, womit? Java Basics - Anfänger-Themen 2
G String Suchen ersetzen replace_all() Java Basics - Anfänger-Themen 6
G Nach Datum suchen. Java Basics - Anfänger-Themen 4
M Rekursives suchen im TreeMenu Java Basics - Anfänger-Themen 10
G In DefaultTreeModel suchen Java Basics - Anfänger-Themen 2
G BST Suchbäume kleinsten Wert suchen Java Basics - Anfänger-Themen 3
G Zeichenkette suchen in Vector-Klasse Java Basics - Anfänger-Themen 11
G Suchen in Map nach Schlüssel? Java Basics - Anfänger-Themen 2
G Methode in API suchen Java Basics - Anfänger-Themen 3
S Anzahl von Zeichen in einem String suchen und zählen Java Basics - Anfänger-Themen 1
R maximum in integer array suchen Java Basics - Anfänger-Themen 29
X Suchen mit Filterfunktion, Platzhalter etc. Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben