Immer wieder ist es notwendig, zwei Strings miteinander zu vergleichen und festzustellen, wie ähnlich sie sich sind. Hierzu gibt es verschiedene Möglichkeiten, z. B. könnte man einfach die Länge beider Strings vergleichen oder ob sie die gleichen Buchstaben enthalten. Etwas komplizierter wird es, wenn man der Reihenfolge der Buchstaben eine Bedeutung zumisst. Dann könnte man prüfen, ob es eine Sequenz von Buchstaben gibt, die in beiden Strings in der gleichen Reihenfolge vorkommen. Die längste dieser Sequenzen ist die Longest Common Subsequence. Oder man überlegt sich, wie viele Editier-Operationen (Einfügen, Löschen, Ersetzen) notwendig sind, um aus dem ersten String den zweiten zu erzeugen. In diesem Artikel geht es um diese Algorithmen. weiterlesen
Kategorie: Algorithmen
Vorstellung von Algorithmen.
Splay Tree
Mich interessieren insbesondere Algorithmen, die adaptiv reagieren, d. h. sich den Anforderungen anpassen können. Hierzu zählen nicht nur Neuronale Netze sondern auch die Verarbeitung von Datenmengen, zu denen auch der Splay Tree gehört. weiterlesen
Hashing
Es gibt bereits viele Implementierungen von Hash-Tabellen, jedoch leiden viele darunter, dass das häufige Löschen von Einträgen zu einer deutlichen Performance-Verschlechterung führt. Deshalb habe ich einen Algorithmus aus dem Jahr 1989 genommen, um eine eigene Implementierung in Scala zu erstellen. Beschrieben wird der Algorithmus im Journal of Algorithms, Volume 10, 1989 im Artikel Hash table collision resolution with direct chaining von Gary D. Knott und Pilar De La Torre. weiterlesen
Heap / Heapsort
Ich möchte meinen ersten Beitrag über eine alte Datenstruktur namens Heap schreiben. Die bekannteste Anwendung ist sicherlich der Heapsort-Algorithmus, jedoch gibt es noch andere Einsatzgebiete, auf die ich eingehen werde. weiterlesen