Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Index bei Like (https://www.delphipraxis.net/177965-index-bei-like.html)

Namenloser 11. Dez 2013 01:19

AW: Index bei Like
 
Zitat:

Zitat von Furtbichler (Beitrag 1239242)
Zitat:

Zitat von Namenloser (Beitrag 1239183)
Vielleicht eine Hashmap und die einzelnen Buckets noch mal sortiert? Dadurch hat man eine bessere Worst-Case-Laufzeit als bei einer „normalen“ Hashmap.

... Bucketsort wird beim -on-the-fly- 'indizieren' verwendet, um kleinere Datenmengen zu sortieren und dadurch ein besseres Ergebnis zu erzielen. Eine Hashmap hat erst einmal keine Buckets, weil nicht klar ist, wie die Hashmap umgesetzt wurde (open hashing vs. separate chaining). Falls sie als separate chainging umgesetzt wurde, sind die einzelnen 'Buckets' bereits sortiert.

Meistens wird Separate Chaining verwendet. Und nein, da sind die Einträge normalerweise nicht sortiert, weil das bei einer verketteten Liste auch gar keinen Sinn ergeben würde: Auf einer verketteten Liste kann man keine binäre Suche durchführen. Neue Elemente werden einfach unsortiert am Anfang der Liste eingefügt.

Und von Bucketsort war überhaupt nicht die Rede...?
Zitat:

Zitat von Furtbichler (Beitrag 1239242)
PS: Bei PHP wurde offenbar eine Hashmap mit fester Größe verwendet. Die Problematik kann durch eine dynamische Hashmap vermieden werden. Diese würde ihre Größe ggf. (zu viele Kollisionen) einfach verdoppeln. Da dadurch die Hashfunktion verändert wird, sollten die Angriffe ins Leere laufen.

Je nach Hashfunktion ist es durchaus möglich, dass die Elemente immer noch im selben Bucket landen, egal in welcher Größe die Hashmap (neu-)angelegt wird. Dass die Hashmap von PHP eine konstante Größe hat, kann ich mir ehrlich gesagt auch nicht vorstellen.

Furtbichler 11. Dez 2013 07:16

AW: Index bei Like
 
Zitat:

Zitat von Namenloser (Beitrag 1239380)
Meistens wird Separate Chaining verwendet. Und nein, da sind die Einträge normalerweise nicht sortiert, weil das bei einer verketteten Liste auch gar keinen Sinn ergeben würde

:thumb: Autschn. Self-Fail :oops:

Zitat:

Zitat von Namenloser (Beitrag 1239380)
Je nach Hashfunktion ist es durchaus möglich, dass die Elemente immer noch im selben Bucket landen, egal in welcher Größe die Hashmap (neu-)angelegt wird.

Na.. eher nicht:

Hashmap hat X Einträge (X=Prim). Hashfunktion = F(Key) Mod X.
Bei Vergrößerung auf Y Einträge (Y=Prim und ca. X*2) ist die Funktion F(Key) Mod Y.

Da dürften nicht die gleichen Kollisionen auftreten... Aber da bin ich kein Spezi.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz