Parallelisierung des Levenshtein Algorithmus

Größe: px
Ab Seite anzeigen:

Download "Parallelisierung des Levenshtein Algorithmus"

Transkript

1 Köln, den 30. August 2014 Studiengang Informationsverarbeitung Sommersemester 2014 Sprachliche Informationsverarbeitung Hauptseminar: Angewandte Linguistische Datenverarbeitung bei Prof. Dr. Jürgen Rolshoven Parallelisierung des Levenshtein Algorithmus vorgelegt von: Alena Tabea Geduldig

2 Inhalt 1 Einleitung Die Editierdistanz Der Levenshtein Algorithmus Das Prinzip der Dynamischen Programmierung Zerlegung des Problems in Teilprobleme Lösung der kleinsten Teilprobleme Schrittweise Lösung des Gesamtproblems 7 3 Datenparalleles Rechnen auf der GPU OpenCL und Aparapi Datenparallelisierung des Levenshtein Algorithmus Anwendungsvariante 1: Editierdistanz vollständiger Dokumente Parallelisierungsstrategie Anwendungsvariante 2: Editierdistanz auf Wortebene Parallelisierungsstrategie.14 5 Laufzeitvergleich Laufzeitvergleich der dokumentbasierten Anwendungsvariante Laufzeitvergleich der wortbasierten Anwendungsvariante Fazit Literaturverzeichnis... 23

3 1 Einleitung Die vorliegende Hausarbeit baut auf das im Wintersemester 2011/2012 gehaltene Referat zum Thema Stringvergleich in der Computerlinguistik und Bioinformatik auf. Dort wurde ein in beiden Wissenschaftsbereichen angewendetes Maß zum Vergleich von Zeichenketten vorgestellt: Die Editierdistanz. Die Editierdistanz ist ein Maß für die Ähnlichkeit beziehungsweise Unähnlichkeit zweier Strings. Sie fällt damit in den Bereich des approximativen Matchens, also den Teilbereich der Stringverarbeitung, der die Ermittlung ähnlicher, aber nicht notwendigerweise identischer Zeichenketten zum Ziel hat. Das Ziel des approximativen Matchens lässt sich wie folgt charakterisieren: approximate matching problem Erkenne, finde und toleriere Zeichenketten, die einer gegebenen Zeichenkette weitgehend ähnlich sind und zwar unabhängig davon, worin die Abweichung von der Gleichheit besteht und wo sie im String lokalisiert ist. (vgl. Wegst 2006) Diese Zielsetzung setzt ein adäquates Maß für die Bewertung der Ähnlichkeit oder Unähnlichkeit von Strings voraus. In welchem Sinne adäquat in diesem Zusammenhang zu verstehen ist, wird zu Beginn dieser Arbeit erläutert und schließlich die Editierdistanz als ein geeignetes Maß für den Stringvergleich vorgestellt. Der Schwerpunkt dieser Arbeit liegt auf dem Algorithmus mit dem die Editierdistanz zweier Strings maschinell berechnet wird. Der Levenshtein Algorithmus liefert zu je zwei Zeichenketten die zugehörige Editierdistanz. In der Praxis wird der Algorithmus oft auf sehr großen Datenmengen angewendet. Beispielsweise in der Bioinformatik, um eine Gensequenz mit allen Gensequenzen einer Datenbank zu vergleichen. In der Computerlinguistik wird der Algorithmus unter anderem zur automatischen Rechtschreibkorrektur herangezogen. Bei einer manuellen Texteingabe, beispielsweise in eine Suchmaschine, kann die Editierdistanz dazu verwendet werden, dass neben identischen Treffern auch grammatisch oder phonetisch ähnliche Wörter berücksichtigt werden. In diesem Anwendungsfall muss der Levenshtein Algorithmus sehr häufig hintereinander ausgeführt werden, jeweils aber nur auf Wortebene, also auf relativ kurzen Zeichensequenzen. Neben dem Vergleich einzelner Wörter kann die Editierdistanz auch zum Vergleich vollständiger Dokumente, beispielsweise zur Plagiatserkennung, verwendet werden. In diesem Fall wird der Levenshtein Algorithmus nur einmal ausgeführt, jedoch auf erheblich längeren Zeichenketten. Beide Anwendungsvarianten werden mit wachsender Datenmenge sehr laufzeitintensiv. Im ersten Fall liegt dies weniger an der Laufzeit einer einzelnen 1

4 Algorithmusausführung, als an der Menge der Wiederholungen. Im zweiten Fall treibt die Länge der Dokumente die quadratische Laufzeit des Algorithmus in die Höhe. In dieser Hausarbeit wird ein Versuch unternommen, der starken Laufzeitentwicklung des Levenshtein Algorithmus durch die Anwendung eines GPU-gestützten Programmierverfahrens entgegenzuwirken. Dieses Programmierverfahren hat sich innerhalb der letzten Jahre unter dem Namen General Purpose Computation on Graphics Processing Units (GPGPU) etabliert. Neben der CPU, der zentralen Recheneinheit eines Computers, wird auch die GPU, die zentrale Recheneinheit der Grafikkarte, zur Ausführung von Befehlen verwendet. Durch eine geschickte Ausnutzung ihrer hardwarespezifischen Besonderheiten soll die Grafikkarte zu einer besseren Performance laufzeitintensiver Anwendungen beitragen. Das Ziel dieser Arbeit ist es, ein Programm zu implementieren, dass die Ausführung beider der oben skizzierte Anwendungsvarianten des Levenshtein-Algorithmus ermöglicht. Hierfür wird einmal eine herkömmliche Java-Applikation entwickelt, und einmal die GPGPU unterstützende Programmiersprache OpenCL verwendet. Durch einen Laufzeitvergleich dieser funktionsgleichen Programme, soll die zentrale Frage beantwortet werden, ob, und welche Anwendung des Levenshtein Algorithmus durch GPU-Programmierung beschleunigt werden kann. 2

5 2 Die Editierdistanz Das Ziel des approximativen Matchens ist die Erkennung zueinander ähnlicher Zeichenketten. Diese Aufgabe erfordert ein Maß, mit dem die Ähnlichkeit beziehungsweise Unähnlichkeit zweier Zeichenfolgen eindeutig bestimmt werden kann. Wie könnte also ein adäquates Maß für String- Ähnlichkeit aussehen? Zu je zwei Zeichenketten sollte ein Ähnlichkeitsmaß eine eindeutige Maßzahl liefern, die den Unterschiedlichkeitsgrad der beiden Strings ausdrückt. Gesucht ist folglich eine Abbildung, die ein Paar von Strings <S 1, S 2 > auf eine Zahl abbildet. Im Falle eines Distanzmaßes sollten zueinander ähnlichere Strings auf eine niedrigere Zahl abgebildet werden, als deutlich verschiedenere Strings. (Bei einem Ähnlichkeitsmaß gilt die genau umgekehrte Anforderung). Eine weitere Anforderung an ein adäquates Distanzmaß ist, dass die Reihenfolge der beiden Strings keine Auswirkung auf den Distanzwert haben sollte. Es sollte also keine Rolle spielen, ob das Paar <S 1, S 2 >, oder <S 2, S 1 > bewertet wird, da die Ähnlichkeit von Strings unabhängig von ihrer Reihenfolge ist. Als letzte Anforderung sollte ein Distanzmaß identische Strings auf den Wert 0 abbilden. Die Editierdistanz ist ein Stringmaß, das genau diese Eigenschaften erfüllt. Sie misst die Operationen, die notwendig sind, um den ersten String in den zweiten String zu überführen. Zugelassen sind hierbei genau drei Operationen: 1. Das Löschen eines Zeichens aus S 1 (delete) 2. Das Einfügen eines Zeichens in S 1 (insert) 3. Der Austausch eines Zeichens von S 1 in ein Zeichen von S 2 (replace) Eine Folge von Operationen, die einen Strings S 1 in einen anderen String S 2 überführt, nennt man Editskript von S 1 und S 2. Hieraus ergibt sich auch die exakte Definition der Editierdistanz: Definition Die Editierdistanz des Stringpaares <S 1,S 2 > entspricht genau der Länge des kürzesten Editskriptes von S 1 und S 2.(vgl. Gusfield 1997: 216) Stimmen zwei Zeichen überein, so dass keine Operation notwendig ist, enthält das Editskript die Anweisung match (engl. Übereinstimmung), welche jedoch nicht als Operation gezählt wird. Zur Veranschaulichung ist nachfolgend ein Editskript für das Stringpaar <darling, airline> aufgeführt: E darling,airline = d,m,i,m,m,m,r 3

