metzgore
Ensign
- Registriert
- Sep. 2011
- Beiträge
- 179
Hallo,
wir nehmen zur Zeit Algorithmen und deren Komplexität durch. Das Thema Hashtables und deren Komplexität verwirrt mich etwas.
Beispiel: Man hat eine Hashtable, die Kollisionen durch Verkettung auflöst. Allgemein wird in der Literatur gesagt, dass die Hashtable dann für das Einfügen eines neuen Datensatzes im worst-case eine Zeit von O(1) benötigt, also konstante Zeit. Das Suchen und Löschen benötigt im worst-case O(n). Das Suchen und Löschen ist mir klar, da im worst-case alles auf eine Position und somit in eine Liste gehasht wird.
Wieso ist aber der worst-case fürs Einfügen O(1)?
Ich habe da zwei Theorien:
Erstens könnte es sein, dann man doppelt-verketteten Listen arbeitet, die ja Einfügungen in O(1) durchführen können.
Es könnte aber auch sein, dass man eine einfach-verkettete Liste hat und den neuen Datensatz immer am Anfang einfügt.
Die Literatur, die ich gelesen habe, spricht immer nur von verketteten Listen, aber nie genau davon, wie das eigentlich genau funktioniert und was da gemacht wird in der Implementierung.
Ist eine meiner beiden Theorien richtig? Oder gibt es da noch andere Wege?
wir nehmen zur Zeit Algorithmen und deren Komplexität durch. Das Thema Hashtables und deren Komplexität verwirrt mich etwas.
Beispiel: Man hat eine Hashtable, die Kollisionen durch Verkettung auflöst. Allgemein wird in der Literatur gesagt, dass die Hashtable dann für das Einfügen eines neuen Datensatzes im worst-case eine Zeit von O(1) benötigt, also konstante Zeit. Das Suchen und Löschen benötigt im worst-case O(n). Das Suchen und Löschen ist mir klar, da im worst-case alles auf eine Position und somit in eine Liste gehasht wird.
Wieso ist aber der worst-case fürs Einfügen O(1)?
Ich habe da zwei Theorien:
Erstens könnte es sein, dann man doppelt-verketteten Listen arbeitet, die ja Einfügungen in O(1) durchführen können.
Es könnte aber auch sein, dass man eine einfach-verkettete Liste hat und den neuen Datensatz immer am Anfang einfügt.
Die Literatur, die ich gelesen habe, spricht immer nur von verketteten Listen, aber nie genau davon, wie das eigentlich genau funktioniert und was da gemacht wird in der Implementierung.
Ist eine meiner beiden Theorien richtig? Oder gibt es da noch andere Wege?