Algorithmen und Datenstrukturen CS1017
|
|
- Caroline Schmidt
- vor 5 Jahren
- Abrufe
Transkript
1 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Entwurf von Algorithmen I Rohe Kraft / Erschöpfende Suche Kombinatorische Objekte
2 Entwurf von Algorithmen Paradigmen des Algorithmen-Entwurfs Der Entwurf neuer Algorithmen erfordert Kreativität. Allgemeine Denk- und Lösungsansätze (Paradigmen, Strategien, Entwurfstechniken) können dabei oft sehr nützlich sein: Sie liefern uns Muster zur Lösung unterschiedlicher Probleme. Sie können systematisch in gängige Kontroll- und Datenstrukturen diverser Programmiersprachen umgesetzt werden. Das Verhalten (Effizienz, Komplexität) der entsprechenden Algorithmen ist bekannt. Bekannte Strategien für den Entwurf von Algorithmen (kurz Algorithmische Strategien) Rohe-Kraft / Erschöpfende Suche Optimierungen der erschöpfenden Suche Backtracking Branch-and-Bound Reduziere und Herrsche / Teile-und-Herrsche Dynamische Programmierung Gier... Seite 2
3 Rohe Kraft Rohe Kraft / rohe Gewalt (brute force)... ist das was uns oft als erstes im Angesicht eines Problems einfällt. Algorithmen, die mit der Strategie rohe Kraft entwickelt werden, verwenden eine naheliegende Methode zur Lösung des Problems basieren oft direkt auf der Beschreibung des Problems verzichten auf Optimierungen setzen auf die Kraft des Prozessors Die Strategie rohe Kraft ist angemessen wenn das Problem nur auf kleine Fälle angewendet wird nur selten gelöst werden muss der Aufwand zur Entwicklung besserer Algorithmen nicht lohnt bessere Algorithmen bisher nicht gefunden werden konnten Beispiel berechne an mod m (ein Bestandteil oft genutzter kryptographischer Algorithmen) Algorithmus: 1. multipliziere 1 n-mal mit a 2. bestimme dann den Rest bei ganzzahliger Division durch m rohe Kraft: Der Algorithmus verwendet ein naheliegendes Verfahren das sich direkt an der Problembeschreibung orientiert. Seite 3
4 Rohe Kraft Beispiele für brute force Sortier-Algorithmen - 1 Selection Sort ein einfacher und naheliegender Sortieralgorithmus: Teile die Sequenz in einen sortierten und einen unsortierten Teil. Bringe das jeweils kleinste (größte) Element des unsortierten Teils an das Ende des sortierten Teils. siehe auch Foliensatz 2 Aufwand: O(n2) Selection-Sort(A[0..n-1]) 1. for i 0 to n-1 do 2. min i 3. for j i+1 to n-1 do 4. if A[j] < A[min] then min j 5. swap(a[i], A[min]) Seite 4
5 Rohe Kraft Beispiele für brute force Sortier-Algorithmen - 2 Bubble Sort ein einfacher und naheliegender Sortieralgorithmus: Vergleiche von links nach rechts gehend je zwei nebeneinander liegende Elemente und vertausche sie, wenn sie in der falschen Reihenfolge sind. Am Ende ist das größte (kleinste) Element am Ende. ( Hoch geblubbert ) Wiederhole den Prozess, bis alle Elemente sortiert sind. Aufwand: O(n2) der schlechteste aller bekannten Sortier-Algorithmen Bubble-Sort(A[0..n-1]) 1. for i 0 to n-2 do 2. for j 0 to n-2-i do 3. if A[j+1] < A[j] then swap(a[j], A[j+1]) Seite 5
6 Rohe Kraft Beispiele für brute force Algorithmen Vergleich von Zeichenketten String Matching ein einfacher und naheliegender Algorithmus zum Auffinden einer Zeichenkette (Pattern) p in einem Text t: Vergleiche beginnend mit dem ersten das i-te Element von p mit dem i-ten Element von t solange bis alle als gleich erkannt wurden: s wurde in t gefunden oder bis eine Nichtübereinstimmung gefunden wurde. In dem Fall beginne den gesamten Prozess mit dem nächsten Element in t. Falls t ab der Suchposition kürzer als s ist, beende die Suche mit einem Misserfolg. Aufwand: O(n*m) mit n: Länge von p, m: Länge von t Sting-Match(T[0..n-1], P[0..m-1]) t wenn süß das Mondlicht auf den Hügeln schläft 1. for i 0 to n-m do 2. j 0 3. while j<m && P[j]=T[i+j] do 4. j j+1 5. if j=m then return i 6. return -1 p wenn das Wasser im Rhein Seite 6
7 Erschöpfende Suche Erschöpfende Suche (Exhaustive Search)... wenn man systematisch alle möglichen Lösungen durchgehen kann, dann untersuche jede mögliche Lösung ob sie vielleicht eine Lösung ist. Algorithmen die mit der Strategie erschöpfende Suche entwickelt werden sind eine Variante der Brute-Force-Algorithmen sie benötigen eine Auflistung / Methode zur Generierung aller möglichen Lösungen Mögliche Lösungen werden dann geprüft, ob sie wirklich eine Lösung sind. Die Strategie erschöpfende Suche ist angemessen, wenn das Problem die Auflistung der Lösungskandidaten ermöglicht ansonsten gelten alle Kriterien die für Brute-Force-Algorithmen gelten Problem der Raum der möglichen Lösung ist i.d.r. sehr groß Beispiel Traveling Salesman Problem: berechne die kürzeste Rundreise in einen Graph Algorithmus: Generiere alle Permutationen von Knoten Teste, ob sie eine Rundreise darstellen Berechne dann deren Länge Gib schließlich die kürzeste aus. Seite 7
8 Erschöpfende Suche Generierung von Lösungskandidaten Das zentrale Problem bei einer erschöpfenden Suche ist meist die Generierung der möglichen Lösungen. Mögliche Lösungen Die Menge der möglichen Lösungen sollte eine endliche und echte Obermenge der Lösungsmenge sein leichter zu berechnen sein als die Lösungen Seite 8
9 Erschöpfende Suche Generierung von Lösungskandidaten Sehr oft können die Lösungs-Kandidaten als kombinatorische Objekte oder im Zuge von Traversierungen erzeugt werden. Kombinatorische Objekte sind die Dinge die der Kombinatorik (Teilgebiet der diskreten Mathem.) behandelt werden, z.b.: die Menge Permutationen einer Sequenz die Menge aller Teilmengen einer Menge die Menge aller Kombinationen von Elementen einer Menge... Traversierungen Traversierungen, also das systematischen Durchlaufen einer Datenstruktur, kann verwendet werden, um alle Lösungskandidaten zu erzeugen Alle Elemente einerliste, Alle Kanten eines Baums / Graphen bei dessen (Tiefen-/Breiten-) Traversierung... Seite 9
10 Kombinatorische Objekte Kombinatorische Objekte Beispiele Alle Teilmengen einer Menge (Auswahl ohne Wiederholung) Alle Permutationen einer Sequenz Alle Partitionen einer Menge Auswahl ohne Wiederholung Alle partiellen Teil-Multimengen (Auswahl mit Wiederholung) Teilsequenzen einer Sequenz... Seite 10
11 Kombinatorische Objekte Kombinatorische Objekte Auswahl: k aus n Elementen wählen Siehe Literatur zur Kombinatorik aus: Seite 11
12 Kombinatorische Objekte Kombinatorische Objekte und rohe Kraft Algorithmen Beispiel: Sortieren mit roher Kraft Rohe Kraft, hier direkte Implementierung der Definition Definition Sortieren: Gegen eine Sequenz s, finde eine Permutation von s in der die Elemente ansteigend geordnet sind Mögliche Lösungen Alle Permutationen ein kombinatorisches Objekt Korrekte Lösungen Permutationen mit aufsteigender Ordnung Seite 12
13 Kombinatorische Objekte Kombinatorische Objekte und rohe Kraft Algorithmen Beispiel: n-damen Problem n-damen-problem: Platziere n Damen auf einem n x n Schachbrett so, dass sie sich gegenseitig nicht schlagen. Rohe Kraft Algorithmus, hier direkte Implementierung der Definition Bildquelle: Wikipedia Definition n-damen-problem: Gegeben sei ein n*n Feld (Matrix), finde ein Sequenz s von Positionen der Länge n, derart, dass keine Position in s eine andere Position in s nach den Schachregeln bedroht. Mögliche Lösungen Variante 1: Alle Folgen der Länge n von Zeilen- / SpaltenPositionen (Paare aus dem Kreuzprodukt {1,.. n x {1,.. n) Variante 2: Alle Folgen s der Länge n von Positionen in Zeile i (Wert aus {1.. n) si repräsentiert die Position (i, si) Korrekte Lösung Variante 1: Falls (a,b) in s dann enthält s kein Paar (x,y) mit: y=b (gleiche Position in der Senkrechten) oder (x = a-i und y = b-i) oder (x = a+i und y = b+i) für irgendein i (Positionen in der Diagonale) Variante 2 entsprechend Seite 13 Variante 1: [(0,2), (1,0), (2,1)] Variante 2 : [2, 0, 1]
14 Kombinatorische Objekte Kombinatorische Objekte und rohe Kraft Algorithmen n-damen Problem: Kombinatorische Objekte Variante 1 Jede Auswahl von n Elementen aus {1..n x {1..n n aus n2 ohne Wiederholung, Reihenfolge ohne Belang: Cnn*n = (n2 über n) = n2! / n!*(n2-n)! Variante 2-1 Jede Auswahl von n Elementen aus {1..n n aus n mit Wiederholung, Reihenfolge von Belang: nn Variante 2-2 Falls man die in der gleichen Spalte gleich ausschließt: n aus n ohne Wiederholung, Reihenfolge von Belang: Pnn*n = n2! / (n2 n)! Seite 14 Variante 1: [(0,2), (1,0), (2,1)] Variante 2 : [2, 0, 1] Enthält mehr Elemente als Variante 2-2, ist aber am einfachsten zu erzeugen.
15 Kombinatorische Objekte und erschöpfende Suche Erschöpfende Suche und Kombinatorische Objekte n aus einer Menge M Untersuche jede Auswahl von n Elementen aus einer Menge M Akzeptable Lösung Beispiel n-damen auf 4x4 Feld Kombinatorische Objekte: Sequenzen von Zeilen-Positionen (Variante-2-1) Akzeptable Objekte: class Queens { // Boards with queen are represented by sequences of ints // placement(i) = column position in row i static boolean acceptable(int[] placement) { for (int i=0; i<placement.length; i++) { int x = placement[i]; for (int j=0; j<placement.length; j++) { if (i!=j) { int d = i-j; // diagonal: distance between j an j if (placement[j] == x placement[j] == x-d placement[j] == x+d) { return false; return true; Seite 15 etc.
16 Kombinatorische Objekte und erschöpfende Suche Erschöpfende Suche und Kombinatorische Objekte: Schleife n aus einer Menge M Untersuche jede Auswahl von n Elementen aus einer Menge M Einfachste und effizienteste Methode: n geschachtelte Schleifen Beispiel n-damen auf 4x4 Feld: public class BruteForce_4_x_4 { public static void main(string[] args) { for (int c0 = 0; c0 < 4; c0++) { for (int c1 = 0; c1 < 4; c1++) { for (int c2 = 0; c2 < 4; c2++) { for (int c3 = 0; c3 < 4; c3++) { int[] placement = new int[]{c0, c1, c2, c3; if (Queens.acceptable(placement)) { System.out.println("OK: " + Arrays.toString(placement)); OK: [1, 3, 0, 2] OK: [2, 0, 3, 1] Seite 16 Wenn immer möglich: Suche mit geschachtelten Schleifen!
17 Kombinatorische Objekte und erschöpfende Suche Erschöpfende Suche und Kombinatorische Objekte: Rekursion n aus einer Menge M Untersuche jede Auswahl von n Elementen aus einer Menge M Problem: M ist nicht statisch bekannt Wenn M keine statisch bekannte Menge ist, dann können nicht n-schleifen über die Elemente von M angegeben werden. Beispiel n Damen public class BruteForce_4_x_4 { Implementierung einer public static void main(string[] args) { Schachtelung von n int n =...?... Schleifen? for (int c0 = 0; c0 < n; c0++) { for (int c1 = 0; c1 < n; c1++) { for (int c2 = 0; c2 < n; c2++) {... for (int cn = 0; cn < n; cn++) { int[] placement = new int[]{c0, c1, c2, c3,... cn; if (Queens.acceptable(placement)) { System.out.println("OK: " + Arrays.toString(placement));... Seite 17
18 Kombinatorische Objekte und erschöpfende Suche Erzeuge Kombinatorische Objekte Rekursive Erzeugung von k-tuplen aus einer Menge M Erzeuge den Suchraum rekursiv, wenn Du nicht weißt, wie viele Schleifen zu schachteln wären. Tupel: Auswahl mit Wiederholung und relevanter Reihenfolge Erzeuge jede Auswahl von k Elementen aus einer Menge M bei dynamisch festgelegtem Wert k und Menge M Algorithmus: Mk die Menge der Tupel der Länge k aus Elementen der Menge M kann rekursiv definiert werden: Mk = { [ ] falls k = 0 Mk = { t + [x] t Mk-1, x M falls k > 0 + ist das Anhängen eines Elements x an ein Tupel t Seite 18
19 Kombinatorische Objekte und erschöpfende Suche Erzeuge Kombinatorische Objekte Rekursive Erzeugung von k-tuplen aus einer Menge M Erzeuge jede Auswahl von k Elementen aus einer Menge M bei dynamisch festgelegtem Wert k und Menge M class AllTuples<E extends Comparable<E>> { private TreeSet<E> M = null; public AllTuples(TreeSet<E> M) { this.m = M; // all tuples of size k build from elements of set M public List<List<E>> oflength(int k) { if (k == 0) { ArrayList<List<E>> result = new ArrayList<>(); result.add(new ArrayList<E>()); return result; Implementierung Direkte Umsetzung des Algorithmus' else { List<List<E>> result = new ArrayList<>(); List<List<E>> rec = oflength(k-1); for (List<E> t: rec) { for (E x: M) { List<E> tt = new ArrayList<>(t); tt.add(x); result.add(tt); return result; Seite 19
20 Kombinatorische Objekte und erschöpfende Suche Erschöpfende Suche und Kombinatorische Objekte: Rekursion k-tupel (Auswahl von k Elementen mit Reihenfolge relevant) aus einer Menge M Untersuche jede Auswahl von k Elementen aus einer Menge M Anwendungs-Beispiel n-damen-problem Scanner scan = new Scanner(System.in); int n = scan.nextint(); scan.close(); TreeSet<Integer> positions = new TreeSet<>(); for (int i=0; i<n; i++) positions.add(i); for (List<Integer> placement: new AllTuples<Integer>(positions).ofLength(n)){ if (Queens.acceptable( toprimitive( placement.toarray(new Integer[n])))) { System.out.println("OK: " + placement); Integer-Array => int-array Seite 20 private static int[] toprimitive(integer[] array) { int[] res = new int[array.length]; int i = 0; for(int v: array) { res[i++] = v; return res;
21 Kombinatorische Objekte und erschöpfende Suche Erschöpfende Suche und Kombinatorische Objekte: Rekursion Anwendungs-Beispiel n-damen-problem / Java 8 Version class AllTuples<E> { private Set<E> M = null; public AllTuples(Set<E> M) { this.m = M; Streams sind nur eine funktionale Fassade für Sequenzen. Funktionales Programmieren ist damit nur beschränkt möglich. Einige Operationen können damit aber etwas eleganter formuliert werden. Z.B.: - das Durchlaufen einer Liste (foreach, filter) oder - die Umwandlung eines Integer-Arrays in ein int-array (maptoint). // all tuples of size k build from elements of a set M public List<List<E>> oflength(int k) { if (k == 0) { public class BruteForce_n_x_n { List<List<E>> res = new ArrayList<>(); res.add(new ArrayList<E>()); public static void main(string[] args) { return res; Scanner scan = new Scanner(System.in); else { int n = scan.nextint(); List<List<E>> res = new ArrayList<>(); scan.close(); oflength(k-1).stream().foreach( t -> M.stream().forEach( x -> { List<E> tl = new ArrayList<E>(t); tl.add(x); res.add(tl); ) ); return res; TreeSet<Integer> positions = new TreeSet<>(); for (int i=0; i<n; i++) positions.add(i); new AllTuples<Integer>(positions).ofLength(n).stream().filter( t -> Queens.acceptable( (t.stream().maptoint(i -> i).toarray() ) ) ).foreach( p -> { p.foreach( pos -> System.out.print(pos+ " ")); System.out.println(); ); Seite 21
(08 - Einfache Sortierverfahren)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Dr. Susanne Albers Sortieren Motivation, Einführung Datenbestände müssen sehr oft sortiert werden, etwa um
MehrEinfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung
Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Arrays: Wiederholung Ein
MehrInterne Sortierverfahren
Angewandte Datentechnik Interne Sortierverfahren Interne Sortierverfahren Ausarbeitung einer Maturafrage aus dem Fach A n g e w a n d t e D a t e n t e c h n i k Andreas Hechenblaickner 5CDH HTBLA Kaindorf/Sulm
MehrWintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt.
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
MehrCS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
CS005 Objektorientierte Programmierung Bachelor of Science (Informatik) Th Letschert Felder Seite Th Letschert OOP Felder / Arrays Seite 2 Th Letschert Feld / Array Feld (auch Array) Daten unter einem
MehrKapitel 10. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 10 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
MehrWas der Mathematiker Gauß nicht konnte, das können wir Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 1
Was der Mathematiker Gauß nicht konnte, das können wir 16.01.2003 Prof. R. Zavodnik/C++ Vorlesung/Kapitel IX 1 friend Klassenmethoden können friend-funktionen anderer Klassen werden Ganze Klassen können
MehrKapitel 3: Sortierverfahren Gliederung
Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen
MehrInformatik II, SS 2016
Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm
MehrProbeklausur zur Vorlesung
Dr. Jochen Hoenicke Alexander Nutz Probeklausur zur Vorlesung Einführung in die Informatik Sommersemester 2014 Die Klausur besteht aus diesem Deckblatt und elf Blättern mit den Aufgaben, sowie einem Blatt
MehrAlgorithmen und Datenstrukturen CS1017
Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Rekursiv definierte Strukturen und strukturelle Rekursion Listen und Bäume Strukturelle Rekursion
MehrEndklausur 25. September 2012
Endklausur 25. September 2012 Institut für Informatik Einführung in die Programmierung Sommersemester 2012 Name: Matrikel: Raum: Audimax 2 Vorname: Studiengang: Sitzreihe: Sitzplatz: Für Ihre Lösungen
MehrWenn... dann... if (condition) statement. if (kontostand < 0) System.out.println("Oops..."); false. condition. true. statement
Wenn... dann... if (condition) statement condition false true statement if (kontostand < 0) System.out.println("Oops..."); 31 ... sonst... if (condition) statement1 else statement2 condition false true
MehrProgrammieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik
Programmieren I Methoden-Spezial Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe bei primitivem Datentypen (Wertkopie) public class MethodParameters
MehrKonstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }
Konstruktor spezielle Methode zum Initialisieren bei Erzeugen eines Objekts mit new trägt Namen der Klasse hat keinen Rückgabetyp keiner angegeben: Compiler erzeugt Standard-Konstruktor (analog: Attribute
MehrProgrammieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik
Programmieren I Methoden-Special Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe: Wertkopie -By- public class MethodParameters { public
MehrArrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik
Arrays Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Inhalte der heutigen Vorlesung: Arraytypen Speicherdarstellung von Arrays Auswertung
Mehr! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -
! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
MehrKapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
MehrAlgorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016
Algorithmen und Datenstrukturen 2 Übung 1 Stefan Florian Palkovits, BSc 0926364 e0926364@student.tuwien.ac.at 12. Juni 2016 Aufgabe 1: Es existiert eine Reduktion von Problem A auf Problem B in O(n 3 +
MehrDatenstrukturen / Container in Java
Datenstrukturen / Container in Java Mathematik / Algebraischer Datentyp / Containerklassen Enum-Klassen Arrays (Felder) = elementare Container Algorithmen mit Arrays Prof. Dr. E. Ehses, 2014 1 Mathematik
MehrJava. public D find(k k) { Listnode K, D n = findnode(k); if(n == null) return null; return n.data; Java
Einführung Elementare Datenstrukturen (Folie 27, Seite 15 im Skript) Java Java public D find(k k) { Listnode K, D n = findnode(k); if(n == null) return null; return n.data; } protected Listnode K, D findnode(k
MehrII.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
Mehr1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen
1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
MehrÜbungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 4 (30.4.2018) Sortieren IV Algorithmen und Komplexität Analyse Merge Sort Laufzeit T(n) setzt sich zusammen aus: Divide und Merge: O n
MehrAufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen
Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel
MehrINSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt.
Aufgabe 1 INSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt. QUICK-SORT: Hängt davon ab ob PARTITION stabil ist. MERGE-SORT: Ja, Splitten, sowie Mergen ist stabil.
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 16 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Fragen zum zweiten Übungsblatt? 2. Vorbesprechung des dritten Übungsblatts 3. Beispielaufgaben
Mehr8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
MehrAlgorithmen & Datenstrukturen Midterm Test 2
Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann
MehrÜbungsstunde 6. Einführung in die Programmierung
Übungsstunde 6 Einführung in die Programmierung Probleme bei Übung 4 [TODO Assistent] Nachbesprechung Übung 5 Aufgabe 1: Testen mit JUnit Aufgabe 2: Wörter Raten do-while benötigt keinen Dummy-Wert für
MehrALP II Dynamische Datenmengen
ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung
MehrÜbungsstunde 5. Einführung in die Programmierung
Übungsstunde 5 Einführung in die Programmierung Probleme bei Übung 4 [TODO Assistent] Nachbesprechung Übung 5 Aufgabe 1: Testen mit JUnit Aufgabe 2: Wörter Raten do-while benötigt keinen Dummy-Wert für
MehrSuchen und Sortieren Sortieren. Mergesort
Suchen und Mergesort (Folie 142, Seite 55 im Skript) Algorithmus procedure mergesort(l, r) : if l r then return fi; m := (r + l)/2 ; mergesort(l, m 1); mergesort(m, r); i := l; j := m; k := l; while k
MehrProf. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002
Prof. H. Herbstreith 30.01.2002 Fachbereich Informatik Leistungsnachweis Informatik 1 WS 2001/2002 Bearbeitungszeit 120 Minuten. Keine Hilfsmittel erlaubt. Aufgabe 1: 20 Punkte Vervollständigen Sie folgende
MehrDie Schnittstelle Comparable
Die Schnittstelle Comparable Wir wollen Such- und Sortieroperationen für beliebige Objekte definieren. Dazu verwenden wir die vordefinierte Schnittstelle Comparable: public interface Comparable { int compareto(object
MehrKapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
MehrElementare Sortierverfahren
Algorithmen und Datenstrukturen I Elementare Sortierverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Sortieren.......................................
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
MehrAnweisungen zur Ablaufsteuerung
Anweisungen zur Ablaufsteuerung if-else switch while do-while for Ausdrücke Ein Ausdruck ist eine Folge von Variablen, Operatoren und Methodenaufrufen, der zu einem einzelnen Wert ausgewertet wird. Operanden
Mehr3.2. Divide-and-Conquer-Methoden
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch
Mehr4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)
4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 8./15. November 2005 Einordnung
MehrAlgorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Spezielle Sortierverfahren Autor: Sven Schuierer
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Spezielle Sortierverfahren Autor: Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg 1
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 05 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen Grundlagen
MehrGrundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen
MehrSortieralgorithmen OOPM, Ralf Lämmel
Unterhaltet Euch mal mit Euren Großeltern wie Sortieren früher funktionierte! Sortieralgorithmen OOPM, Ralf Lämmel 230 Eine unsortierte Liste 7 3 2 5 2 3 5 7 Die sortierte Liste 231 Wiederholung: Das Problem
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1
Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1
Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrAufgabenblatt: Arrays
Aufgabenblatt: Arrays - Seite 1 Aufgabenblatt: Arrays (1.) (a.) Erstellen Sie eine Methode, die in einem Array von Zahlen nach einem bestimmten Wert sucht! static int LinearSearch(int searchvalue, int
MehrStädtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode
Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode folgt im Anschluss. Beispielcode Es gibt eine Klasse Benutzerverwaltung, welche eine Liste mit Benutzern
MehrKapitel 5: Iterierbare Container
Kapitel 5: Iterierbare Container Foreach-Schleife Interface Iterator Interface Iterable Iterator-Schleife und Foreach-Schleife Generische Liste mit Iteratoren Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrReihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08
Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende
MehrÜberblick. Rekursive Methoden. Backtracking. Memorization. Einfache rekursive Datenstrukturen. Aufzählen, Untermengen, Permutationen, Bitmengen
Überblick 2 Rekursive Methoden Backtracking Memorization Bäume Aufzählen, Untermengen, Permutationen, Bitmengen Memorization Nochmals Fibonacci-Zahlen int fibo(int n) { if(n == 0) { return 0; else if(n
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrAufgabenblatt 5. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:
Aufgabenblatt 5 Kompetenzstufe 1 Allgemeine Informationen zum Aufgabenblatt: Die Abgabe erfolgt in TUWEL. Bitte laden Sie Ihr IntelliJ-Projekt bis spätestens Freitag, 05.01.2018 13:00 Uhr in TUWEL hoch.
MehrInformatik II Musterlösung
Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 4 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe ist eine Datei abzugeben,
MehrInformatik 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
MehrGrundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 01/05 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen lernen 3 Klassifizierung
MehrAlgorithmen und Datenstrukturen CS1017
Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenstrukturen I: Lineare Sequenzen / Listen Datenstrukturen für Sequenzen Sequenzen in der Java-API:
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Datenstruktur Liste Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 42 Formale Definition
MehrReihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang
Reihungen Martin Wirsing in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang http://www.pst.informatik.uni-muenchen.de/lehre/ws0506/infoeinf/ WS 05/06 2 Ziele Die Datenstruktur der Reihungen
MehrRekursive Funktionen
Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?
MehrProgrammierung mit Feldern OOPM, Ralf Lämmel
Übung: Deklarieren Sie ein entsprechendes Feld in Java! Programmierung mit Feldern OOPM, Ralf Lämmel Einführendes Beispiel Eingabe: ein Feld von int-werten public static int sum(int[] a) { int result =
MehrGliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen
5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume
MehrKapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
Mehr7. 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++):
MehrSchwerpunkte. 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Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor
Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2018 Prof. Dr. Wolfram Burgard Andreas Kuhner Daniel Büscher Übungsblatt 13 Abgabe / Besprechung
MehrHeute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.
Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis
MehrAufgabe : Laufzeit von Selection Sort
Aufgabe : Laufzeit von Selection Sort public class SelectionSort{ int [] liste = {4,7,2,9,5,1; void selectionsort () { for (int i = 0;i < liste.length-1;i = i + 1) { int position_minelement; /* Suche des
MehrCoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.
CoMa 04 Java II Paul Boeck Humboldt Universität zu Berlin Institut für Mathematik 7. Mai 2013 Paul Boeck CoMa 04 7. Mai 2013 1 / 13 Verzweigungen Wenn-Dann Beziehungen if (BEDINGUNG) { else if (BEDINGUNG2)
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen
Mehr1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Einführung Grundlagen von Algorithmen Grundlagen
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 16. August 2013 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Anweisungen mit Variablen Wiederholung Deklaration
MehrGrundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem
Grundzüge der Wirtschaftsinformatik WS 2002/03 Wiederholung Java Heiko Rossnagel www.m-lehrstuhl.de accelerate.com Grundzüge der Wirtschaftsinformatik WS 2002/03 1 Programmierzyklus Problem Formulierung
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen
MehrInstitut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 6. Juli 2018 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 27. August
MehrGraphalgorithmen Minimale Spannbäume. Kruskal: Minimaler Spannbaum
Kruskal: Minimaler Spannbaum (Folie 414, Seite 78 im Skript) 4 6 2 3 1 2 5 3 7 1 4 Kruskals Algorithmus Implementierung (Folie 415, Seite 78 im Skript) Algorithmus function Kruskal(G, w) : A := ; for each
MehrInformatik II Sortieren
lausthal Sortieralgorithmen Informatik II Sortieren Preprocessing fürs Suchen sind für kommerzielle Anwendungen häufig die Programmteile, die die meiste Rechenzeit verbrauchen viele raffinierte Methoden
MehrInformatik II Sortieren
lausthal Informatik II Sortieren. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Sortieralgorithmen Preprocessing fürs Suchen sind für kommerzielle Anwendungen häufig die Programmteile, die
MehrKapitel 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
MehrSuchen und Sortieren Sortieren. Heaps
Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,
MehrÜbungsstunde 4. Einführung in die Programmierung
Übungsstunde 4 Einführung in die Programmierung Probleme bei Übung 3 [TODO Assistent] Nachbesprechung Übung 4 Aufgabe 1: Sieb des Eratosthenes //Initialisiere das Array sieb und setze alle Werte auf true
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt
MehrAufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.
Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise
MehrEinführung in die Programmierung. (K-)II/Wb17
Probeklausur Hochschule Zittau/Görlitz, Prüfer: Prof. Dr. Georg Ringwelski Einführung in die Programmierung (K-)II/Wb17 Matrikelnummer: Punkte: 1 2 3 4 5 6 Gesamt /21 /19 /20 /20 /20 /20 /120 Spielregeln:
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen
Mehr2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :
2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste
Mehr18. Natürliche Suchbäume
Wörterbuchimplementationen 1. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Hashing: Implementierung von Wörterbüchern mit erwartet sehr schnellen Zugriffszeiten. Nachteile
Mehr