6 Folgt man dieser Operationsfolge nacheinander angewendet auf die einzelnen Zeichen des Wortes darling, erhält man den neuen String airline. E darling,airline ist folglich ein gültiges Editskript für dieses Stringpaar. Es hat die Länge 3, da es drei der oben genannten Operationen enthält. Da es kein noch kürzeres Editskript gibt, ist drei die Editierdistanz der beiden Strings. Der Vermerk auf ein kürzestes Editskript in der Definition der Editierdistanz weist darauf hin, dass gültige Editskripte nicht eindeutig und von unterschiedlicher Länge sein können. Mit der Länge des kürzesten Editskriptes ist die Editierdistanz jedoch eindeutig bestimmt und erfüllt somit die erste Bedingung (Eindeutigkeit) an ein adäquates Distanzmaß. Im Folgenden wird gezeigt, dass die Editierdistanz auch die weitere Anforderung (Unabhängigkeit der String- Reigenfolge) erfüllt: Um S 1 in S 2 zu überführen ist sicherlich ein anderes Editskript nötig, als um S 2 in S 1 zu überführen. Beide sollten jedoch dieselbe Länge haben um die Anforderung zu erfüllen. Sei also E 1,2 ein kürzestes Editskript für <S 1,S 2 > der Länge n. Dann entspricht n der Editierdistanz von <S 1,S 2 >. Nun erhält man durch den Austausch der Operationen delete und insert auch ein Editskript für das Paar <S 2,S 1 > das ebenfalls die Länge n hat. Gäbe es ein noch kürzeres Editskript für das Paar <S 2,S 1 >, etwa der Länge n-i, so ließe sich auch daraus, durch den Austausch der Operationen delete und insert ein Editskript für <S 1,S 2 > erzeugen. Dieses hätte jedoch auch die Länge n-i, was im Widerspruch zur Voraussetzung steht, das n bereits die Länge des kürzesten Editskriptes war. Folglich muss n auch bereits die Länge des kürzesten Editskriptes von <S 2,S 1 > sein, womit die Anforderung erfüllt ist. Dass auch die dritte Anforderung (Abbildung identischer Strings auf den Wert 0) erfüllt ist, geht unmittelbar aus der Definition hervor. Die Editierdistanz ist somit ein adäquates Distanzmaß für die Ähnlichkeit von Zeichenketten. Bisher wurde jedoch nur die Definition dieses Maßes erläutert, nicht aber wie die Editierdistanz maschinell berechnet werden kann. Mit dieser Frage befasst sich das folgende Kapitel. 4

7 3 Der Levenshtein Algorithmus Der Levenshtein Algorithmus ist benannt nach dem russischen Wissenschaftler Wladimir Lewenstein, der die Editierdistanz im Jahr 1965 einführte. Zu je zwei Zeichenketten liefert der Levenshtein-Algorithmus die zugehörige Editierdistanz. Er basiert auf dem Prinzip der dynamischen Programmierung und liefert bei Bedarf nicht nur die Editierdistanz, sondern auch alle möglichen Editskripte zweier Strings. 3.1 Das Prinzip der Dynamischen Programmierung Dynamische Programmierung ist eine algorithmische Methode zur Lösung von Optimierungsproblemen. Sie kann dann erfolgreich eingesetzt werden, wenn das zu lösende Problem in mehrere äquivalente Teilprobleme gegliedert werden kann. Löst man zunächst die kleinsten Teilprobleme optimal, so können diese zu den Lösungen der jeweils größeren Teilprobleme erweitert werden. Indem man alle Teillösungen in einer Tabelle speichert, wird dieses Prinzip fortgeführt, bis schließlich die Lösung des Gesamtproblems erreicht wird. (zur Dynamischen Programmierung siehe auch Cormen 2013: Kap. 15) Dynamische Programmierung lässt sich folglich in drei Schritte zerlegen: 1. Zerlegung des Gesamtproblems in Teilprobleme 2. Lösung der kleinsten Teilprobleme 3. Sukzessives Lösen der jeweils nächstgrößeren Teilprobleme Diese drei Schritte werden nun, angewendet auf die Editierdistanz, erläutert Zerlegung des Problems in Teilprobleme Der erste Schritt zur dynamischen Lösung eines Optimierungsproblems ist die Zerlegung in mehrere Teilprobleme. Im Fall der Editierdistanz bedeutet dies, dass die beidem Strings in alle ihre möglichen Präfixe {S 1 (0..i)} i=0-n und {S 2 (0 j)} j=0-m zerlegt werden. Als ein Teilproblem ist somit die Berechnung der Editierdistanz eines Präfixpaares zu verstehen. Des Weiteren wird eine Matrix D angelegt, in der die Zwischenlösungen, also die Editierdistanzen aller Präfixpaare gespeichert werden. Jede Teillösung hat dabei einen festen Platz in der Matrix. Abbildung 3.1 veranschaulicht diesen Vorgang für das Stringpaar <brot,not>. 5

8 Abbildung 3.1: Distanzmatrix zur Speicherung von Teillösungen zur Berechnung der Editierdistanz am Beispiel des Stringpaares <brot,not>. Jeder Matrixeintrag steht für die Editierdistanz eines Präfixpaares Lösung der kleinsten Teilprobleme Die kleinsten Teilprobleme sind im Falle des Levenshtein-Algorithmus die Distanzberechnungen der Präfixpaare, bei denen mindestens einer der beiden Präfixe dem leeren String entspricht. Die Lösungen sind trivial und ohne Rechenaufwand bestimmbar: Die Distanz eines Strings zum leeren String entspricht genau seiner Länge. Jedes Zeichen muss durch eine delete-operation gelöscht werden. Abbildung 3.2 zeigt die Distanzmatrix nach der Ausführung des ersten Teilschritts: Abbildung 3..2: Distanzmatrix nach Lösung der kleinsten Teilprobleme. 6

9 3.1.3 Schrittweise Lösung des Gesamtproblems Das Ziel dieses Schritts ist es, die Matrix nun sukzessive mit den Editierdistanzen der übrigen Präfixpaare zu füllen, so dass der Matrixeintrag D[i][j] der Distanz des Stringpaares <S 1 (1..i), S 2 (1..j)> entspricht. Dies erfolgt Zeilenweise (oder Spaltenweise) damit auf die Lösungen der jeweils kleineren Präfixpaare aufgebaut werden kann. Bei der Berechnung des Eintrages D[i][j] sind die folgenden Editskripte somit bereits bekannt: (a) Das Editskript E i-1,j von <S 1 (1..i-1), S 2 (1 j)> (Eintrag D[i-1][j ]) (b) Das Editskript E i,j-1 von <S 1 (1..i),S 2 (1..j-1)> (c) Das Editskript E i-1,j-1 von <S 1 (1..i-1), S 2 (1..j-1)> (Eintrag D[i ][j-1]) (Eintrag D[i-1][j-1]) Wie nun gezeigt wird, benötigt das gesuchte Editskript E i,j höchstens eine Operation mehr, als das kürzeste der oben aufgezählten Editskripte (a) (c): (a) Wenn E i-1,j eine Vorschrift ist, um das Präfix S 1 (1..i-1) in das Präfix S 2 (1..j) zu überführen, dann ist E i-1,j + delete auch eine Vorschrift um S 1 (1..i-1,i) in S 2 (1..j) zu überführen. delete sorgt dann genau für die Entfernung des überflüssigen i-ten Zeichens aus S 1. (b) Äquivalent dazu erfüllt auch E i,j-1 + insert die Anforderungen eines Editskripts für S 1 (1..i) in S 2 (1..j). Wenn E i,j-1 das Präfix S 1 (1..i) in das Präfix S 2 (1..j-1) überführt, dann erhält man durch ein anschließendes Hinzufügen des j-ten Zeichens von S 2 aus dem Präfix S 1 (1..i) das Präfix S 2 (1 j-1,j) (c) Um E i-1,j-1 zu dem gesuchten Editskript zu erweitern, müssen 2 Fälle unterschieden werden: 1. Das i-te Zeichen von S 1 und das j-te Zeichen von S 2 sind identisch: In diesem Fall ist keine weitere Operation mehr nötig. Das gesuchte Editskript lautet Ei-1,j-1 + match 2. Das i-te Zeichen von S 1 und das j-te Zeichen von S 2 sind nicht identisch: Das gesuchte Editskript lautet in diesem Fall Ei-1,j-1+replace. Das i-te Zeichen von S 1 wird durch das j-te Zeichen von S 2 ersetzt. Aus diesen Überlegungen ergibt sich folgende Rekursionsgleichung zur zeilenweisen Berechnung der fehlenden Matrixeinträge: 7

10 Abbildung 3.3 zeigt die vollständig berechnete Distanzmatrix mit Hilfe der Rekursionsgleichung für das Paar <brot, not>. Die gesuchte Editierdistanz befindet sich im letzten Matrixfeld D[4][3]. Abbildung 3.3: Vollständig ausgefüllte Distanzmatrix für das Stringpaar <brot, not> Bei Bedarf erhält man aus der Matrix auch die zugehörigen Editskripte. Hierfür muss ein Backwerden. (Vgl. Gusfield Trace durch die Matrix beginnend beim letzten Eintrag durchgeführt 1997: 221) Nachdem nun die Funktionalität des Levenshtein-Algorithmus erläutert wurde, werden im folgenden Kapitel die Möglichkeiten seiner Parallelisierung untersucht. Sollte sich der Algorithmus, in parallel ausführbare Berechnungen zerlegen lassen, so können diese durch die Ausführung auf einem Grafikprozessor (GPU) umgesetzt werden. 8

11 3 Datenparalleles Rechnen auf der GPU Die besondere Architektur moderner Grafikkarten ermöglicht die datenparallele Ausführung von Befehlen. Dies bedeutet, dass auf einer GPU derselbe Befehlssatz zeitgleich auf unterschiedlichen Daten ausgeführt werden kann, statt nacheinander wie auf einem CPU-Kern. Verglichen mit einer sequentiellen Ausführung, kann durch daten-paralleles Rechnen also sehr viel Rechenzeit eingespart werden. Voraussetzung ist natürlich, dass ein Algorithmus auf die datenparallele Arbeitsweise übertragbar ist ohne in seiner Funktionalität verfälscht zu werden. Die Gründe für die parallele Rechenfähigkeit von Grafikprozessoren liegen in ihrer vielkernigen Architektur. Während eine herkömmliche CPU in etwa 4 8 Kerne besitzt, verfügt eine GPU über mehrere hundert Kerne. Im Unterschied zu den Kernen einer CPU, haben GPU-Kerne keinen eigenen Befehlssatz, sondern teilen sich einen Befehlssatz und Cache mit vielen weiteren Kernen. Dies hat die folgenden Konsequenzen: Auf Grund der sehr hohen Zahl an Kernen, ist auf der GPU hochgradig paralleles Rechnen möglich, denn jeder Kern kann zeitgleich auf unterschiedlichen Daten operieren. Da sich die Kerne ihren Befehlssatz jedoch mit anderen Kernen teilen müssen, können sie zeitgleich auch nur dieselben Befehle ausführen. Dies ist auch der Grund warum nur datenparalleles und kein taskparalleles 1 Rechnen möglich ist. Zur Kommunikation mit der Grafikkarte eines Computers sind inzwischen Schnittstellen entwickelt worden, die den Austausch von Befehlen und Daten zwischen CPU und GPU ermöglichen. Zu den populärsten gehören die Schnittstellen CUDA (Compute Unified Device Language) 2, welche allein der Programmierung von Nvidia-Grafikchips vorbehalten ist und die plattformunabhängige Schnittstelle OpenCL (Open Compute Language) 3. OpenCL geht aus einer Zusammenarbeit der Firmen Apple, Nvidia, AMD, IBM und Intel hervor und wurde 2008 in einer ersten Version vorgestellt. Aus Gründen der besseren Austauschbarkeit und Reproduzierbarkeit, wurde für die Implementierungen zu dieser Arbeit die Schnittstelle OpenCL zu Grunde gelegt. Darüber hinaus wurde Aparapi 4 verwendet. Dies ist eine offene Bibliothek, die Java-Bytecode während der Laufzeit in OpenCL-Code übersetzt. 3.1 OpenCL und Aparapi 1 Beim taskparallelen Rechnen werden zeitgleich unterschiedliche, meist umfangreiche Aufgaben ausgeführt. 2 zuletzt aufgerufen am zuletzt aufgerufen am zuletzt aufgerufen am

12 Eine OpenCL-Anwendung lässt sich unterteilen in ein Host-Programm und ein Kernel- Programm. Das Host-Programm läuft auf der CPU und regelt von dort aus den Programmfluss. Von hier aus wird die Schnittstelle OpenCL initiiert und die Kommunikation mit der GPU durchgeführt. Ein Kernel ist der Teil der Anwendung, der für die Ausführung auf der GPU bestimmt ist. Wird ein Kernel zur parallelen Ausführung an die GPU gesendet, wird ein Indexraum erstellt. Jedem Punkt des Indexraumes wird dann eine Instanz des Kernels zugeordnet. Jede Instanz ist zur Ausführung auf einem anderen GPU Kern bestimmt. Durch den ihr zugewiesenen Punkt im Indexraum, ihre globale ID sind die einzelnen Kernelinstanzen eindeutig identifizierbar. Jede Kernelinstanz wird zeitgleich von einem der GPU Kerne ausgeführt. Alle enthalten dieselben Befehle, die jedoch durch eine Bezugnahme auf die globale ID variieren können. Eine Kernelinstanz ist somit vergleichbar mit einem Schleifendurchlauf einer for-schleife. Auch hier werden in jedem Durchlauf dieselben Befehle ausgeführt, die durch eine Bezugnahme auf den Laufindex variieren. Der Unterschied liegt jedoch darin, dass die Kernelinstanzen parallel ausgeführt werden, während eine for-schleife sequentiell abgearbeitet wird. Kernelprogramme müssen normalerweise in einer OpenCL-spezifischen Sprache geschrieben und als Textdatei oder in String-Form separat abgespeichert werden. Die Aparapi-Bibliothek stellt jedoch die Klasse Kernel bereit, welche direkt in das Programm eingebunden werden kann. Die Klasse Kernel erfordert die Implementation der Methode run(), welche aus dem Host- Programm aufgerufen werden kann. In dieser Methode können die auf der GPU auszuführenden Befehle in Java-Code definiert werden. Über die Befehle put() und get() kann das Host-Programm außerdem den Hin- und Rücktransfer von Daten zwischen CPU- und GPU- Speicher regeln. 10

13 4 Datenparallelisierung des Levenshtein Algorithmus Im Rahmen dieser Arbeit wurden zwei verschiedene Anwendungsmöglichkeiten des Levenshtein-Algorithmus implementiert. Die erste Variante berechnet die Editierdistanz von jeweils zwei vollständigen Dokumenten. Die zweite Variante berechnet die Editierdistanz eines einzelnen Wortes zu jedem Wort in einer gegebenen Datenbank. Beide Versionen wurden einmal auf herkömmliche sequentielle Weise implementiert und einmal als daten-parallele OpenCL- Anwendung. 4.1 Anwendungsvariante 1: Editierdistanz vollständiger Dokumente Diese Levenshtein-Variante ist für Anwendungen konzipiert, bei denen der Levenshtein- Algorithmus nur einmalig und auf sehr langen Zeichenketten ausgeführt wird, also beispielsweise zur Plagiatsanalyse. Die jeweiligen Implementierungen befinden sich im Package documentbasedlevenshtein. Abbildung 4.1 zeigt das zugehörige Klassendiagramm. Die abstrakte Klasse AbstractDocBasedLevenshtein definiert die Methode setdocuments(), zur Übergabe der Dokumente und die abstrakte Methode getdistance(). Diese Methode wird in der KlasseSequentialDocBasedLevenshtein auf herkömmliche Weise, so wie in Kapitel 2 beschrieben, realisiert. ParallelDocBasedLevenshtein erfüllt dieselbe Funktion, nutzt hierfür jedoch die parallelen Strukturen der Grafikkarte. 11

14 Abbildung 4.1: Klassendiagramm für die dokumentbasiere Anwendungsvariante des Levenshtein Algorithmus Parallelisierungsstrategie Um die Vorteile der Berechnung auf der GPU nutzen zu können ist zunächst eine Analyse des Algorithmus hinsichtlich seiner Parallelisierbarkeit durchzuführen. Zentrale Fragen ist hierbei, welche Berechnungsschrittee voneinander unabhängig sind, denn nur dann ist eine parallele Ausführung möglich. Die meiste Zeit des Algorithmus wird für die Berechnung der Matrixeinträge benötigt. Die Berechnung eines einzelnen Eintrags geschieht zwar in konstanter Zeit, jedoch müssen insgesamt n*m dieser Einträge berechnet werden, was in einer herkömmlichen sequentiellen Version eine verschachtelte for-schleife über alle Zeichen beider Dokumente erfordert. Wie im vorherigen Kapitel gezeigt wurde, sind die einzelnen Distanzberechnungen jedoch nicht alle unabhängig voneinander. Bis auf die Startlösungen baut jede Teillösung auf den Ergebnissen dreier weiterer Teilprobleme auf. Die Berechnung des Eintrags D[i][j] setzt die Lösungen in den Einträgen D[i-1][j], D[i][j-1] und D[i-1][j-1] voraus. Alle Matrixeinträge können folglich nicht zur selben Zeit bestimmt werden. Dennoch lassen sich einige Berechnungen, die nicht aufeinander aufbauen parallel ausführen, wie Abbildung 4.2 demonstriert. 12

15 Abbildung 4.2: Darstellung der parallel berechenbaren Matrixeinträge. Jeweils die Einträge auf einer Diagonalen sind unabhängig zueinander und eine zeitgleiche Berechnung somit möglich. Diese Parallelisierungsstrategie wird im Programm wie folgt umgesetzt: ParallelDocBasedLevenshtein stellt die Host-Applikation dar, die ebenfalls eine Realisierung der abstrakten Klasse AbstractDocBasedLevenshtein darstellt. DocBasedLevenshteinKernel enthält das auf der GPU ausführbare Kernelprogramm. Es kann aus der Host-Applikation heraus aufgerufen werden. Der erste Schritt zur Berechnung der Editierdistanz ist der Transfer der Dokumente vom CPUdie nach und nach zu Speicher an den GPU-Speicher. Dort wird außerdem Speicherplatz für berechnende Distanzmatrix alloziert. Mit dem ersten Kernelaufruf aus der Host-Methode getdistance() werden nun die ersten n+m+1 Matrixeinträge, also die Startbedingungen bestimmt. (Die entsprechenden Matrixfelder sin in Abbildung 4.2 mit dem Wert 0 markiert.) Jeder Eintrag wird parallel von einem der GPU-Kerne ermittelt. Iterativ folgen weiteree Kernelaufrufe aus der Host-Applikation. Mit jedem Kernelaufruf werden so viele Kernelinstanzen gebildet, wie bereits neue Einträge berechenbar sind. Ist die Matrix vollständig berechnet, befindet sich die Editierdistanz der Dokumente im Matrixfeld D[n+1][m+1]. Nur dieser Eintrag wird anschließend zurück an den CPU-Speicher transferiert und von der Methode getdistance() zurückgegeben. 4.2 Anwendungsvariante 2: Editierdistanz auf Wortebene Die zweite Anwendungsvariante der Editierdistanz ist für Anwendungenn konzipiert, bei denen ein einzelnes Wort, beziehungsweise eine kurze Zeichensequenz mit allen Wörtern in einer großen Datenbank verglichen werden soll. Die jeweiligen Implementierungen befinden sich im Package wordbasedlevenshtein. Abbildung 4.3 zeigt das zugehörige Klassendiagramm. Die abstrakte Klasse abstractwordbasedlevenshtein definiert die Methode setdatabase() mittels derer die zu Grunde gelegte Wort-Datenbank gesetzt werden kann. Außerdem wird die abstrakte Methode getalldistances() definiert, welche zu einem gegebenen Wort, sämtliche Editierdistanzen zu den 13

16 Wörtern der Datenbank zurückgeben soll. In der Klasse sequentialwordbasedlevenshtein wird diese Methode auf sequentielle Weise mittels einer Schleife über sämtliche Wörter der Datenbank realisiert. In jedem Iterationsschritt der Schleife wird die Editierdistanz des gegebenen Wortes zum entsprechenden Datenbankeintrag berechnet und im Ergebnis-Array festgehalten. Abbildung 4.3: Klassendiagramm für die wortbasierte Anwendungsvariante des Levenshtein Algorithmus Parallelisierungsstrategie Was in der sequentiellen Version nacheinander in den verschiedenen Schleifeniterationen geschieht, wird in der parallelen Variante zeitgleich von einzelnen GPU-Kernen abgearbeitet. Jeder GPU-Kern übernimmt eine vollständige Ausführung des Levenshtein-Algorithmus, jeweils für ein anderes Wort aus der Datenbank. Folglich müssen so viele Kernelinstanzen initiiert werden, wie es Wörter in der zu Grunde gelegten Datenbank gibt. Da die Distanzberechnung zweier Wörter unabhängig zu den Distanzberechnungen anderer Wortpaare erfolgen kann, ist in dieser Variante nur ein Kernelaufruf aus der Host-Applikation nötig der sämtliche Kernelinstanzen zeitgleich zur Ausführung frei gibt. Zu Beginn der Anwendung wird die vollständige Datenbank an den Speicher der GPU gesendet. Dieser Arbeitsschritt kostet zwar Transferzeit, die in der sequentiellen Version entfällt, jedoch ist dieser Datentransfer nur einmalig notwendig, und muss nicht für jedes einzelne Wort, dass mit der Datenbank verglichen werden soll wiederholt werden. Die zusätzliche Zeit durch Datentransfer in der parallelen Variante ist somit konstant und kann möglicherweise nach einigen 14

17 Datenbankabfragen wieder ausgeglichen werden. Voraussetzung hierfür ist natürlich, dass die parallele Distanzberechnung tatsächlich schneller ausgeführt werden kann, als die sequentielle Version. Das folgende Kapitel soll diese Frage beantworten und somit herausstellen, ob sich der Einsatz von Grafikprozessoren für Levenshtein-basierte Anwendungen lohnen kann. 15

18 5 Laufzeitvergleich Für den Performancevergleich zwischen den GPU-basierten Levenshtein-Varianten und den sequentiellen Varianten wurde die Gesamtlaufzeit der Anwendungen unter jeweils gleichen Voraussetzungen gemessen. Da das primäre Interesse dieser Untersuchungen dem Laufzeitverhalten gilt und nicht den berechneten Ergebnissen, spielt der semantische Inhalt der verwendeten Textdokumente in diesem Zusammenhang keine Rolle. Einfluss auf die Laufzeit hat lediglich die Länge der verwendeten Texte beziehungsweise Wörter. 5.1 Laufzeitvergleich der dokumentbasierten Anwendungsvariante Zunächst wurden die beiden Implementationen der ersten Anwendungsvariante des Levenshtein Algorithmus miteinander verglichen. Die Laufzeitmessungen beziehen sich also jeweils auf die Berechnung der Editierdistanz zweier vollständiger Dokumente. Es wurden Messungen mit jeweils variierenden Dokumentlängen gemacht. Die Ergebnisse sind in Abbildung 4.3 festgehalten. time total number of characters CPU-Time GPU-Time Abbildung 4.3: Laufzeitvergleich des datenparallelen und sequentiellen Levenshtein Algorithmus bei wachsender Dokumentlänge Auf den ersten Blick fallen die deutlich längeren Laufzeiten der GPU-basierten, datenparallelen Algorithmus-Version ins Auge. Sowohl bei insgesamt 2024 Zeichen, als auch bei deutlich längeren Dokumenten mit insgesamt ist die herkömmliche sequentielle Levenshtein- 16

19 Implementierung in der Laufzeit deutlich überlegen. Weitere Tests mit noch längeren Dokumenten waren auf Grund der begrenzten Speicherkapazität des Rechners nicht mehr möglich. Der Versuch, die Berechnung der Editierdistanz von vollständigen Dokumenten durch datenparalleles Rechnen zu beschleunigen muss somit als gescheitert bezeichnet werden. Betrachtet man jedoch statt der absoluten Laufzeiten die relativen Laufzeitunterschiede, so kann zumindest hier mit wachsender Dokumentlänge ein Fortschritt festgestellt werden. Abbildung 4.4 stellt den relativen Performancevorteil der GPU-basierten gegenüber der CPU basierten Implementierung dar. speedup 0,45 0,4 0,35 0,3 0,25 0,2 0,15 0,1 0, total number of characters Abbildung 4.4: relativer Performancevorteil der datenparallelen gegenüber der sequentiellen Levenshtein- Version Der Abbildung lässt sich entnehmen, dass die datenparallele Version zwar stets langsamer bleibt als die sequentielle, der relative Laufzeitunterschied nimmt jedoch bei wachsender Dokumentlänge stetig ab. Je länger die verwendeten Dokumente sind, desto näher kommt die datenparallele Laufzeit an die der sequentiellen Version heran. Diese Beobachtung schließt zumindest nicht aus, dass ein Ein- beziehungsweise Überholen der GPU-Laufzeit an die CPU- Laufzeit bei noch größeren Datenmengen möglich wäre. 5.2 Laufzeitvergleich der wortbasierten Anwendungsvariante Zum Vergleich der datenparallelen Version mit der sequentiellen Version der wortbasierten Levenshtein Anwendung, wurdedas Laufzeitverhalten in zwei unterschiedlichen Testszenarien gemessen. Im ersten Testszenario blieb die Größe der hinterlegten Wortdatenbank konstant bei 3280 Wörtern. Es variierte stattdessen die Zahl der Datenbankabfragen, also die 17

20 Ausführungshäufigkeit der Methode getalldistances(). Das Ergebnis der Messungen ist in Abbildung 4.5 festgehalten time cpu gpu Anzahl der Datenbankabfragen Abbildung 4.5: Laufzeitvergleich der datenparallelen und sequentiellen Version bei einer konstanten Datenbankgröße von 3280 Wörtern Die Grafik zeigt, dass die datenparallele Version bereits ab der vierzigsten Datenbankabfrage schneller arbeitet als die herkömmliche sequentielle Version der Levenshtein Anwendung. Offenbar sind vierzig Ausführungen notwendig, um die einmalig zu Beginn benötigte Datentransferzeit zwischen CPU- und GPU-Speicher aufzuholen. Während sich die Laufzeit der sequentiellen Variante bei einer Verdopplung der Datenbankabfragenfast eins zu eins mit verdoppelt, ist bei der datenparallelen Version ein wesentlich langsamerer Anstieg zu beobachten. Der Performancevorteil der datenparallelen gegenüber der sequentiellen Version bleibt somit nicht konstant, sondern wird mit jeder weiteren Anfrage an die Datenbank größer. Bei insgesamt 640 Datenbankabfragen rechnet die GPU-basierte Version etwa fünf Mal schneller als die herkömmliche Version auf der CPU. (vergleiche Abbildung 4.6) 18

21 6 5 speedup Anzahl der Datenbankabfragen Abbildung 4.6: relativer Performancevorteil der datenparallelen gegenüber der sequentiellen Version der Wortbasierten Levenshtein Anwendung In einem weiteren Testszenario wurde das Laufzeitverhalten beider Versionen bei gleichbleibend 40 bzw. 160 Datenbankabfragen gemessen. Es variierte stattdessen die Größe der hinterlegten Datenbank. Beginnend bei 205 Wörtern in der Datenbank, wurde die Zahl der Wörter in jedem neuen Durchgang verdoppelt, bis schließlich ein Umfang von Wörtern erreicht wurde. Die Ergebnisse der Laufzeitmessungen sind in Tabelle 4.7 festgehalten. db-size 40 queries 160 queries CPUtime GPU-time speedup CPU-time GPU-time speedup , , , , , , , , , , , , Tabelle 4.1: Ergebnisse der Laufzeitmessungen bei Veränderung der Datenbankgröße Bei 40 Datenbankabfragen pro Messung lässt sich bereits bei einer Datenbankgröße von 3280 Wörtern ein minimaler Vorsprung der datenparallelen Version ausmachen. Dieser kann mit jeder 19

22 Vergrößerung der Datenbank weiter ausgebaut werden. Bei Wörtern in der Datenbank ist die datenparallele Version mehr als sechs Mal schneller als die sequentielle Variante. Bei 160 Datenbankabfragen wird der Performancegewinn durch datenparalleles Rechnen (wie auf Grund der obigen Messungen zu erwarten) noch größer. Bis zu 17 Mal schneller als das sequentielle Programm berechnet der GPU-basierte Algorithmus die Editierdistanzen. 20

23 5 Fazit In dieser Arbeit wurde die Editierdistanz als Maß für den approximativen Stringvergleich vorgestellt. Sowohl in der Bioinformatik als auch in der Computerlinguistik finden sich mehrere Einsatzgebiete für die Editierdistanz und den zugehörigen Levenshtein Algorithmus.. Insbesondere zwei unterschiedliche Einsatzmöglichkeiten des Levenshtein-Algorithmus wurden in dieser Arbeit näher skizziert: Dies war zum einen die Berechnung der Editierdistanz sehr langer Zeichensequenzen. Als Anwendungsbeispiel diente hierfür der Vergleich längerer Textdokumente beispielsweise als Mittel zur Plagiatsanalyse. Weiter wurde ein Anwendungsszenario skizziert, bei dem die Editierdistanz sehr häufig hintereinander berechnet wird, jeweils aber nur auf sehr kurzen Zeichensequenzen. Als ein Beispiel aus der Bioinformatik wurde hierfür der Vergleich einer kurzen Gensequenz mit jeder Gensequenz aus einer großen Datenbank genannt. Das Hauptanliegen dieser Arbeit war es, ein Programm zu implementieren, dass die Ausführung beider der skizzierte Anwendungsvarianten des Levenshtein-Algorithmus ermöglicht. Auf Grund der sehr hohen (da quadratischen) Laufzeit des Levenshtein Algorithmus, spielte der Laufzeitfaktor hierbei eine entscheidende Rolle. Neben einer herkömmlichen Java- Implementation des Programms wurde daher auch ein funktionsgleiches Programm in der GPUbasierten Sprache OpenCL implementiert. Hierbei stand die zentrale Fragestellung im Vordergrund, ob die verschiedenen Anwendungen des Levenshtein Algorithmus, durch die zusätzliche Verwendung des Grafikprozessors, in ihrer Laufzeit beschleunigt werden können. Diese Fragestellung konnte in Kapitel 5 dieser Arbeit durch den direkten Laufzeitvergleich beider Programme beantwortet werden. Es konnte herausgestellt werden, dass insbesondere das zweite Anwendungsszenario, bei dem die Editierdistanz sehr häufig auf kurzen Zeichensequenzen berechnet wird, von der GPU- Programmierung profitieren kann. Je nach Größe der hinterlegten Datenbank und der Anzahl der Vergleiche, konnten mit dem GPU-basierten Programm bis zu 17 Mal schnellere Laufzeiten erzielt werden. Eine große Datenbank und hohe Anzahl von Vergleichen stelle sich hierbei als besonders begünstigend für den Performancevorsprung der GPU-basierten Version heraus. Bei kleineren Datensätzen blieb der Vorsprung gering, oder fiel hinter den des herkömmlichen Programms zurück. Zum Vergleich längerer Dokumente stellte sich der Einsatz der GPU-Programmierung als weniger geeignet heraus. Hier konnte keine Testumgebung geschaffen werden, bei der die GPU basierte Version des Levenshtein Algorithmus schneller arbeitete als die herkömmliche CPU- 21

24 basierte Variante. Auch bei längeren Dokumenten blieb die herkömmliche Version mehr als doppelt so schnell wie die OpenCL-Version. Insgesamt zeigte sich aber mit wachsendem Datenumfang eine Tendenz zur Annäherung, da das Laufzeitwachstum der GPU-basierten Version langsamer war, als das der CPU-basierten Version. Als universelle Methode für performanceoptimiertes Rechnen kann die GPU-Programmierung in dem hier untersuchten Kontext zwar nicht bezeichnet werden, unter bestimmten Voraussetzungen, sind jedoch erhebliche Laufzeitverbesserungen möglich und der zusätzliche Mehraufwand durchaus lohnenswert. 22

25 6 Literaturverzeichnis CORMEN, Thomas: 2013, Algorithmen Eine Einführung. 4., durchges. und kommentierte Aufl. Oldenbourg Verlag, München. GUSFIELD, Dan: 1999, Algorithms on strings, trees and sequences.computer science and computational biology. Cambridge University Press, Cambridge. WEGST, Tillmann: Stringähnlichkeit. n.d. Web. 30. Aug

HS: Angewandte Linguistische Datenverarbeitung Prof. Dr. Rolshoven Universität zu Köln. Edit distance. Referentinnen: Alena Geduldig, Kim Opgenoorth

HS: Angewandte Linguistische Datenverarbeitung Prof. Dr. Rolshoven Universität zu Köln. Edit distance. Referentinnen: Alena Geduldig, Kim Opgenoorth HS: Angewandte Linguistische Datenverarbeitung Prof. Dr. Rolshoven Universität zu Köln Edit distance Referentinnen: Alena Geduldig, Kim Opgenoorth inexact matching Problem Erkenne, finde und toleriere

Mehr

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit Rheinisch-Westfälische Technische Hochschule Aachen Seminararbeit Analyse von General Purpose Computation on Graphics Processing Units Bibliotheken in Bezug auf GPU-Hersteller. Gregori Kerber Matrikelnummer

Mehr

6. Algorithmen auf Zeichenketten

6. Algorithmen auf Zeichenketten 6. Algorithmen auf Zeichenketten Motivation Wir lernen nun Algorithmen zur Lösung verschiedener elementarer Probleme auf Zeichenketten zu lösen Zeichenketten spielen eine wichtige Rolle in diversen Gebieten

Mehr

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Claudia Gerhold 9.5.6 Claudia Gerhold Dynamische Programmierung 9.5.6 / 4 Agenda Einführung Dynamische Programmierung Top-Down Ansatz mit Memoization Bottom-Up Ansatz 3 Anwendungsbeispiele

Mehr

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell

Mehr

Compute Unified Device Architecture CUDA

Compute Unified Device Architecture CUDA Compute Unified Device Architecture 06. Februar 2012 1 / 13 Gliederung 2 / 13 : Compute Unified Device Architecture entwickelt von Nvidia Corporation spezifiziert Software- und Hardwareeigenschaften Ziel:

Mehr

Algorithmen auf Sequenzen

Algorithmen auf Sequenzen Algorithmen auf Sequenzen Fehlertolerante Mustersuche: Distanz- und Ähnlichkeitsmaße Sven Rahmann Genominformatik Universitätsklinikum Essen Universität Duisburg-Essen Universitätsallianz Ruhr Einführung

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 9. Vorlesung Peter Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Invertierte Listen Nutzung vor allem zur Textsuche

Mehr

Studiengang Informatik der FH Gießen-Friedberg. Sequenz-Alignment. Jan Schäfer. WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel

Studiengang Informatik der FH Gießen-Friedberg. Sequenz-Alignment. Jan Schäfer. WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel Studiengang Informatik der FH Gießen-Friedberg Sequenz-Alignment Jan Schäfer WS 2006/07 Betreuer: Prof. Dr. Klaus Quibeldey-Cirkel Überblick Einführung Grundlagen Wann ist das Merkmal der Ähnlichkeit erfüllt?

Mehr

Algorithmen für paarweise Sequenz-Alignments. Katharina Hembach

Algorithmen für paarweise Sequenz-Alignments. Katharina Hembach Proseminar Bioinformatik WS 2010/11 Algorithmen für paarweise Sequenz-Alignments Katharina Hembach 06.12.2010 1 Einleitung Paarweise Sequenz-Alignments spielen in der Bioinformatik eine wichtige Rolle.

Mehr

Gliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo

Gliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo Gliederung Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo Was ist CUDA? Nvidia CUDA ist eine von NvidiaGPGPU-Technologie, die es Programmierern erlaubt, Programmteile

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 21 (15.7.2016) String Matching (Textsuche) Approximate String Matching Algorithmen und Komplexität Textsuche / String Matching Gegeben:

Mehr

Parallele und funktionale Programmierung Wintersemester 2016/ Übung Abgabe bis , 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2016/ Übung Abgabe bis , 16:00 Uhr 4. Übung Abgabe bis 25.11.2016, 16:00 Uhr Aufgabe 4.1: Verklemmungsbedingungen a) Welche drei Bedingungen müssen gelten, damit es zu einer Verklemmung in einem parallelen System kommen kann? b) Nach welcher

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

Effiziente Algorithmen 2

Effiziente Algorithmen 2 Effiziente Algorithmen 2 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern

Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Institut für Betriebssysteme und Rechnerverbund TU Braunschweig 25.10., 26.10.

Mehr

Aufgabenblatt 4. Silke Trißl Wissensmanagement in der Bioinformatik

Aufgabenblatt 4. Silke Trißl Wissensmanagement in der Bioinformatik Aufgabenblatt 4 Silke Trißl Wissensmanagement in der Bioinformatik Zuerst! FRAGEN? Silke Trißl: Bioinformatik für Biophysiker 2 Exercise 1 Global alignment using dynamic programming Write a program to

Mehr

Lösungsvorschlag Serie 2 Rekursion

Lösungsvorschlag Serie 2 Rekursion (/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma

Mehr

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele. 1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Einführende Beispiele 2. Algorithmen Täglich werden Verarbeitungsvorschriften

Mehr

Algorithmische Anwendungen WS 2005/2006

Algorithmische Anwendungen WS 2005/2006 Algorithmische Anwendungen WS 2005/2006 Sequenzalignment Gruppe F_lila_Ala0506 Allal Kharaz Yassine ELassad Inhaltsverzeichnis 1 Problemstellungen...................................... 3 1.1 Rechtschreibkorrektur...............................

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 21 (11.7.2018) String Matching (Textsuche) II Greedy Algorithmen I Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei

Mehr

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg CUDA Seminar Multi-Core Architectures and Programming 1 Übersicht Einleitung Architektur Programmierung 2 Einleitung Computations on GPU 2003 Probleme Hohe Kenntnisse der Grafikprogrammierung nötig Unterschiedliche

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2009 11. Vorlesung Uwe Quasthoff Universität Leipzig Institut für Informatik quasthoff@informatik.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 2. Spezifikation Schrittweise Verfeinerung

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 2. Spezifikation Schrittweise Verfeinerung UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 2 Spezifikation Schrittweise Verfeinerung Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69,

Mehr

Meinten Sie...? Wie Suchmaschinen mit Hilfe des Levenshtein-Algorithmus und Soundex ähnliche Wörter finden.

Meinten Sie...? Wie Suchmaschinen mit Hilfe des Levenshtein-Algorithmus und Soundex ähnliche Wörter finden. Meinten Sie...? Wie Suchmaschinen mit Hilfe des Levenshtein-Algorithmus und Soundex ähnliche Wörter finden. 24.11.2010, Christiane Olschewski Kontakt: Olschewski@LaminARt.de, Olschewski@Olschewski.org

Mehr

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck RST-Labor WS06/07 GPGPU General Purpose Computation On Graphics Processing Units (Grafikkarten-Programmierung) Von: Marc Blunck Ablauf Einführung GPGPU Die GPU GPU Architektur Die Programmierung Programme

Mehr

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

Bioinformatik Für Biophysiker

Bioinformatik Für Biophysiker Bioinformatik Für Biophysiker Sommersemester 2009 Silke Trißl / Ulf Leser Wissensmanagement in der Bioinformatik Wissensmanagement in der Bioinformatik Schwerpunkte Algorithmen der Bioinformatik Management

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 11. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen Safe

Mehr

- dynamisches Laden -

- dynamisches Laden - - - Fachbereich Technik Department Elektrotechnik und Informatik 21. Juni 2012 1/23 2/23 s dynamisch Code kann von mehreren Programmen genutzt werden => kleinere Programme einzelne Teile eines Programms

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer

Mehr

2.2 Der Algorithmus von Knuth, Morris und Pratt

2.2 Der Algorithmus von Knuth, Morris und Pratt Suchen in Texten 2.1 Grundlagen Ein Alphabet ist eine endliche Menge von Symbolen. Bsp.: Σ a, b, c,..., z, Σ 0, 1, Σ A, C, G, T. Wörter über Σ sind endliche Folgen von Symbolen aus Σ. Wörter werden manchmal

Mehr

Übersicht. Volltextindex Boolesches Retrieval Termoperationen Indexieren mit Apache Lucene

Übersicht. Volltextindex Boolesches Retrieval Termoperationen Indexieren mit Apache Lucene Übersicht Volltextindex Boolesches Retrieval Termoperationen Indexieren mit Apache Lucene 5.0.07 1 IR-System Peter Kolb 5.0.07 Volltextindex Dokumentenmenge durchsuchbar machen Suche nach Wörtern Volltextindex:

Mehr

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Paarweises

Mehr

Teil VII. Hashverfahren

Teil VII. Hashverfahren Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:

Mehr

Parallele Algorithmen in der Bildverarbeitung

Parallele Algorithmen in der Bildverarbeitung Seminar über Algorithmen - SoSe 2009 Parallele Algorithmen in der Bildverarbeitung von Christopher Keiner 1 Allgemeines 1.1 Einleitung Parallele Algorithmen gewinnen immer stärker an Bedeutung. Es existieren

Mehr

Informatik II: Algorithmen und Datenstrukturen SS 2013

Informatik II: Algorithmen und Datenstrukturen SS 2013 Informatik II: Algorithmen und Datenstrukturen SS 2013 Vorlesung 11b, Mittwoch, 3. Juli 2013 (Editierdistanz, dynamische Programmierung) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen

Mehr

Definitionen/Vorarbeit zum Thema Java

Definitionen/Vorarbeit zum Thema Java Definitionen/Vorarbeit zum Thema Java Programmiersprachen: System von Wörtern und Symbolen, die zur Formulierung von Programmen für die elektronische Datenverarbeitung verwendet werden. Arten: z.b. Javascript

Mehr

Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Informatik 1 Teil 1 - Wintersemester 2012/2013 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen 0. Rechner und Programmierung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 20 Einstieg in die Informatik mit Java Rekursion Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Überblick 2 Rekursion 3 Rekursive Sortieralgorithmen 4 Backtracking

Mehr

Blockmatrizen. Beispiel 1 Wir berechnen das Produkt von A R 4 6 mit B R 6 4 :

Blockmatrizen. Beispiel 1 Wir berechnen das Produkt von A R 4 6 mit B R 6 4 : Blockmatrizen Beispiel 1 Wir berechnen das Produkt von A R 4 6 mit B R 6 4 : 2 1 3 1 1 0 1 0 1 0 0 2 1 1 11 1 1 4 0 1 0 1 0 1 4 1 0 2 1 0 1 0 1 0 3 1 2 1 = 2 4 3 5 11 1 1 4 0 1 0 1 0 1 5 1 2 1 2 4 3 5

Mehr

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III Text: Hinnerk van Bruinehsen - Grafiken: Jens Fischer powered by SDS.mint SoSe 2011 1 Teil

Mehr

Proseminar String Matching

Proseminar String Matching Proseminar Textsuche Proseminar String Matching PD Dr. habil. Hanjo Täubig Lehrstuhl für Theoretische Informatik (Prof. Dr. Susanne Albers) Institut für Informatik Technische Universität München Wintersemester

Mehr

Die Unentscheidbarkeit extensionaler Eigenschaften von Turingmaschinen: der Satz von Rice

Die Unentscheidbarkeit extensionaler Eigenschaften von Turingmaschinen: der Satz von Rice Die Unentscheidbarkeit extensionaler Eigenschaften von Turingmaschinen: der Satz von Rice Holger Arnold Dieser Text befasst sich mit der Frage, unter welchen Bedingungen das Problem, zu bestimmen, ob die

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 32 Einstieg in die Informatik mit Java Effizienz Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 32 1 Überblick: was ist Effizienz? 2 Landau-Symbole 3 Eier im Korb 4

Mehr

Das Problem des Handlungsreisenden

Das Problem des Handlungsreisenden Seite 1 Das Problem des Handlungsreisenden Abbildung 1: Alle möglichen Rundreisen für 4 Städte Das TSP-Problem tritt in der Praxis in vielen Anwendungen als Teilproblem auf. Hierzu gehören z.b. Optimierungsprobleme

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Lerneinheit 3: Greedy Algorithmen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2016 10.5.2016 Einleitung Einleitung Diese Lerneinheit

Mehr

19. Dynamic Programming I

19. Dynamic Programming I Fibonacci Zahlen 9. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixettenmultipliation, Matrixmultipliation nach Strassen [Ottman/Widmayer,

Mehr

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele. 1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Einführende Beispiele 2. Algorithmen Täglich werden Verarbeitungsvorschriften

Mehr

ADS: Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen ADS: Algorithmen und Datenstrukturen Teil X Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 13.

Mehr

Motivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung

Motivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung CUDA und Python Christian Wilms Integriertes Seminar Projekt Bildverarbeitung Universität Hamburg WiSe 2013/14 12. Dezember 2013 Christian CUDA und Python 1 Gliederung 1 Motivation 2 (GP)GPU 3 CUDA 4 Zusammenfassung

Mehr

3.3 Optimale binäre Suchbäume

3.3 Optimale binäre Suchbäume 3.3 Optimale binäre Suchbäume Problem 3.3.1. Sei S eine Menge von Schlüsseln aus einem endlichen, linear geordneten Universum U, S = {a 1,,...,a n } U und S = n N. Wir wollen S in einem binären Suchbaum

Mehr

Bioinformatik Für Biophysiker

Bioinformatik Für Biophysiker Bioinformatik Für Biophysiker Wintersemester 2005 / 2006 Ulf Leser Wissensmanagement in der Bioinformatik Wissensmanagement in der Bioinformatik Lehrstuhl seit 10/2002 Schwerpunkte Algorithmen der Bioinformatik

Mehr

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1 CUDA Jürgen Pröll Multi-Core Architectures and Programming Jürgen Pröll 1 Image-Resize: sequentiell resize() mit bilinearer Interpolation leicht zu parallelisieren, da einzelne Punkte voneinander unabhängig

Mehr

CUDA Workshop. Ausblick. Daniel Tenbrinck

CUDA Workshop. Ausblick. Daniel Tenbrinck CUDA Workshop Ausblick Daniel Tenbrinck Computer Vision and Pattern Recognition Group Institut für Informatik Westfälische Wilhelms-Universität Münster 03.Juli 2009 Folie: 1 / 10 Daniel Tenbrinck CUDA

Mehr

Partitionierungsstrategien für Data Vault

Partitionierungsstrategien für Data Vault ierungsstrategien für Data Vault Dani Schnider Trivadis AG Zürich/Glattbrugg, Schweiz Einleitung Während das Laden von Tabellen in Data Vault in der Regel nicht zeitkritisch ist, stellt uns das effiziente

Mehr

Algorithmik Übung 2 Prof. Dr. Heiner Klocke Winter 11/

Algorithmik Übung 2 Prof. Dr. Heiner Klocke Winter 11/ Algorithmik Übung 2 Prof. Dr. Heiner Klocke Winter 11/12 23.10.2011 Themen: Asymptotische Laufzeit von Algorithmen Experimentelle Analyse von Algorithmen Aufgabe 1 ( Asymptotische Laufzeit ) Erklären Sie,

Mehr

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften Ziel: Methoden kennen

Mehr

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 502 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

UNABHÄNGIGER LASTEN. Vorlesung 9 BALANCIERUNG DYNAMISCHER. Graphenalgorithmen und lineare Algebra Hand in Hand

UNABHÄNGIGER LASTEN. Vorlesung 9 BALANCIERUNG DYNAMISCHER. Graphenalgorithmen und lineare Algebra Hand in Hand Vorlesung 9 BALANCIERUNG DYNAMISCHER UNABHÄNGIGER LASTEN 266 Lastbalancierung Motivation! Ein paralleles System besteht aus! verschiedenen Recheneinheiten,! die miteinander kommunizieren können! Warum

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 .. ADS: Algorithmen und Datenstrukturen 2 8. Vorlesung Uwe Quasthoff Abteilung Automatische Sprachverarbeitung Institut für Informatik Universität Leipzig 6. Juni 2012 1 / 25 Editier-Distanz Beobachtungen:

Mehr

Hochleistungsrechnen auf dem PC

Hochleistungsrechnen auf dem PC Hochleistungsrechnen auf dem PC Steffen Börm Christian-Albrechts-Universität zu Kiel Ringvorlesung Informatik, 26. Juni 2014 S. Börm (CAU Kiel) Hochleistungsrechnen auf dem PC 26. Juni 2014 1 / 33 Übersicht

Mehr

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Technische Universität München Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften

Mehr

String - Matching. Kapitel Definition

String - Matching. Kapitel Definition Kapitel 1 String - Matching 1.1 Definition String - Matching ( übersetzt in etwa Zeichenkettenanpassung ) ist die Suche eines Musters ( Pattern ) in einem Text. Es findet beispielsweise Anwendung bei der

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 14, Donnerstag, 6.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 14, Donnerstag, 6. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 14, Donnerstag, 6. Februar 2014 (Editierdistanz, dynamische Programmierung) Junior-Prof.

Mehr

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java

Kapitel 4: Bäume i. 1. Einleitung. 2. Ein Datenmodell für Listen. 3. Doppelt-verkettete Listen. 4. Bäume. 5. Das Collections-Framework in Java Kapitel 4: Bäume i 1. Einleitung 2. Ein Datenmodell für Listen 3. Doppelt-verkettete Listen 4. Bäume 5. Das Collections-Framework in Java Prof. Dr. Peer Kröger: EiP (WS 18/19) Teil 11: Datenstrukturen

Mehr

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610 LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610 Dominik Weinrich dominik.weinrich@tu-dresden.de Dresden, 30.11.2017 Gliederung Motivation Aufbau und Hardware

Mehr

Der Boyer-Moore Algorithmus

Der Boyer-Moore Algorithmus Der Boyer-Moore Algorithmus Hauptseminar Pattern-Matching und Textalgorithmen 29.10.2002 Thomas Hellwig Der Naive Algorithmus Um auf den Boyer-Moore Algorithmus hinzuleiten, betrachten wir zuerst das grundsätzliche

Mehr

Programmierung mit C Algorithmen

Programmierung mit C Algorithmen Programmierung mit C Algorithmen Informationen /7/ Robert Sedgewick Algorithmen in C. 742 Seiten, ISBN 3-827-37182-1. /8/ Kyle Loudon Algorithmen mit C, ISBN 3-4897-211653-0. Online-Buch "C von A bis Z",

Mehr

Einführung in die Programmierung für NF. Übung

Einführung in die Programmierung für NF. Übung Einführung in die Programmierung für NF Übung 01 23.10.2013 Inhalt Übungen und Übungsblätter Uniworx und Abgabeformate Plagiarismus Algorithmen und Pseudocode Variablen und Methoden Boolsche Operatoren

Mehr

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert

Mehr

Fakultät für Informatik Übung zu Kognitive Systeme Sommersemester 2018

Fakultät für Informatik Übung zu Kognitive Systeme Sommersemester 2018 Fakultät für Informatik Übung zu Kognitive Systeme Sommersemester 2018 S. Constantin (stefan.constantin@kit.edu) S. Nguyen (thai.nguyen@kit.edu) Übungsblatt 4 Maschinelles Lernen und Spracherkennung Abgabe

Mehr

Paralleler Cuckoo-Filter. Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21.

Paralleler Cuckoo-Filter. Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21. Paralleler Cuckoo-Filter Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21. November 2017 1 Paralleler Cuckoo-Filter Cuckoo-Hashtabelle Serieller Cuckoo-Filter

Mehr

Eine Untersuchung der Funktionen des Apache Wicket Webframeworks

Eine Untersuchung der Funktionen des Apache Wicket Webframeworks Eine Untersuchung der Funktionen des Apache Wicket Webframeworks Seminararbeit von Olaf Matticzk 1 15.01.2016 (c) by synaix 2016 synaix...your business as a service. Agenda 1. Einleitung 2. Webanwendungen

Mehr

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser

Mehr

Praktikum Algorithmischen Anwendungen WS 2006/07 Bioinformatik Sequence-Aligment Team C rot Ala0607

Praktikum Algorithmischen Anwendungen WS 2006/07 Bioinformatik Sequence-Aligment Team C rot Ala0607 Praktikum Algorithmischen Anwendungen WS 2006/07 Bioinformatik Sequence-Aligment Team C rot Ala0607 Blöink, Frank 11038619 ai600@gm.fh-koeln.de Wolters, Benjamin 11037092 ai651@gm.fh-koeln.de 26. Januar

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

verschiedenen Recheneinheiten, die miteinander kommunizieren können

verschiedenen Recheneinheiten, die miteinander kommunizieren können Vorlesung 9 BALANCIERUNG DYNAMISCHER UNABHÄNGIGER LASTEN 293 Lastbalancierung Motivation Ein paralleles System besteht aus verschiedenen Recheneinheiten, die miteinander kommunizieren können Warum parallel

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016

Mehr

ABITURPRÜFUNG 2001 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN)

ABITURPRÜFUNG 2001 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Arbeitszeit: Hilfsmittel: ABITURPRÜFUNG 2001 270 Minuten LEISTUNGSFACH INFORMATIK (HAUPTTERMIN) Formeln und Tabellen für die Sekundarstufen I und II. Berlin: Paetec, Ges. für Bildung und Technik mbh; PC

Mehr

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. 1 In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen. Zunächst stellt sich die Frage: Warum soll ich mich mit der Architektur eines DBMS beschäftigen?

Mehr

Abschnitt 10: Datenstrukturen

Abschnitt 10: Datenstrukturen Abschnitt 10: Datenstrukturen 10. Datenstrukturen 10.1Einleitung 10.2 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 829 / 867 Einleitung Überblick 10. Datenstrukturen 10.1Einleitung

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 14, Donnerstag, 5.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 14, Donnerstag, 5. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 14, Donnerstag, 5. Februar 2015 (Editierdistanz, dynamische Programmierung) Junior-Prof.

Mehr

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff Parallel Computing Einsatzmöglichkeiten und Grenzen Prof. Dr. Nikolaus Wulff Vorüberlegungen Wann ist paralleles Rechnen sinnvoll? Wenn die Performance/Geschwindigkeit steigt. Wenn sich größere Probleme

Mehr

Algorithmische Bioinformatik

Algorithmische Bioinformatik Algorithmische Bioinformatik Effiziente Berechnung des Editabstands Dynamische Programmierung Ulf Leser Wissensmanagement in der Bioinformatik Inhalt dieser Vorlesung Rekursive Definition des Editabstands

Mehr

Dynamisches Huffman-Verfahren

Dynamisches Huffman-Verfahren Dynamisches Huffman-Verfahren - Adaptive Huffman Coding - von Michael Brückner 1. Einleitung 2. Der Huffman-Algorithmus 3. Übergang zu einem dynamischen Verfahren 4. Der FGK-Algorithmus 5. Überblick über

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 8 Gerhard Heyer, Florian Holz unter Verwendung der Materialien der letzten Jahre Abteilung Automatische Sprachverarbeitung Institut für Informatik Universität

Mehr

Anwendungen dynamischer Programmierung in der Biologie

Anwendungen dynamischer Programmierung in der Biologie Anwendungen dynamischer Programmierung in der Biologie Überblick Algorithmus zum Finden der wahrscheinlichsten Sekundärstruktur eines RNS Moleküls Sequence Alignment Verbesserung von Sequence Alignment

Mehr

Fakultät für Informatik Übung zu Kognitive Systeme Sommersemester Lösungsblatt 4 Maschinelles Lernen und Spracherkennung

Fakultät für Informatik Übung zu Kognitive Systeme Sommersemester Lösungsblatt 4 Maschinelles Lernen und Spracherkennung Fakultät für Informatik Übung zu Kognitive Systeme Sommersemester 216 M. Sperber (matthias.sperber@kit.edu) S. Nguyen (thai.nguyen@kit.edu) Lösungsblatt 4 Maschinelles Lernen und Spracherkennung Aufgabe

Mehr

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall: Laufzeit von Quicksort im Mittel. Wir wollen die erwartete Effizienz von Quicksort ermitteln. Wir nehmen an, die Wahrscheinlichkeit, dass das gewählte Pivot-Element a j das k-t kleinste Element der Folge

Mehr

3 Lineare Gleichungssysteme

3 Lineare Gleichungssysteme Lineare Gleichungssysteme Wir wissen bereits, dass ein lineares Gleichungssystem genau dann eindeutig lösbar ist, wenn die zugehörige Matrix regulär ist. In diesem Kapitel lernen wir unterschiedliche Verfahren

Mehr

APEX Datenverwaltung Wo sind die Daten gerade?

APEX Datenverwaltung Wo sind die Daten gerade? APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst Trivadis GmbH München Schlüsselworte: APEX, Sessionverwaltung, Dynamic Actions Einleitung Eine APEX-Anwendung wird erst durch zusätzliche

Mehr

5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS)

5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS) 5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS) Sommersemester 2009 Dr. Carsten Sinz, Universität Karlsruhe Datenstruktur BDD 2 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer:

Mehr

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme Institut für Computational Science Prof. Dr. H. Hinterberger Praxismodul 1 Einführung in die Programmierung Erste Programme Einführung in die Programmierung 2 Institut für Computational Science, ETH Zürich,

Mehr