Copying Garbage Collection

Größe: px
Ab Seite anzeigen:

Download "Copying Garbage Collection"

Transkript

1 opying Garbage ollection Guido Tack März 2002 Zusammenfassung opying Garbage ollection ist eine einfache, aber effiziente Methode zur automatischen Speicherverwaltung. In dieser usarbeitung im Rahmen des Seminars Garbage ollection im Wintersemester 2001/2002 wird die grundlege Idee hinter opying Garbage ollection beschrieben, heneys lgorithmus (der wichtigste weil effizienteste opying-lgorithmus) im etail erklärt sowie auf Vor- und Nachteile und Einsatzgebiete von opying Garbage ollection eingegangen. bschließ wird das Verhältnis von opying Garbage ollection zu anderen, moderneren Methoden erläutert. 1 Einleitung In dieser usarbeitung wird opying Garbage ollection vorgestellt, eine Methode zur automatischen Speicherbereinigung (Garbage collection, im Folgen durch G abgekürzt). opying G ist eine schon sehr alte Strategie zur Speicherverwaltung, die erste Implementierung stammt von Marvin Minsky aus dem Jahr 1963; Minsky implementierte einen opying Garbage ollector in Lisp 1.5 (siehe [9]). Trotzdem ist sie auch heute noch aktuell, entweder in ihrer Reinform oder als Grundlage modernerer lgorithmen. iese usarbeitung ist wie folgt gegliedert: Im bschnitt 2 wird die grundsätzliche Idee beschrieben, die hinter opying G steht. bschnitt 3 stellt den wichtigsten und grundlegen lgorithmus in diesem ereich vor. bschnitt 4 beschäftigt sich mit den Nachteilen, bschnitt 5 mit Variationen von opying G. Im 6. bschnitt wird diskutiert, wie die Effizienz des lgorithmus gesteigert werden kann, und bschnitt 7 zeigt die möglichen Einsatzgebiete von opying G auf. bschließ gibt bschnitt 8 einen usblick und eine Zusammenfassung. 2 ie Idee hinter opying G opying G teilt den logischen Speicher in zwei sogenannte Semi-Spaces auf: den -Space und den -Space. Zu jeder Zeit ist nur einer der beiden Speicherbereiche aktiv, nämlich der -Space. 1

2 ktiv bedeutet in diesem Zusammenhang: lle Operationen des Mutators arbeiten nur in diesem Speicherbereich, alle lebigen Zeiger zeigen nur in diesen ereich, und neuer Speicher wird nur in diesem ereich allokiert. Wenn die G angestoßen wird (üblicherweise, wenn kein Speicher mehr allokiert werden kann), werden alle lebigen Objekte aus dem -Space in den -Space kopiert und dann die Rollen der beiden ereiche vertauscht. abei müssen selbstverständlich alle Zeiger auf die kopierten Objekte umgeleitet werden. bbildung 1 zeigt exemplarisch den Zustand vor und nach dem Kopieren der Objekte. urch das anschließe Vertauschen der Rollen wird der -Space zum neuen -Space; das heißt, dass sowohl die ehemals lebigen Objekte als auch der Müll darin beim nächsten Kopiervorgang überschrieben werden. Insofern ist opying G eigentlich kein Garbage ollector, sondern eher ein Live Nodes ollector 1. Minsky s ollector benutzte die oben genannte ufteilung in Semi-Spaces noch nicht, sondern kopierte die lebigen Objekte in eine atei auf einem andlaufwerk, um sie von dort wieder linear in den Speicher einzulesen. ie Idee der Semi-Spaces im Speicher wurde von Robert Fenichel und Jerome Yochelson im Jahr 1969 in [6] beschrieben. Ihre Implementierung kopierte rekursiv die Objekte aus dem -Space in den -Space. Garbage Garbage bbildung 1: Vor und nach dem Kopieren bbildung 1 illustriert auch gleich einen großen Vorteil von opying G : Nach dem Kopieren liegen die Objekte linear und kompakt im -Space, opying G vermeidet also eine Fragmentierung des freien Speichers. Ein weiterer Vorteil ist die effiziente llokation von neuem Speicher, sie erfolgt einfach linear, beginn hinter dem letzten Objekt im -Space. 1 Ein solcher ollector wird auch oft Scavenger genannt. 2

3 3 heneys lgorithmus 3.1 Motivation ie naive Implementierung des oben beschriebenen lgorithmus würde den Graph der lebigen Objekte rekursiv durchsuchen und in den -Space kopieren. heney beschreibt in [5] einen lgorithmus, der im Gegensatz dazu iterativ arbeitet und deshalb nur konstanten Laufzeit-Stack benötigt. heneys lgorithmus ist die effizienteste Implementierung von opying G. 3.2 heneys nsatz reitensuche Um heneys lgorithmus zu verstehen, betrachten wir zunächst einen einfachen lgorithmus für reitensuche (breadth first search) in einem Graphen (bbildung 2). ieser durchmustert den gesamten Graphen, wobei er jeden Knoten nur einmal in die Queue einträgt. ie Laufzeit ist offensichtlich linear in der nzahl der Knoten. q = new queue for x in root set do q.pushack(x) x.marksseen while not q.isempty do d = q.popfront for x in d.children do if x.notyetseen then q.pushack(x) x.marksseen a) Pseudocode b) Illustration (Nummern geben die Reihenfolge der Exploration an) bbildung 2: reitensuche Eine Queue im -Space heneys Idee war jetzt, den -Space als Queue-atenstruktur zu nutzen. azu benötigt man zwei Zeiger, im Folgen und genannt, die beide in den -Space zeigen. 3

