![]() |
AW: Doppel schnell aus Lise löschen.
Das Verhalten von Capacity und blockweiser Vergrößerung ist doch bereits im TList eingebaut?
PS: TList.Insert Zitat:
|
AW: Doppel schnell aus Lise löschen.
Zitat:
|
AW: Doppel schnell aus Lise löschen.
Das soll doch analog AddStrings sein. Die Zeile muß natürlich raus. :)
|
AW: Doppel schnell aus Lise löschen.
Ok. Die Sleep-Anweisungen von Himitsu rein und dafür die Abfrage, ob es etwas zu tun gibt, raus.
|
AW: Doppel schnell aus Lise löschen.
Hab ich schon eingebaut. Sonst wäre mein Software ja so schnell wie "richtige" Software. :mrgreen:
|
AW: Doppel schnell aus Lise löschen.
Du bist einfach der Software-Gott.
|
AW: Doppel schnell aus Lise löschen.
Ich muss eure Euphorie leider trüben. Die Methode von Dejan Vu liefert unter Umständen falsche Ergebnisse.
Stellt euch mal folgende Punktkonstellation vor:
Code:
Die Koordinaten sind z.B. A(10.0, 2.0), B(10.001, 2.0), C(10.0, 5.0). A und B sollen im Rahmen des Epsilons als identisch gelten.
A B
C Wenn du das jetzt lexikographisch nach sortierst (nach der X-Koordinate zuerst), dann kommt die Reihenfolge A, C, B heraus. A und B werden also nie als Duplikate erkannt, weil sie nach der Sortierung nicht hintereinander stehen. Das funktioniert leider so nur im Eindimensionalen. Im Mehrdimensionalen braucht man andere Indexstrukturen, wie K-d-Bäume. Genau für solche Anwendungsfälle, wie die nächsten Nachbarn eines Punktes suchen, wurden die erfunden. |
AW: Doppel schnell aus Lise löschen.
Zitat:
|
AW: Doppel schnell aus Lise löschen.
Zitat:
Edit: Vergiss es. Genasu so falsch.. Hast du ein Beispiel für K-d-Bäume? |
AW: Doppel schnell aus Lise löschen.
Ich habe leider kein Beispiel dafür. Es muss aber auch kein K-d-Baum sein, es gibt ja noch andere mehrdimensionale Indexstrukturen.
Die einfachste wäre hier denke ich die Hashmap-Lösung. Im Grunde ist die Idee, dass man ein grobes Raster über die Punkte legt, und pro Kästchen abspeichert, welche Punkte darin liegen:
Code:
(Sorry, die DP zerstört mal wieder das Layout, aber ich denke es ist klar, wie es gemeint ist.)|-----|-----|-----|--- |x | | | | | | | |-----|-----|-----|--- | | xx | | | | | | |-----|-----|-----|--- | | | x| | x|x | | |-----|-----|-----|--- Dann muss man, um „identische“ Punkte zu finden, nur noch die Punkte aus dem gleichen Kästchen und aus den 8 Nachbarkästchen überprüfen. Im Grunde braucht man nicht mal eine Hashmap, sondern ein einfaches 2D-Array tut es auch, ist nur u.U. weniger speichereffizient, wenn es größere, Bereiche gibt, die leer stehen. Ein genereller Nachteil dieser Lösung ist, dass man die Kästchengröße irgendwie von Hand tunen muss. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz