.| Autor | Beitrag |
|---|---|
|
000 31.12.2001, 14:36 thinktank |
Nein nicht HaSch, sondern Hash :) Was ist ein Hash ? Ich hab irgendwo gelesen, dass das irgendein Wert ist mit dem man einen Index machen kann, aber verstanden hab ich das nicht :). --Dieser Beitrag wurde am 31.12.2001 um 14:36 von thinktank bearbeitet. |
|
Profil || Suche |
|
001 31.12.2001, 17:39 Sccar |
afaik ist eine hash ein array, bei dem die einzelnen elemente name haben, statt nur index nummern. guten rutsch übrigens sccar --...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron} |
|
Profil || Suche |
|
002 31.12.2001, 19:14 Tron |
@Sccar: ziemlich weit daneben @thinktank: also angenommen du hast eine liste mit namen und telefonnummern jetzt hast du eine telefonnummer und willst rausfinden, zu wem die gehoert wenn es eine (nach tel-nummern) sortierte liste ist dauert es mit binaerer suche O(ld(n)) ld = logarithmus dualis, logartithmus zur basis 2 fuer eine hashtabelle brauchst du erstmal etwas vorarbeit... jetzt baust du die eigentliche hashtabelle: es kann auch vorkommen, dass 2 tel-nummern den selben hash erzeugen, dann muss 'sondiert' werden, das heisst nach einem bestimmten schema vershoben, aber das waere jetzt zu kompliziert... fertig! ich hoffe das war einigermasen verstaendlich und hilfreich... --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
003 31.12.2001, 19:32 blair |
Bei hash sucht man halt nicht, sondern findet. (Wie mein info lehrer sagen würde) --because our freedom sits at the end of a gun |
|
Profil || Suche |
|
004 31.12.2001, 23:40 Tron |
hmm... keine schlechte definition (; --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
005 01.01.2002, 19:56 thinktank |
mkay , soweit einigermaßen verstanden, aber was ist O ( ) ? Jedenfalls ist das ziemlich praktisch :). Nur um zu checken, ob ichs kapiert hab : Also wir nehmen mal an, dass die gesuchte Tel.-Nummer = 112 ist. die Hashfunktion : int Telefonnummern[32]; char* hasharray[32]; int hash(int nummer) void CreateHashTable( void ) char* GetNameByTelNumber(int number) void main() Ausgabe : Feuerwehr :D Geht das so ? :) Ok, ich werde den Standard Container hash_map beim nächsten Mal benutzen :). --Dieser Beitrag wurde am 01.01.2002 um 20:02 von thinktank bearbeitet. |
|
Profil || Suche |
|
006 02.01.2002, 01:20 Kriz |
@Tron: Nicht immer mit wilden Begriffen um sich schmeißen, die die anderen nicht auf Anhieb kapieren. Das ist dann nämlich ein sehr schlechter Erklärstil =) @Thinktank: Das O() ist eine - sagen wir mal - fiktive Funktion, mit der man besonders in der Informatik den Aufwand eines Algorithmus berechnet. Mit Aufwand meint man hier meistens die theoretische Dauer eines Algorithmus, ehe das gewünschte Ergebnis verfügbar ist. Theoretisch daher, weil der Algorithmus auf einer 8068er CPU erheblich länger dauern könnte als auf einem Pentium IV. Wenn man also anhand eines Algorithmus den Aufwand O(2n) rausbekommt - infolge der mathematischen Grundlage des Algorithmus - dann beträgt der Aufwand genau 2*n, wobei n die Anzahl der auszuführbaren Schritte darstellt. Man strebt eigentlich immer einen Aufwand von O(1) an (O(0) ist eigentlich unmöglich, da ja selbst eine simple Addition in seiner Gesamtheit genau 1 Schritt ist). Ungünstig sind exponentielle Aufwände wie O(n²) oder noch schlimmer wie O(2^n) usw. Dann wird bei zunehmender Dauer des Algorithmus der Aufwand zur Berechnung des Ergebnisses naehzu unwirtschaftlich, wenn nicht gar unmöglich. Das betrifft vor allem den Zeitaufwand und die Kapazität der verfügbaren Ressourcen der Hardware (wie RAM oder HD-Platz). Ein simples Beispiel wäre hier die RSA-Verschlüsselung, die auf Primzahlen basiert (den Algorithmus will hier jetzt nicht aufführen). Zum Knacken eines RSA-Schlüssels mit maximaler Schlüsselgröße müßten zum heutigen Zeitpunkt alle Computer der Welt ihre Rechenleistung zusammenlegen und dann viele Millarden Jahre rechnen, was einen Aufwand darstellt, der nicht vertretbar ist. Zum HASH-Problem noch ein paar Worte: Es gibt eigentlich 2 grundlegende Probleme bei Hash-Algorithmen: - Wie behandelt man Kollisionen? Bei der ersten Frage gibt es drei Möglichkeiten: - Die externe Verkettung (Separate Chaining) Bei der zweiten eigentlich nur zwei zu erreichende Ziele: - Schnelle Berechenbarkeit Du solltest Dir ein schlaues Algorithmenbuch für deine Sprache zulegen (z.B. die Bücherreihe vom Papst der Algorithmen, Prof. Sedgewick) und mal die Suchmaschinen zu den obigen Begriffen quälen, denn wenn ich jetzt anfangen würde, die ganzen Methoden des Hashings darzulegen... nee nee =) Cu --K:R-I)Z++ |
|
Profil || Suche |
|
007 02.01.2002, 18:56 Tron |
@Kriz: 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
008 03.01.2002, 16:58 Prefect |
Hrhr. Kriz beschuldigt andere dessen, was er selbst tut. Was bitte ist externe / interne Verkettung? Ich hab jetzt aber keine Lust danach zu suchen. Womöglich hab ich das alles selber schon verwendet, ohne es zu wissen ;) cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
009 03.01.2002, 18:07 apfelkorn |
öhm.... hilfö? -- |
|
Profil || Suche |
|
010 06.01.2002, 12:22 thinktank |
Hmmm , kommt mir irgendwie bekannt vor :) . Ist fast so was wie der Wirkungsgrad in der Physik. Muss mich dann halt durch die Suchmaschine quälen :). -- |
|
Profil || Suche |

