Was eine Hash-Funktion ist, wird in der gesamten Informatik verwendet.
Eine Hash-Funktion ist einfach eine Funktion, die für jede empfangene Eingabe einen Wert fester Länge generiert.
Alles klar, was heißt das?
Nun, ich habe hier einen modifizierten Hash-Generator namens Five ist die Art der Hash-Funktion und es gibt viele, viele Arten,
von denen Sie vielleicht gehört haben, einen Schuss auf 56 und viele andere.
Sehen wir uns mit dieser Hash-Funktion an, was passiert, wenn ich dies tue.
Hallo?
Sie sehen das sofort, und die fünf hashen diese Zeichenfolge und verwandeln sie in dieses Kauderwelsch.
Das ist, was eine Hash-Funktion macht, wir geben ihr eine Eingabe und die Funktion generiert ein zufälliges Muster.
Jetzt gibt es einige wichtige Aspekte von Hash-Funktionen.
Erstens ist es ein Weg.
In dem Sinne, dass, wenn ich jemandem dies gebe, er keine Ahnung hat, was der Input war und es für mich praktisch
unmöglich ist, eine Ahnung davon zu haben, was der Input ist.
Die zweite ist, dass egal wie oft ich hallo hineingebe, es wird dasselbe sein.
Aber sobald ich eine Sache ändere, ändert sich die Ausgabe komplett.
Wenn ich zurück zu hallo und.
Sieh zu, wie ich einfach zu Großbuchstabe H wechsele, sogar Großbuchstabe, also fängt es mit fünf D vier an, wenn
ich Großbuchstaben H mache, ist es wieder ganz anders.
Und wenn wir uns das anschauen, können wir zumindest sagen, hmm, ich weiß nicht, wofür das nützlich ist, aber das Einzige, was ich
weiß, ist, dass es egal was passiert, wenn ich den gleichen Input gebe, wird es geben mir das
gleiche Ergebnis.
Aber ich habe keine Ahnung, wie ich das wieder in hallo umwandeln kann.
Das nennen wir unabhängig oder unabhängig, es gibt verschiedene Aussprachen, ich bin mir nicht sicher, welche, aber
es ist eine schicke Art zu sagen, dass eine Funktion bei einer Eingabe immer die gleiche
Ausgabe ausgibt.
Der einzige Vorteil und der Grund, warum wir dies und eine Datenstruktur verwenden möchten, besteht
darin, dass wir einen wirklich schnellen Datenzugriff erhalten, da ich nur Graps oder Baskett DOT Graps finden muss, um Graps in so etwas wie einen leeren Fünfer-Hash
zu übergeben.
Es generiert diese Nummer für mich und ich weiß sofort, wo sie sich in meinem Speicher auf unserem Computer befindet.
Aber das sieht nicht nach einer Adresse aus, oder?
Technisch gesehen wird eine Hash-Funktion, die wir für Hash-Tabellen verwenden, greifen, eine Art
Kauderwelsch erzeugen und dann in eine Indexbasis oder eine Adressbasis konvertieren, die auf dieser Zahl basiert.
Sehen Sie, im Gegensatz zu einem Rennen, bei dem wir gerade Indizes mit Hash-Tabellen bestellt hatten, müssen wir ihm nur einen Schlüssel geben, und wir
wissen genau, wo sich dieses Element in unserem Gedächtnis befindet.
Aber Sie fragen sich vielleicht, diese Blackbox-Hash-Funktion verlangsamt die Dinge nicht?
Denn jedes Mal wollen wir eine Immobilie hinzufügen.
Und ein Wert Trauben und zehntausend zu einer Hash-Tabelle, wir müssen ihn durch die Hash-Funktion laufen lassen, damit wir entscheiden können,
wo wir ihn im Speicher ablegen.
Und wenn Sie das bemerkt haben, gute Arbeit, das ist ein wichtiger Faktor.
Sie möchten nicht, dass dies sehr lange dauert, denn jedes Mal, wenn Sie eine Eigenschaft zum Speicher
hinzufügen oder eine Eigenschaft aus dem Speicher abrufen, senden wir beide Male die Schlüsseltrauben in die Hash-Funktion an finde
heraus, woher du es bekommst.
Wir brauchen das wirklich, wirklich schnell.
Und unter der Haube, denken Sie daran, weil Hash-Tabellen in allen Sprachen existieren, werden sie mit
einer optimalen Hash-Funktion implementiert, die wirklich, sehr schnell ist.
Als Randnotiz.
Hashfunktionen wie Shot to 56 brauchen sehr lange, um einen Hash zu generieren.
Und es ist eine übermäßig komplexe Hashing-Funktion, die häufig an Orten wie der Kryptographie verwendet wird, an
denen dies länger dauern soll, aber das ist nicht Gegenstand dieses Kurses.
Wenn Sie interessiert sind, empfehle ich Ihnen, die Unterschiede zwischen diesen beiden zu überprüfen.
Um es zu überprüfen, haben wir einen Schlüssel, der Graps ist, wir senden ihn durch eine Hash-Funktion, die etwas
wirklich, sehr schnell hashen wird, und dann abbilden, was auch immer der Hash herauskommt, in eine Speicheradresse, wo wir
unseren speichern möchten.
Die Daten sind Graps 10000.
Und wenn es um Hashing-Funktionen geht, überlassen Sie dies normalerweise dem Framework oder
der Sprache, die Sie verwenden, und wir gehen normalerweise von einer Zeit-, Komplexitäts- oder Bigo-Notation einer Eins aus, weil dies sehr schnell
geschieht.
Gut.
Nachdem wir nun verstanden haben, was diese Blackbox macht, wollen wir ein bisschen mehr über Hash-Tabellen sprechen, warum sie
nützlich sind und warum sie in einigen Fällen besser sind als iRace.