AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Breitensuche oder doch lieber ein anderer Algo
Thema durchsuchen
Ansicht
Themen-Optionen

Breitensuche oder doch lieber ein anderer Algo

Ein Thema von Flogo · begonnen am 13. Dez 2004 · letzter Beitrag vom 14. Dez 2004
 
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Breitensuche oder doch lieber ein anderer Algo

  Alt 13. Dez 2004, 23:22
Für den allgemeinen Fall dürfte das die beste Möglichkeit sein. Soll heissen: Wenn du keine Randbedingungen sicher hast (z.B. einen maximalen Radius in dem sich, und auch nur DAS nächste Element befinden MUSS), dann wirst du kaum eine andere Chance haben.
Auch so Spielchen wie: Erst jeden 2. testen, bei Misserfolg dann doch mit voller Auflösung scannen sind dann leider nicht mehr drin, da du ja das tatsächlich nächste im 1. Lauf verpassen könntest.

Aber wie wäre es, wenn du im Vorfeld das gesamte Array elementweise durchgehst, und dir eine Art "Karte" baust? Also eine Sammlung aller Koordinaten die nicht nil sind. Dann kannst du via Vektorlängenberechnung von einer Koordinate auf den nächsten Treffer schließen ohne groß zu suchen (zumindest vermeidest zu leere Elemente, ist die Frage wie viel schneller das ist als ein paar sqr(t)s. Hängt davon ab welche Feldart häufiger ist!).
Allerdings ist das für dynamische Systeme wieder nicht so irre gut, da du deine "Karte" ständig up to date halten musst. Wenn du allerdings zum Zeitpunkt der Zuweisung eines Elementes seine Koordinaten kennst, dann lässt sich so eine Karte sehr leicht erstellen! Dann fällt das gesamte Scanning weg.

Und wenn du dann noch massig Speicher "verschwenden" willst, so könntest du gleich zu jedem Element a) seinen nächsten Nachbarn speichern (achtung: die verweisen natürlich immer gegenseitig auf sich!), oder gar b) zu jedem Element alle Entfernungen zu allen anderen Elementen. Dann ließe sich (bei b) auch A* bzw. Bestensuche gut einsetzen.

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 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