4 zeigt hinter das letzte kopierte Object und repräsentiert das Ende der Queue. zeigt auf das nächste zu ne Objekt und stellt den nfang der Queue dar. (Siehe bbildung 3; dort ist der Graph aus bbildung 1 zu sehen, von dem schon die Objekte, und in den -Space kopiert wurden. ist schon wieder aus der Queue entfernt und somit vollständig abgearbeitet.) bbildung 3: und, Forwarding Pointers (er Graph entspricht dem aus bbildung 1, einige Zeiger wurden durch Forwarding Pointer überschrieben: In Objekt wurde z.. der Zeiger auf mit überschrieben.) ie eschreibung des lgorithmus ist jetzt einfach: q.pushack entspricht dem Kopieren des Objekts in den -Space mit anschließem Verschieben von hinter das Ende des Objekts. q.popfront entspricht dem uslesen des Objekts an Position mit anschließem Verschieben von auf das nächste Objekt. q.isempty ist äquivalent zu =. (as bedeutet insbesondere, dass der lgorithmus terminiert, wenn sich und treffen.) Forwarding Pointers Ein wichtiger spekt muss aber noch berücksichtigt werden: ie Zeiger innerhalb der Objekte müssen entsprech auf die Kopien umgeleitet werden. er erste Fall ist dabei einfach: Wenn der lgorithmus ein Objekt erreicht und kopiert, schreibt er den Zeiger, über den das Objekt erreicht wurde, auf die neue dresse um (dieser Fall trifft auch auf Zeiger aus dem Root-Set zu). Etwas schwieriger wird es beim zweiten Fall: Was passiert, wenn ein schon kopiertes Objekt nochmal über einen Zeiger erreicht wird? In diesem Fall bedient man sich sogenannter Forwarding Pointer. Sobald ein Objekt kopiert wird, wird zum eispiel im ersten Feld des Original-Objektes die neue dresse hinterlegt. Wenn dieses Objekt jetzt nochmal erreicht wird, merkt der lgorithmus, dass es sich um ein schon kopiertes 4

5 Objekt handelt und kann den Zeiger, über den das Objekt erreicht wurde, entsprech umleiten (siehe ebenfalls bbildung 3) llokation ie llokation von neuem Speicher zwischen zwei G -Zyklen erfolgt linear, hierzu kann benutzt werden (der ja, nach Vertauschen der Rollen, jetzt im -Space liegt). Neuer Speicher wird dann allokiert, indem der aktuelle als nfang des Speicher-lockes zurückgegeben und dann hinter das Ende des lockes verschoben wird. er vollständige lgorithmus ist in bbildung 4, eine Illustration seiner Vorgehensweise in bbildung 5 zu sehen. 2 In der arstellung werden die Objekte in drei Farben dargestellt: Weiße Objekte gelten nach der Garbage ollection als Müll, graue Objekte wurden schon kopiert, aber noch nicht vollständig bearbeitet, bei schwarzen Objekten ist die earbeitung abgeschlossen. Konkret heißt das, dass alle Objekte im -Space weiß sind (und bleiben), in den -Space kopierte Objekte sind zuerst grau, und wenn über sie hinweggelaufen ist werden sie schwarz. Somit sind am Ende der G (wenn = ) alle lebigen Objekte schwarz. //q = new queue new = new pointer for x in root set do //pushack(x) copy(x, ) setforwardingpointer(x, ) x.marksseen +=sizeof(x) while not = do d = objectt( ) //q.popfront for x in d.children do if x.notyetseen then //q.pushack(c) copy(x, ) setforwardingpointer(x, ) new = x.marksseen +=sizeof(x) else new = getforwardingpointer(x) update(c.child(x), new) bbildung 4: heneys lgorithmus, Pseudocode 3.3 Voraussetzungen für den lgorithmus heneys lgorithmus macht folge Voraussetzungen über ufbau und Eigenschaften der behandelten Objekte: ie Größe eines Objekts muss bekannt sein, um und entsprech inkrementieren zu können. Zu jedem Objekt muss bekannt sein, wie man dessen Kinder erreicht, also wo im Objekt Zeiger auf andere Objekte stehen. 2 Eine animierte arstellung der Vorgehensweise des lgorithmus findet man in [11]. 5

6 bbildung 5: heneys lgorithmus, illustriertes eispiel (Nach dem 6. Schritt folgt noch die Vertauschung der Rollen von -Space und -Space.) 6

7 Objekte müssen als schon gesehen markiert werden können. Man benötigt zwei logisch zusammenhänge Speicher-löcke. ie letzte nnahme kann man insofern aufweichen, als dass man den lgorithmus relativ leicht so anpassen kann, dass er eine Kette von - und -Spaces benutzt (siehe bbildung 6). Spaces Spaces bbildung 6: Kette von Speicherblöcken 3.4 Eigenschaften des lgorithmus heneys lgorithmus hat einige wichtige Eigenschaften, die ihn interessant machen. Sie wurden teilweise schon oben erwähnt und sollen hier noch einmal zusammengefasst werden: ie wichtigste Eigenschaft von heneys lgorithmus ist der Speicherverbrauch: Es wird nur konstanter Speicher auf dem Stack benötigt. iese Eigenschaft ist es, die den lgorithmus so effizient macht und die auch zu seiner Verbreitung beigetragen hat. ie Laufzeit beträgt O(l), wenn l die nzahl der lebigen Objekte ist, da nur diese vom lgorithmus betrachtet werden 3. Zyklische atenstrukturen sowie Sharing 4 werden korrekt behandelt (mittels Forwarding Pointers). as heißt, dass bei der G die gesamte Struktur des Graphen in den -Space kopiert wird, Zykel und Sharing also erhalten bleiben. er freie Speicher ist nach der G kompakt, es tritt also keine Fragmentierung auf. heneys ollector ist ein Stop/Start-ollector, der Mutator muss also für die G angehalten werden. Zwischen zwei G -Zyklen ist dafür aber keine weitere rbeit zu leisten, insbesondere sind keine Lese- oder Schreibbarrieren nötig. 4 Nachteile der opying G 4.1 uf hoher Ebene ie Laufzeit von opying G hängt nicht nur von der nzahl der lebigen Objekte, sondern auch von deren Größe ab. Währ es bei kleinen Objekten keinen nennenswerten Unterschied macht, ob man sie nur markiert oder kopiert, kann das bei großen Objekten stark ins Gewicht 3 In [1] wird beschrieben, dass in SML/NJ währ der G nur etwa 2% der Objekte überleben; diese Eigenschaft trägt also stark zur Effizienz bei. 4 Sharing bedeutet, dass mehrere Zeiger auf dasselbe Objekt verweisen 7

8 fallen. Insbesondere für große, langlebige Objekte (die folglich oft kopiert werden müssen) ist opying G also nicht optimal. Ein weiterer Nachteil kann sein, dass die doppelte Menge an logischem Speicher nötig ist. as stellt auf modernen Rechnern dank virtuellem Speicher kein größeres Problem dar, kann aber evtl. bei kleinen rchitekturen wie zum eispiel Handhelds gegen opying G sprechen (siehe zum eispiel [3]). 4.2 uf niedriger Ebene ie reitensuche, die zum espiel in heneys lgorithmus benutzt wird, führt dazu, dass Objekte, die zuvor nahe beieinander im Speicher lagen, nach der G weit voneinander entfernt liegen können. ie sogenannte Lokalität wird also zerstört. Man kann annehmen, dass logisch, also vom Programmfluss her zusammenhänge Objekte kurz hintereinander erzeugt werden und deshalb (wegen der linearen llokation) nahe zusammen im Speicher liegen (siehe [7]). Wenn jetzt also nach der G wieder auf diese Objekte zugegriffen wird, liegen sie weit auseinander, so dass ache misses oder sogar Page faults auftreten können, die zu Performanz-Einbußen führen. iese spekte sind aber so stark von der Implementierung und der rchitektur, auf der diese laufen soll, abhängig, dass hier nicht weiter darauf eingegangen wird. 5 Variationen usgeh von den im vorigen bschnitt vorgestellten Nachteilen könnte man folge Variationen in etracht ziehen: 1. Spezielle ehandlung großer Objekte (Large Object reas). Große Objekte werden aus dem Zuständigkeitsbereich des opying Garbage ollectors herausgenommen und separat, mit einer anderen G -Strategie, behandelt (siehe [4], [13]). 2. ereiche langlebiger Objekte Objekte, von denen festgestellt werden kann, dass sie eine lange Lebenszeit haben, werden in speziellen ereichen gespeichert. Ihre Zeiger werden zwar gent (um andere lebige Objekte zu finden), sie werden aber nie kopiert. 3. eibehaltung der Lokalität durch andere Explorations-Strategien Tiefensuche (epth first search) hat die Eigenschaft, Lokalität zu bewahren. Es gibt einige nsätze, andere Explorationsstrategien, die der Tiefensuche ähnlich sind, zu benutzen, aber dabei ist es immer sehr schwierig, trotzdem mit konstantem Laufzeit-Stack auszukommen. Ohne die Eigenschaft kann man den lgorithmus nicht mehr als effizient betrachten. Einige eispiele kann man in [8] finden, genauere Informationen zum eispiel in [10] oder [12]. esonders der Punkt 2 ist dabei interessant. ie Forschung auf diesem ereich führte zur Entwicklung der generationalen G, bei dem unterschiedlich alte Objekte (Objekte verschiedener 8

9 Generationen) unterschiedlich behandelt werden. 6 Verbesserung der Effizienz Hier soll eine relativ einfache Möglichkeit vorgestellt werden, die Effizienz eines opying Garbage ollectors zu verbessern. Eine erste eobachtung (die eigentlich trivial ist) besagt, dass die Häufigkeit, mit der der Garbage ollector aufgerufen wird, abnimmt, wenn die Semi-Spaces größer sind. abei spielt aber noch eine weitere Tatsache eine Rolle: Üblicherweise ist der Speicherplatzbedarf der lebigen Objekte über die Laufzeit des Programmes relativ konstant. as heißt aber, dass der Garbage ollector, obwohl er seltener aufgerufen wird, die gleiche Menge an lebigen Objekten kopieren muss (siehe bbildung 7). Mehr noch: Je seltener die Garbage ollection einsetzt, desto älter werden die Objekte. Es ist also wahrscheinlich, dass bei größeren Semi-Spaces zum Zeitpunkt der G sogar weniger Objekte lebig sind. ies alles ist natürlich nur relevant, weil die Laufzeit von opying G nur von der nzahl der lebigen Objekte abhängt. Theoretisch lässt sich die Effizienz auf diesem Weg beliebig steigern, wie in [2] beschrieben wird. ie Vergrößerung der Semi-Spaces ist aber selbstverständlich nur dann sinnvoll, wenn sie innerhalb des physikalisch verfügbaren Speichers passiert. Ein uslagern eines Semi-Spaces auf Festplatte zum eispiel hätte katastrophale uswirkungen auf die Laufzeit. 7 Einsatzgebiete von opying G Wann ist es also sinnvoll, einen opying Garbage ollector einzusetzen? Hier lassen sich drei Kriterien identifizieren: 1. ie Speicherverwaltung wird von llokation dominiert. ei Systemen mit dieser Eigenschaft kann opying G große Vorteile gegenüber anderen Verfahren bieten, da llokation extrem billig ist. 2. Es gibt viele kleine, kurzlebige Objekte. Hier kann opying G punkten, da nur lebige Objekte behandelt werden. ußerdem ist das Kopieren kleiner Objekte fast genauso teuer wie das Markieren (zum eispiel also im Vergleich zu mark-sweep). 3. ie Verzögerung durch G spielt keine Rolle. Echtzeit-Systeme sind also kein typisches nwungsbeispiel für einen klassischen opying Garbage ollector. 9

10 2x3 M 3 M 2 M 2 M 2 M 2 M 2 M 13 M llokation 2x6 M 6 M 2 M 5 M bbildung 7: Effizienzsteigerung durch größere Semi-Spaces 8 Zusammenfassung und usblick opying G ist eine effiziente Methode, um eine automatische Speicherverwaltung zu implementieren. heneys lgorithmus ist die effizienteste Implementierung von opying G ; effizient wird sie dadurch, dass nur konstanter Stack zur Laufzeit benötigt wird und die Laufzeit der G nur von der nzahl der lebigen Objekte abhängt. Es wurde gezeigt, wie die Laufzeit von opying G von dem Parameter der Größe der Semi-Spaces abhängt. ußerdem wurden Probleme behandelt, die durch opying G auftreten, insbesondere was große Objekte und Lokalität angeht. bschließ wurde eine ewertung gegeben, in welchen Zusammenhang die enutzung eines Garbage ollectors mit opying sinnvoll sein kann und wo eher nicht. ie Idee, große Objekte getrennt zu behandeln, führt zur Entwicklung von hybriden Systemen, in denen ein Teil der G von einem opying ollector gemacht wird, ein anderer Teil aber zum eispiel von Mark-Sweep oder Mark-ompact. ls usblick sollte noch erwähnt werden, dass opying G die asis für viele andere G - Verfahren bildet: sowohl generationale als auch inkrementelle Verfahren bauen oft auf opying auf. 10

11 Literatur [1] ndrew W. ppel. ompilers and runtime systems for languages with garbage collection. [2] ndrew W. ppel. Garbage collection can be faster than stack allocation. Information Processing Letters, 25(4): , [3] Fred ayer, LispMe (Scheme for the Palm Pilot), hood.htm#gc. [4] Patrick J. audill and llen Wirfs-rock. third-generation Smalltalk-80 implementation. pages [5]. J. heney. non-recursive list compacting algorithm. ommunications of the M, 13(11):677 8, November [6] Robert R. Fenichel and Jerome. Yochelson. Lisp garbage collector for virtual memory computer systems. ommunications of the M, 12(11): , November [7] arry Hayes. Using key object opportunism to collect old objects. pages [8] Richard E. Jones and Rafael. Lins. Garbage ollection: lgorithms for utomatic ynamic Memory Management. John Wiley & Sons, New York, [9] Marvin L. Minsky. Lisp garbage collector algorithm using serial secondary storage. Technical Report Memo 58 (rev.), Project M, MIT, ambridge, M, ecember [10] avid. Moon. Garbage collection in a large LISP system. pages [11] Guido Tack, opying G, Seminar-Folien, gc.pdf. [12] Stephen P. Thomas and Richard E. Jones. Garbage collection for shared environment closure reducers. Technical Report 31 94, University of Kent and University of Nottingham, ecember [13] avid M. Ungar and Frank Jackson. Tenuring policies for generation-based storage reclamation. 23(11):1 17,

Programmiertechnik II

Programmiertechnik II Automatische Speicherverwaltung Speichermüll Objekte verweisen über Referenzen auf andere Objekte Objekte bilden Graph Explizites Freigeben von Objekten C: free() C++: delete Problem:

Mehr

Garbage Collection. Maik Theisen Betreuer: Guido Tack

Garbage Collection. Maik Theisen Betreuer: Guido Tack Garbage Collection Maik Theisen Betreuer: Guido Tack Proseminar Programmiersysteme WS 03/04 Prof. Dr. Gert Smolka Programming Systems Lab, Universität des Saarlandes Garbage Collection (GC) hat sich mittlerweile

Mehr

Early first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement

Early first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement Early first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement Max Haslbeck Technische Universität München 20.01.2015 Zusammenfassung 1 Einleitung 2 Begriffsklärung Heutzutage

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 9. Klassische Suche: Tiefensuche und iterative Tiefensuche Malte Helmert Universität asel 21. März 2014 Tiefensuche Iterative Tiefensuche linde Suche: Zusammenfassung

Mehr

9.1 Tiefensuche. Grundlagen der Künstlichen Intelligenz. 9.1 Tiefensuche. 9.2 Iterative Tiefensuche. 9.3 Blinde Suche: Zusammenfassung

9.1 Tiefensuche. Grundlagen der Künstlichen Intelligenz. 9.1 Tiefensuche. 9.2 Iterative Tiefensuche. 9.3 Blinde Suche: Zusammenfassung Grundlagen der Künstlichen Intelligenz 21. März 2014 9. Klassische Suche: Tiefensuche und iterative Tiefensuche Grundlagen der Künstlichen Intelligenz 9. Klassische Suche: Tiefensuche und iterative Tiefensuche

Mehr

Google s JavaScript Engine: V8

Google s JavaScript Engine: V8 Google s JavaScript Engine: V8 Thomas Hütter (1120239) Mario Preishuber (1120643) Fachbereich Computerwissenschaften Naturwissenschaftliche Fakultät 24. Februar 2014 1 von 17 INHALT Allgemein Was ist JavaScript?

Mehr

Informatik II SS Inhalt. Objektlebensdauer (2/3) Objektlebensdauer (1/3)

Informatik II SS Inhalt. Objektlebensdauer (2/3) Objektlebensdauer (1/3) Inhalt Informatik II SS 2004 Teil 6: Sprachen, Compiler und Theorie 5 Lebensdauer von Objekten Speichermanagement Weiterführende Spracheigenschaften und Bindungen Implementierung von statischen Gültigkeitsbereichen

Mehr

Concurrent Garbage Collector

Concurrent Garbage Collector Concurrent Garbage Collector Sprachen für Parallelprogrammierung: Seminar 6 Emre Kasif Selengin IPD Snelting, Lehrstuhl Programmierparadigmen KIT Universität des Landes Baden-Württemberg und nationales

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

Mehr

7. Verkettete Strukturen: Listen

7. Verkettete Strukturen: Listen 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Version: 4. Jan. 2016 Vergleich: Schwerpunkte Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++):

Mehr

Freispeicherverwaltung Martin Wahl,

Freispeicherverwaltung Martin Wahl, Freispeicherverwaltung Martin Wahl, 17.11.03 Allgemeines zur Speicherverwaltung Der physikalische Speicher wird in zwei Teile unterteilt: -Teil für den Kernel -Dynamischer Speicher Die Verwaltung des dynamischen

Mehr

6. Kapitel Speicherbereinigung

6. Kapitel Speicherbereinigung 6. Kapitel Speicherbereinigung Prof. Dr. Gerhard Goos Übersetzerbau WS 2006/2007 (6) 1 Kapitel 6: Speicherbereinigung 1. Einleitung Alternativen Methodik 2. Markieren 3. Verfahren mit Freiliste mark-and-sweep

Mehr

Zusammenfassung des 2. Abends

Zusammenfassung des 2. Abends lgorithmen in der iologie r. Hans-Joachim öckenhauer r. ennis Komm Zusammenfassung des. bends Zürich, 0. pril 0 lignment-verfahren Für einen Überblick über die lignment-lgorithmen zur estimmung der Ähnlichkeit

Mehr

6. Verkettete Strukturen: Listen

6. Verkettete Strukturen: Listen 6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten

Mehr

8 Elementare Datenstrukturen

8 Elementare Datenstrukturen Algorithmen und Datenstrukturen 186 8 Elementare Datenstrukturen In diesem und dem folgenden Kapitel werden grundlegende Techniken der Darstellung und Manipulation dynamischer Mengen auf Computern vorgestellt.

Mehr

Wie groß ist die Page Table?

Wie groß ist die Page Table? Wie groß ist die Page Table? Im vorigen (typischen) Beispiel verwenden wir 20 Bits zum indizieren der Page Table. Typischerweise spendiert man 32 Bits pro Tabellen Zeile (im Vorigen Beispiel brauchten

Mehr

Lokale Strategien zur Garbage Collection Problemstellung der verteilten Gargabe Collection Algorithmen

Lokale Strategien zur Garbage Collection Problemstellung der verteilten Gargabe Collection Algorithmen Garbage Collection Überblick Literatur Lokale Strategien zur Garbage Collection Problemstellung der verteilten Gargabe Collection Algorithmen S. Blackburn et al: Starting with Termination: A Methodology

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Funktionale rogrammierung uffman-kodierung ildquelle: http://www.fim.uni-linz.ac.at/lva/echtlichespekte//tegano/bilder/huffman.gif Funktionale rogrammierung otivation ir möchten achrichten komprimieren:

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 10 (27.5.2016) Binäre Suchbäume II Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 6 (14.5.2014) Abstrakte Datentypen, Einfache Datenstrukturen Algorithmen und Komplexität Abstrakte Datentypen : Beispiele Dictionary: (auch:

Mehr

Übersicht Datenstrukturen und Algorithmen. Übersicht. Probleme auf kantengewichteten Graphen. Vorlesung 14: Minimale Spannbäume

Übersicht Datenstrukturen und Algorithmen. Übersicht. Probleme auf kantengewichteten Graphen. Vorlesung 14: Minimale Spannbäume Übersicht atenstrukturen und lgorithmen Vorlesung : Prof. r. rika Ábrahám Theorie ybrider Systeme Informatik http://ths.rwth-aachen.de/teaching/ss-/ datenstrukturen-und-algorithmen/ 1 reedy lgorithmen

Mehr

Algorithmen I - Tutorium 28 Nr. 9

Algorithmen I - Tutorium 28 Nr. 9 Algorithmen I - Tutorium 28 Nr. 9 29.06.2017: Spaß mit Graphen und Graphtraversierung Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN MÜLLER-QUADE

Mehr

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

Metriken und optimale Einsatzszenarien für Garbage Collectoren der Java HotSpot Virtual Machine

Metriken und optimale Einsatzszenarien für Garbage Collectoren der Java HotSpot Virtual Machine Metriken und optimale Einsatzszenarien für Garbage Collectoren der Java HotSpot Virtual Machine Michael Schmeißer michael@skamandros.de 25. September 2012 25.09.2012 Michael Schmeißer, Auswahl eines Garbage

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 17 (8.7.2014) Minimale Spannbäume II Union Find, Prioritätswarteschlangen Algorithmen und Komplexität Minimaler Spannbaum Gegeben: Zus. hängender,

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

Mehr

Huffman-Kodierung. Prof. Dr. Margarita Esponda

Huffman-Kodierung. Prof. Dr. Margarita Esponda uffman-kodierung rof. r. argarita sponda otivation ir möchten achrichten komprimieren: - peicherplatzreduzierung => nergie und Zeit bei Übertragung sparen - ohne nformationsverlust - mit einer effizienten

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 6 Cache-freundliche Programmierung (1) Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Quadratische Matrizen Musterlösung

Mehr

10. Übungsblatt zu Algorithmen I im SS 2010

10. Übungsblatt zu Algorithmen I im SS 2010 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders G.V. Batz, C. Schulz, J. Speck 0. Übungsblatt zu Algorithmen I im SS 00 http//algo.iti.kit.edu/algorithmeni.php

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

Freispeicherverwaltung

Freispeicherverwaltung Freispeicherverwaltung Allgemeine Techniken und Anwendung unter Linux Martin Wahl, 17.11.03 Freispeicherverwaltung 1 Überblick Allgemeines Suchstrategien Verwaltungsstrategien externer / interner Verschnitt

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu

Mehr

Nachtrag: Vergleich der Implementierungen von Stack

Nachtrag: Vergleich der Implementierungen von Stack Nachtrag: Vergleich der Implementierungen von Stack In der letzten Vorlesung hatten wir zwei Implementierung der Klasse Stack: eine Implementierung als Liste (Array): liststack eine Implementierung als

Mehr

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten

Mehr

Algorithmen und Datenstrukturen Heapsort

Algorithmen und Datenstrukturen Heapsort Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das

Mehr

Konzepte von Betriebssystemkomponenten Referat am Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner

Konzepte von Betriebssystemkomponenten Referat am Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner Konzepte von Betriebssystemkomponenten Referat am 24.11.2003 Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner Gliederung Adressräume Page Faults Demand Paging Copy

Mehr

Programmieren I. Kapitel 12. Referenzen

Programmieren I. Kapitel 12. Referenzen Programmieren I Kapitel 12. Referenzen Kapitel 12: Referenzen Ziel: Die Wahrheit über Objekte Lebensdauer Speicherverwaltung Parameterübergabemechanismen in Methoden Gleichheiten, Kopien Arrays Speicherbereinigung

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

Mehr

10. Übungsblatt zu Algorithmen I im SoSe 2016

10. Übungsblatt zu Algorithmen I im SoSe 2016 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. r. ennis ofheinz Lukas arth, Lisa Kohl 0. Übungsblatt zu lgorithmen I im SoSe 0 https://crypto.iti.kit.edu/index.php?id=algo-sose

Mehr

10.1 Blinde Suche Blinde Suche. Grundlagen der Künstlichen Intelligenz Breitensuche: Einführung BFS-Tree. 10.

10.1 Blinde Suche Blinde Suche. Grundlagen der Künstlichen Intelligenz Breitensuche: Einführung BFS-Tree. 10. Grundlagen der Künstlichen Intelligenz 13. März 2015 10. Klassische Suche: Grundlagen der Künstlichen Intelligenz 10. Klassische Suche: Malte Helmert Universität asel 13. März 2015 10.1 linde Suche 10.2

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

Mehr

Wintersemester 2004/ Dezember 2004

Wintersemester 2004/ Dezember 2004 Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen). Schreiben von Pages Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen). Write Through Strategie (siehe Abschnitt über Caching) ist hier somit nicht sinnvoll. Eine sinnvolle

Mehr

Lösungsvorschläge zur Hauptklausur 1661 Datenstrukturen I

Lösungsvorschläge zur Hauptklausur 1661 Datenstrukturen I Lösungsvorschläge zur Hauptklausur 1 atenstrukturen I 7.. ernuniversität in Hagen lle Rechte vorbehalten Seite 2 Lösungsvorschläge zur Klausur vom 7.. Kurs 1 atenstrukturen I ufgabe 1 (a) algebra sorts

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 13 (8.6.2016) Graphenalgorithmen I Algorithmen und Komplexität Graphen Knotenmenge V, typischerweise n V Kantenmenge E, typischerweise

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 13. Vorlesung Binäre Suchbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Dynamische Menge verwaltet Elemente einer sich ändernden Menge

Mehr

Breitensuche BFS (Breadth First Search)

Breitensuche BFS (Breadth First Search) Breitensuche BFS (Breadth First Search) Algorithmus BREITENSUCHE EINGABE: G = (V, E) als Adjazenzliste, Startknoten s V 1 Für alle v V 1 If (v = s) then d[v] 0 else d[v] ; 2 pred[v] nil; 2 Q new Queue;

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B4. Priority Queues und Heaps Marcel Lüthi and Gabriele Röger Universität Basel 28. März 2018 Einführung Kollektion von Elementen Grundlegende Operationen sind Einfügen

Mehr

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 29.05.2011 Das Postamt-Problem b(p, q) = {x R 2 : xp = xq } p q h(p, q) h(q, p) = {x :

Mehr

Java Garbage Collector: Funktionsweise und Optimierung. Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, )

Java Garbage Collector: Funktionsweise und Optimierung. Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, ) Java Garbage Collector: Funktionsweise und Optimierung Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, 20.11.2012) 1 Agenda Algorithmen Tuning Performance-Messungen Zusammenfassung 2 Mathias Dolag / Prof.

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

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

Universität Hamburg. Seminar: Effiziente Programmierung in C. Referenzzählung. Autoren: Kevin Köster. Betreuer: Michael Kuhn

Universität Hamburg. Seminar: Effiziente Programmierung in C. Referenzzählung. Autoren: Kevin Köster. Betreuer: Michael Kuhn Universität Hamburg Seminar: Effiziente Programmierung in C Referenzzählung Autoren: Kevin Köster Betreuer: Michael Kuhn 31. März 2013 Inhaltsverzeichnis 1 Einleitung 3 1.1 Das Problem.................................

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 14. Klassische Suche: IDA Malte Helmert Universität Basel 31. März 2014 Klassische Suche: Überblick Kapitelüberblick klassische Suche: 3. 5. Einführung 6. 9. Basisalgorithmen

Mehr

Globalübungsaufgabe1 (All Pair Shortest Path):

Globalübungsaufgabe1 (All Pair Shortest Path): Prof. aa r. Ir. G. Woeginger atenstrukturen und lgorithmen SS7 Tutoriumslösung - Übung 0 (bgabe 2.07.207) T. Hartmann,. Korzeniewski,. Tauer Globalübungsaufgabe (ll Pair Shortest Path): etrachten Sie den

Mehr

Peg-Solitaire. Florian Ehmke. 29. März / 28

Peg-Solitaire. Florian Ehmke. 29. März / 28 Peg-Solitaire Florian Ehmke 29. März 2011 1 / 28 Gliederung Einleitung Aufgabenstellung Design und Implementierung Ergebnisse Probleme / Todo 2 / 28 Einleitung Das Spiel - Fakten Peg-33 33 Löcher, 32 Steine

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

Automatisches Speichermanagement

Automatisches Speichermanagement Automatisches Speichermanagement Compilerbau Automatisches Speichermanagement 284 Automatisches Speichermanagement Viele moderne Programmiersprachen verfügen über automatisches Speichermanagement. Durch

Mehr

Implementierung eines Baumes (in Python)

Implementierung eines Baumes (in Python) Satz: in maximal vollständiger binärer aum der Höhe h enthält 2 h-1 lätter und 2 h -1 Knoten und 2 h-1-1 inneren Knoten. eweis: 1. nduktionsanfang: h= 1 Der aum besteht nur aus der Wurzel, die auch das

Mehr

Graphalgorithmen I. Yannik Tannhäuser Hallo Welt! -Seminar LS 2

Graphalgorithmen I. Yannik Tannhäuser Hallo Welt! -Seminar LS 2 Graphalgorithmen I Yannik Tannhäuser 22.05.2019 Hallo Welt! -Seminar LS 2 Motivation Königsberger rückenproblem, 1736 von Leonhard uler gelöst Viele Probleme lassen sich auf (auch heute noch) Graphen übertragen

Mehr

Tutoraufgabe 1 (Floyd-Warshall):

Tutoraufgabe 1 (Floyd-Warshall): für Informatik Prof. aa r. Ir. Joost-Pieter Katoen atenstrukturen und lgorithmen SS hristian ehnert, Friedrich Gretz, enjamin Kaminski, Thomas Ströder Tutoraufgabe (Floyd-Warshall): etrachten Sie den folgenden

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 15b (13.06.2018) Graphenalgorithmen IV Algorithmen und Komplexität Prims MST-Algorithmus A = while A ist kein Spannbaum do e = u, v ist

Mehr

Datenstrukturen und Algorithmen. Vorlesung 8

Datenstrukturen und Algorithmen. Vorlesung 8 Datenstrukturen und Algorithmen Vorlesung 8 Inhaltsverzeichnis Vorige Woche: ADT Stack ADT Queue Heute betrachten wir: ADT Deque ADT Prioritätsschlange Binomial-Heap Schriftliche Prüfung Informationen

Mehr

3. Hausübung Algorithmen und Datenstrukturen

3. Hausübung Algorithmen und Datenstrukturen Prof. Dr. Gerd Stumme, Folke Eisterlehner, Dominik Benz Fachgebiet Wissensverarbeitung 3. Hausübung Algorithmen und Datenstrukturen Sommersemester 2009 Abgabetermin: Montag, 18.05.2009, 10:00 Uhr 11.05.2009

Mehr

Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin

Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin Departement Mathematik und Informatik Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin 12. April 2017 Union-Find Datenstruktur Graphen I Robert E. Tarjan Algorithmen und Datenstrukturen,

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer

Mehr

11. Rekursion, Komplexität von Algorithmen

11. Rekursion, Komplexität von Algorithmen nwendung der Rekursion 11. Rekursion, Komplexität von lgorithmen Teil 2 Java-eispiele: Power1.java Hanoi.java Rekursiv definierte Funktionen - Fibonacci-Funktion - Fakultät, Potenz -... Rekursiver ufbau

Mehr

Beispiellösungen zu Blatt 107

Beispiellösungen zu Blatt 107 µ κ Mathematisches Institut eorg-ugust-universität öttingen ufgabe 1 eispiellösungen zu latt 107 onstruiere eine Menge M aus 107 positiven ganzen Zahlen mit der folgenden igenschaft: eine zwei der Werte

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen

Mehr

Graphenalgorithmen I

