AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Splaytree-Animation
Thema durchsuchen
Ansicht
Themen-Optionen

Splaytree-Animation

Ein Thema von Delphi-Laie · begonnen am 9. Dez 2013 · letzter Beitrag vom 10. Dez 2013
Antwort Antwort
Delphi-Laie
Registriert seit: 25. Nov 2005
Hallo Leute!

Bei der Suche nach neuen Sortieralgorithmen für mein Sortieranimationsprogramm stieß ich auf Splaysort, dessen orginalen C(++?)-Quelltext nach Delphi zu übersetzen ich letztlich scheiterte (an einer Stelle nicht beseitigbares unterschiedliches Verhalten, auch beim Debuggen).

Später jedoch stieß ich dann aber doch noch auf Delphi-Quelltext, und zwar für die Animation von Splaytrees (Einfügen, Löschen, Suchen....):

http://splaytree.sourceforge.net
http://sourceforge.net/p/splaytree/code/HEAD/tree

Um mich nicht mit fremden Federn zu schmücken: Der weitaus allergrößte Teil des hier vorgestellten Programmes entspricht dem (wahrscheinlich von slowakischen Programmautoren stammenden) Original. Von mir kommen im wesentlichen nur alle deutschsprachigen Bedienelemente, die dazu dienen sollen, das Animationspotential des Originalprogrammes stärker auszureizen und die Leistungsfähigkeit, aber auch Grenzen (Entartung bei bestimmten Dateneingabereihenfolgen) der Splaytrees besser aufzuzeigen.

Anhand der Funktionen "kleinstes Element löschen" und "größtes Element löschen" in Kombination mit "Anzahl zu löschender Elemente -> alle" sollte zudem klarsein, wie diese baumförmige Datenstruktur auch als Grundlage des Sortierens benutzt werden kann.


Viel Spaß und viele Grüße

Delphi-Laie

Edit 1: Kleine Verbesserung mit weniger Steuerelementen, Wurzel jetzt direkt löschbar.
Angehängte Dateien
Dateityp: 7z SplayTree.7z (456,5 KB, 36x aufgerufen)

Geändert von Delphi-Laie (10. Dez 2013 um 09:04 Uhr)
 
Furtbichler
 
#2
  Alt 9. Dez 2013, 21:11
Nett, aber vom Suchverhalten eher ein binärer Baum, oder?
  Mit Zitat antworten Zitat
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#3
  Alt 9. Dez 2013, 21:39
Meine ich auch, deshalb hier - nach meinen dezenten Erweiterungen - und im Delphiforum (Entwicklerecke) veröffentlicht.

aber vom Suchverhalten eher ein binärer Baum, oder?
Frag mich was leichteres, ich bin kein Informatiker. Jetzt mit flüchtig angelesenem (Internet-, vor allem Wikipedia-)Wissen aufzuschneiden, ist nun wirklich nicht mein Ding (dort wird das jedenfalls als binär bezeichnet). Interessant finde ich allerdings, daß diese Bäume entarten können, das ist hier wunderbar zu sehen - dafür eben keine automatische Balancierung.

Für mich ist das nur ein (steiniger) Weg zu einem weiteren Sortieralgorithmus (der allerdings nicht so schön animiert sein wird). Ich bin als Hobbyprogrammierer schon "stolz wie Oskar", weil ich die Graphikausgabefunktionen "abschälen" und den Quelltext nunmehr sogar Delphi-2.0-kompatibel machen konnte (statt overload einfach nur verschiedene Routinebezeichnungen verwenden).

Insofern wäre es sogar ganz lässig, dieses Programm um andere Baumstruktur(algorithm)en zu erweitern. Doch momentan bin ich mit meinem Sortierkino noch gut beschäftigt, und danach wartet eigentlich etwas anderes.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#4
  Alt 9. Dez 2013, 23:44
Bin nicht so firm, beim Sortieren und wenn ich ehrlich bin, dann bau ich meistens einfach nur 'nen Bubbletea-Sort ein. (ist einfach, man kann nichts falsch machen und war mit bisher meistens schnell genug)

Ein paar Anchors könnten nicht schaden.

Und daß die GUI bei den Animationen einfriert ist nicht sonderlich gut.
- 10 Zufallswerte und Windows meint schon, daß die Anwendung nicht reagiere ... ich hatte beim ersten Mal allerdings 50 einfügen wollen und hab dann den Taskmanager benutzt, als mich die Lust verließ.

Geändert von himitsu (10. Dez 2013 um 00:03 Uhr)
  Mit Zitat antworten Zitat
Namenloser

 
FreePascal / Lazarus
 
#5
  Alt 9. Dez 2013, 23:51
Irgendwie finde ich, es sieht leicht unheimlich aus, wie der Baum sich bewegt .

Aber sonst ganz cool, auch wenn ich nicht weiß, was genau die Vorteile eines Splay-Baums sind.

Ich hatte so ein ähnliches Programm vor ein paar Monaten für (a,b)-Bäume gemacht (welche, wenn ich das richtig verstanden habe, eine Verallgemeinerung von B+-Bäumen sind). War allerdings nur für mich zum Debuggen und nicht so schön animiert

Edit @himitsu: Falschen Blog verlinkt? Sehe weder zu Bubblesort noch noch zu Bubbletea einen Zusammenhang.

Geändert von Namenloser (10. Dez 2013 um 00:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#6
  Alt 10. Dez 2013, 00:11
PS: Bis Delphi 2 ist mir dann doch zuviel, da ich auf einige Fearures nicht verzichten mag.
Bis Delphi 4 hatte ich mal gemacht, auch wenn ich mir vor knapp 3 Jahren das fehlende D3 gekauft hatte, was mir noch fehlte, aber auch D4 war schon hart genug.

Bis Delphi 7 schon länger das Maximum (und nur wenn es unbdingt sein muß, dann auf Anfrage mehr), aber meistens ist wird als Minimum D2006/TDE supportet.
> vorallem Conditional-Expressions und paar Record-Spielereien

Geändert von himitsu (10. Dez 2013 um 00:20 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
 
#7
  Alt 10. Dez 2013, 07:47
Frag mich was leichteres
Wie gehts?
Zitat:
ich bin kein Informatiker.
Nur das Ergebnis zählt (ja, der Weg auch).

Das ist ein Binärbaum, der 'einfach' das zuletzt gesuchte Element als neue Wurzel bzw. Top-Element speichert und dadurch den Baum umformt. Das führt dazu, das oft benötigte Elemente tendentiell weiter oben liegen, was zu einer 'Suchoptimierung' führt.

Als Sortieralgorithmus dürfte sich das imho nicht lohnen, denn beim Sortieren wird zwar oft verglichen, aber selten direkt gesucht. Aber ich lasse mich gerne eines Besseren belehren.
  Mit Zitat antworten Zitat
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#8
  Alt 10. Dez 2013, 08:56
Frag mich was leichteres
Wie gehts?
Blendend, nachdem ich bei der "Extraktion" des eigentlichen Algorithmus und Quellcodevereinfachung weit vorangeschritten bin.

Als Sortieralgorithmus dürfte sich das imho nicht lohnen, denn beim Sortieren wird zwar oft verglichen, aber selten direkt gesucht. Aber ich lasse mich gerne eines Besseren belehren.
Lohnen? Für mein Sortieranimationsprogramm lohnt sich jeder Algorithmus. Und wenn die Arbeitsweise dabei nicht offensichtlich wird, dann erlaubt das zumindest doch eine erste Abschätzung der Geschwindigkeit (wenn auch keine sichere "gefühlte" Zuordnung zur Komplexitätsklasse, s. z.B. Select(ion)sort (das läuft bei mir schnell, ist aber dennoch O(n^2)).

Splaysort benötigt, wie die anderen, auf dynamischen Speicherstrukturen beruhenden Algorithmen (in die eingeordnet und aus denen gelesen wird), reichlich zusätzlichen Speicher, ist also ex situ, allerdings von der Geschwindigkeit her O(n*log(n)). Erste "ungraphische" Ergebnisse scheinen das zu bestätigen.

Geändert von Delphi-Laie (10. Dez 2013 um 08:58 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

 
Delphi 10.1 Berlin Starter
 
#9
  Alt 10. Dez 2013, 09:03
Und daß die GUI bei den Animationen einfriert ist nicht sonderlich gut.
- 10 Zufallswerte und Windows meint schon, daß die Anwendung nicht reagiere ... ich hatte beim ersten Mal allerdings 50 einfügen wollen und hab dann den Taskmanager benutzt, als mich die Lust verließ.
Ja, das dürfte jenseits des Windows XP (aufsteigend) der Fall sein. Das Programm ist wohl graphikseits nicht optimiert worden (synchronize & Co.), das werde aber ich nicht tun bzw. schaffen. So ist die Ausgabe der laufenden Zählvariable nunmehr in ein "disgeabeltes" Editfeld verpackt, nicht sehr elegant. Grund: Vorher war es ein Label mit Refresh. Das führte zum "Weißzeichnen" des Formulares, vermutlich, weil Label direkt auf das Formular schreibt.

Geändert von Delphi-Laie (10. Dez 2013 um 15:25 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:34 Uhr.
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