Graphenalgorithmen I Graphenalgorithmen I Vortrag im Seminar Hallo Welt! für Fortgeschrittene 7. Juni 211 Graphenalgorithmen I 1/33 Motivation Problem Wie komme ich am schnellsten ins Kanapee? Problem Wie kommt ein Datenpaket

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 Offenes Hashing) Prof. Dr. Susanne Albers Hashing: Allgemeiner Rahmen Schlüsselmenge S Universum U aller möglichen Schlüssel Hashfunktion h 0,,m-1

Mehr

Algorithmen I - Tutorium 28 Nr. 3

Algorithmen I - Tutorium 28 Nr. 3 Algorithmen I - Tutorium 28 Nr. 3 18.05.2016: Spaß mit Listen, Arrays und amortisierter Analyse Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

IR Seminar SoSe 2012 Martin Leinberger

IR Seminar SoSe 2012 Martin Leinberger IR Seminar SoSe 2012 Martin Leinberger Suchmaschinen stellen Ergebnisse häppchenweise dar Google: 10 Ergebnisse auf der ersten Seite Mehr Ergebnisse gibt es nur auf Nachfrage Nutzer geht selten auf zweite

Mehr

Effiziente Algorithmen Übung 2

Effiziente Algorithmen Übung 2 Effiziente Algorithmen Übung 2 Aufgabe 3 Circular Reversal Sort Gruppe E Martin Schliefnig, 0160919 Christoph Holper, 9927191 Ulrike Ritzinger, 0125779 1. Problemstellung Ein DNA Molekül muss nicht immer

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 6. Klassische Suche: Datenstrukturen für Suchalgorithmen Malte Helmert Universität Basel 7. März 2014 Klassische Suche: Überblick Kapitelüberblick klassische Suche:

Mehr

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B3.1 Einführung. B3.2 Verkettete Liste. B3.3 Bäume

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B3.1 Einführung. B3.2 Verkettete Liste. B3.3 Bäume Algorithmen und Datenstrukturen 22. März 2018 B3. Verkettete Listen und Bäume Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume B3.1 Einführung Marcel Lüthi and Gabriele Röger B3.2 Verkettete

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 12 (4.6.2018) Graphenalgorithmen I Yannic Maus Algorithmen und Komplexität Graphen Knotenmenge V, typischerweise n V Kantenmenge E, typischerweise

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 6 (6.5.2016) Abstrakte Datentypen, Einfache Datenstrukturen Algorithmen und Komplexität Abstrakte Datentypen : Beispiele Dictionary: (auch:

Mehr

Formale Systeme, WS 2010/2011 Lösungen zum Übungsblatt 1

Formale Systeme, WS 2010/2011 Lösungen zum Übungsblatt 1 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. r. B. Beckert Thorsten Bormer Formale Systeme, WS 2/2 Lösungen zum Übungsblatt ieses Blatt wurde in der Übung am 29..2 besprochen.

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume Marcel Lüthi and Gabriele Röger Universität Basel 22. März 2018 Einführung Abstrakter Datentyp / Datenstruktur Abstrakter Datentyp Eine Menge

Mehr

Fallstudie: Online-Statistik

Fallstudie: Online-Statistik Fallstudie: Online-Statistik Ziel: Klasse / Objekt, welches Daten konsumiert und zu jeder Zeit Statistiken, z.b. Mittelwert, Varianz, Median (etc.) ausgeben kann Statistics s = new Statistics(maxSize);...

Mehr

Krawatterätsel - Verbesserung der oberen Schranke

Krawatterätsel - Verbesserung der oberen Schranke Krawatterätsel - Verbesserung der oberen Schranke Felix Kälberer, Matthias Nieser, Ulrich Reitebuch 29. Dezember 2008 Zusammenfassung Die folgenden Seiten beschreiben neue Erkenntnisse im Krawattenrätsel.

Mehr

Krawattenrätsel - Verbesserung der oberen Schranke

Krawattenrätsel - Verbesserung der oberen Schranke Krawattenrätsel - Verbesserung der oberen Schranke Felix Kälberer, Matthias Nieser, Ulrich Reitebuch 9. Dezember 008 Zusammenfassung Die folgenden Seiten beschreiben neue Erkenntnisse im Krawattenrätsel.

Mehr

Dynamische Speicherverwaltung

Dynamische Speicherverwaltung Dynamische Speicherverwaltung 1/ 23 Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Dynamische Speicherverwaltung 2/ 23 Gliederung 1 Allgemeines zur Speichernutzung 2 Ziele und Nutzen 3 Anwendung in

Mehr

Divide and Conquer. Teile-und-herrsche. Ferd van Odenhoven. 7. Oktober 2010

Divide and Conquer. Teile-und-herrsche. Ferd van Odenhoven. 7. Oktober 2010 7. Oktober 2010 eile und Herrsche eile-und-herrsche (Divide-and-conquer) Divide and Conquer Ferd van Odenhoven Fontys Hogeschool voor echniek en ogistiek Venlo Software ngineering 7. Oktober 2010 OD/FHB

Mehr

Programmierkurs Python II

Programmierkurs Python II Programmierkurs Python II Michaela Regneri & Stefan Thater FR 4.7 Allgemeine Linguistik (Computerlinguistik) Universität des Saarlandes Sommersemester 2011 Prüfungsleistungen Klausur am Semesterende -

Mehr

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B7. Balancierte Bäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 13. April 2018 1 Folien basieren auf Vorlesungsfolien von Sedgewick & Wayne https://algs4.cs.princeton.edu/lectures/33balancedsearchtrees-2x2.pdf

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr