SlideShare a Scribd company logo
1 of 52
Download to read offline
Medientechnik und Design

Algorithmen und Datenstrukturen

Medientechnik und Design

Algorithmen und Datenstrukturen
Mag. Volker Christian
FH Oberösterreich – Campus Hagenberg
Fakultät für Informatik, Kommunikation und Medien
Softwarepark 11, 4232 Hagenberg/Austria

Sommersemester 2013

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

Sommersemester 2013

1 Pages
Algorithmen und Datenstrukturen

Kapitel 1: Einführung

Algorithmen und Datenstrukturen
Kapitel 1
Einführung
Allgemeines
Überblick über Algorithmen und Datenstrukturen

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-1 | 1/461
Algorithmen und Datenstrukturen

Kapitel 1: Einführung

Allgemeines
Inhalt

1

Form der Lehrveranstaltung

2

Literatur

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-2 | 2/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführung

Allgemeines
1

Form der Lehrveranstaltung

2

Literatur

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-3 | 3/461
Algorithmen und Datenstrukturen – Kapitel 1

Form der Lehrveranstaltung

Lehrveranstaltungen
Vorlesung
Volker Christian
volker.christian@fh-hagenberg.at
Die Homepage der Vorlesung finden Sie unter
http://elearning.fh-hagenberg.at/course/view.php?id=2236
Die Vorlesung findet wöchentlich jeweils am Montag von 940 bis 1115 statt.
Übungen
Volker Christian
volker.christian@fh-hagenberg.at
Die Homepage der Übungen finden Sie unter
http://elearning.fh-hagenberg.at/course/view.php?id=2237
Es finden neun Übungseinheiten statt.
Die Termine werden gesondert bekannt gegeben.
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-4 | 4/461
Algorithmen und Datenstrukturen – Kapitel 1

Form der Lehrveranstaltung

Beurteilung
Vorlesung
Es findet eine abschließende Klausur statt.
Übungen
In jeder Übungseinheit werden Übungsaufgaben ausgegeben.
Diese Übungsaufgaben werden von Tutoren korrigiert und bewertet.
Bei jeder Übung können maximal 24 Punkte erreicht werden.
Von den neu Übungen werden die besten Acht gewertet.
Jede dieser acht Übungen muss für sich selbst positiv (≥ 12 Punkte)
sein.
Für einen positiven Abschluss müssen insgesamt mehr als 96 Punkte
erreicht werden.
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-5 | 5/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführung

Allgemeines
1

Form der Lehrveranstaltung

2

Literatur

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-6 | 6/461
Algorithmen und Datenstrukturen – Kapitel 1

Literatur

Basisliteratur
Algorithmen in Java

(http://www.pearsonhighered.com/educator/product/Algorithms-in-Java-Parts-14/97802013

Author: Robert Sedgewick
Verlag: Pearson Studium
Seiten: 768
Preis: e 54.08
ISBN: 9780201361209

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-7 | 7/461
Algorithmen und Datenstrukturen

Kapitel 1: Einführung

Überblick über Algorithmen und Datenstrukturen
Inhalt

1

Datensätze

2

Datenstrukturen

3

Algorithmen

4

Leitfaden für die Lösung von Problemstellungen

5

Einführendes Beispiel

6

Zusammenfassung
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-8 | 8/461
Algorithmen und Datenstrukturen – Kapitel 1

Überblick über Algorithmen und Datenstrukturen

Das große Bild
Beim Studium von Datenstrukturen . . .
beschäftigt man sich mit verschiedenen, strukturierten Möglichkeiten
zum Verwalten (d.h. Speichern) von Datensätzen.
beschäftigt man sich mit der Art, wie man auf Datensätze wieder
zugreifen kann.
beschäftigt man sich mit der Effizienz verschiedener
Datenverwaltungstrategien.
lernt man, selbst problemgerechte Datenstrukturen zu entwickeln.

Beim Studium von Algorithmen . . .
beschäftigt man sich mit grundsätzlichen, schematischen
Lösungsverfahren für elementare Problemstellungen.
beschäftigt man sich mit der Effizienz von Lösungsverfahren.
lernt man, selbst in strukturierter Weise Lösungsverfahren für
spezifische Problemstellungen zu entwickeln.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-9 | 9/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführung

Überblick über Algorithmen und Datenstrukturen
1

Datensätze

2

Datenstrukturen

3

Algorithmen

4

Leitfaden für die Lösung von Problemstellungen

5

Einführendes Beispiel

6

Zusammenfassung

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-10 | 10/461
Algorithmen und Datenstrukturen – Kapitel 1

Datensätze

Datensätze
Ein Datensatz ist eine Gruppe von inhaltlich zusammenhängenden
Datenfeldern.
Datensätze sind dem jeweiligen Problem angepasst.
Datensätze sind wiederum aus Datensätzen und elementaren Daten
aufgebaut.
Telefonbucheintrag
Name

Vertex
Koordinaten

Zeichen eines Textes
Zeichencode

Vorname

Farbe

Schriftart

Telefonnummern

Normale

Straße

Nachbarvertizes

Schnitt (Fett,
Kursiv, . . . )

Ort

Texturkoordinaten

...

...

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

Farben
Unterstrich
...
22. Oktober 2013

1-11 | 11/461
Algorithmen und Datenstrukturen – Kapitel 1

Datensätze

Datensätze beinhalten selbst wieder Datenstrukturen
Telefonbucheintrag (Auszug)
Vorname: z.B. Liste oder Array von Zeichen. (Man kann nicht davon
ausgehen, dass es in jeder Programmiersprache eine Klasse
String gibt.)
Nummern: z.B. Liste von Telefonnummern. Möglicherweise existieren
mehrere Telefonnummern für die betreffende Person.
Vertex (Auszug)
Koordinaten: z.B. Array für die Koordinaten x , y und z.
Nachbarn: z.B. Liste von Vertizes.
Farbe: z.B. Array für die Komponenten Rot, Grün und Blau.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-12 | 12/461
Algorithmen und Datenstrukturen – Kapitel 1

Datensätze

Implementierung von Datensätzen in Java
Elementare Datensätze besitzen elementare Datentypen, d.h. Werte
von elementaren Datentypen sind elementare Datensätze – bestehen
aus einzelnen Bits und Bytes.
boolean, byte, char, short, int, long, float, double
Komplexe Datensätze sind Objekte von Klassen.
class TelBookEntry, class Vertex, class Symbol, . . .
Die öffentlichen Methoden der Klassen bilden die Schnittstelle des
Datensatzes.
Die Schnittstelle abstrahiert den Datensatz von dessen eigentlicher
Implementierung.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-13 | 13/461
Algorithmen und Datenstrukturen – Kapitel 1

Datensätze

Beispiel: Telefonbucheintrag
1
2
3
4
5
6

public class TelephoneBookEntry {
protected String name;
protected String surName;
protected String city;
protected String street;
protected String[] phoneNumbers;

7
8

public TelephoneBookEntry(String name, String surName, String city, String street, ←
String[] phoneNumbers) {
this.name = name;
this.surName = surName;
this.city = city;
this.street = street;
this.phoneNumbers = phoneNumbers.clone();
}

9
10
11
12
13
14
15
16

public String getName() { return name; }

17
18
35

public void setName(String name) { this.name = name; }
}

Listing 1 : TelephoneBookEntry.java

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-14 | 14/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführung

Überblick über Algorithmen und Datenstrukturen
1

Datensätze

2

Datenstrukturen

3

Algorithmen

4

Leitfaden für die Lösung von Problemstellungen

5

Einführendes Beispiel

6

Zusammenfassung

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-15 | 15/461
Algorithmen und Datenstrukturen – Kapitel 1

Datenstrukturen

Datenstrukturen verwalten Datensätze
Datenstrukturen werden verwendet, um Daten bzw. Datensätze
geeignet zu verwalten.
Eine spezielle Datenstruktur ist definiert durch . . .
die Art der Anordnung und Verknüpfung der Datensätze.
mögliche Zugriffsarten auf die Datensätze.

(a) Liste

(b) Baum

(c) Hashmap

Abbildung 1 : Beispiele von Datenstrukturen
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-16 | 16/461
Algorithmen und Datenstrukturen – Kapitel 1

Datenstrukturen

Elementare Datenstrukturen
Es existieren viele elementare Datenstrukturen. Jede Datenstruktur hat
ihre Vor- und Nachteile.
Felder (Arrays)
Stapelspeicher (Stack)
Warteschlangen (Queue)
Listen (List)
Bäume (Tree)
Hashtabellen (Hashtable/Hashmap)
Halden (Heaps)
Graphen (Graphs)

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-17 | 17/461
Algorithmen und Datenstrukturen – Kapitel 1

Datenstrukturen

Charakteristika von Datenstrukturen
Datenstrukturen werden nach folgenden Eigenschaften charakterisiert:
Schnittstelle: Zugriffsarten (Operationen) auf die Datenstruktur.
Operationen zum Einfügen von Datensätzen
Operationen zum Löschen von Datensätzen
Operationen, um auf Datensätze zuzugreifen
...
Komplexität: Dynamische und statische Komplexität
Dynamische Komplexität ist ein Maß für das
Laufzeitverhalten der Schnittstelle und dessen
Abhängigkeit von der Zahl gespeicherter Datensätze.
Statische Komplexität ist ein Maß für die Komplexität
des Quelltextes der Implementierung.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-18 | 18/461
Algorithmen und Datenstrukturen – Kapitel 1

Datenstrukturen

Implementierung von Datenstrukturen in Java
Datenstrukturen werden als Klassen implementiert.
class List, class Tree, class Array, . . .
Die öffentlichen Methoden dieser Klassen bilden die Schnittstelle der
Datenstruktur.
Die Schnittstelle abstrahiert die Datenstruktur von ihrer eigentlichen
Implementierung.
Sind Hilfsmethoden und Hilfsklassen notwendig, so werden diese als
nicht öffentlich vereinbart.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-19 | 19/461
Algorithmen und Datenstrukturen – Kapitel 1

Datenstrukturen

Beispiel: Array als Datenstruktur
Eine Datenstruktur ist ein Array, wenn man über einen Index auf
Datensätze zugreifen kann.
1
2
3

public class Array {
protected int size = 0;
protected Object[] array = null;

Array
#size:int

4
5

public Array(int size) {
this.size = size; array = new Object[size];
}

6
7

+Array(size:int)
+add(index:int, o:Object):void
+get(index:int):Object
+size():int

8
9

public void add(int index, Object o) {
array[index] = o;
}

10
11

<<array>>

12
13

public Object get(int index) {
return array[index];
}

14
15

0..size

Object

16
17

public int size() {
return size;
}

18
19
20

}

Listing 2 : Array.java
Volker Christian

array

Abbildung 2 : UML-Class-Diagramm
der Klasse Array

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-20 | 20/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführung

Überblick über Algorithmen und Datenstrukturen
1

Datensätze

2

Datenstrukturen

3

Algorithmen

4

Leitfaden für die Lösung von Problemstellungen

5

Einführendes Beispiel

6

Zusammenfassung

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-21 | 21/461
Algorithmen und Datenstrukturen – Kapitel 1

Algorithmen

Strukturierte Problemlösungsverfahren
Wortstamm: Verballhornung des Namens Muhammed ibn Musa
al-Chwarizmi ( ca. 783, ca. 850), dessen arabisches
Lehrbuch „Über das Rechnen mit indischen Ziffern“ (um
825) in der mittelalterlichen lateinischen Übersetzung mit
den Worten Dixit Algorismi (Algorismi hat gesagt) beginnt.
Bedeutung: Eine Vorschrift zur Lösung einer Problemstellung.
Elementare Algorithmen sind Problemlösungsstrategien für verschiedene, in
Abwandlungen immer wiederkehrende Problemstellungen.
Sortieren
Suchen
Zeichenkettenverarbeitung
Geometrie und Grafik
Numerik
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-22 | 22/461
Algorithmen und Datenstrukturen – Kapitel 1

Algorithmen

Charakteristika von Algorithmen
Ein Algorithmus ist eine Vorschrift zur Lösung eines elementaren,
unabhängigen Problems und muss . . .
aus einzelnen Schritten zusammengesetzt sein.
In jedem Schritt wird eine „Berechnung“ durchgeführt.
Bei jedem Schritt ist angegeben, welcher Schritt als nächster
auszuführen ist.

eindeutig ausführbar sein.
Es darf kein Interpretationsspielraum, was zu geschehen hat, bestehen.

endlich sein.
Statische Endlichkeit: Ein Algorithmus muss sich mit endlich vielen
Zeichen formulieren lassen.
Dynamische Endlichkeit: Ein Algorithmus muss das Problem in endlich
vielen Schritten lösen.

Daten verarbeiten.
Manipulation – z.B. Sortieren – von bestehenden Daten.
Berechnung eines Ergebnisses – z.B. Berechnung der Wurzel aus 9.
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-23 | 23/461
Algorithmen und Datenstrukturen – Kapitel 1

Algorithmen

Eingangsgrößen und Ausgangsgrößen
Ein Algorithmus muss Zugriff auf die zu verarbeitenden Datensätze
oder die für eine Berechnung heranzuziehenden Werte haben.
Ein Algorithmus muss die verarbeiteten Datensätze oder die
Ergebnisse einer Rechnung wieder zur Verfügung stellen.
Eingangsgrößen: Die Datenbasis wird einem Algorithmus meist in Form
von Datensätzen in einer Datenstruktur zur Verfügung
gestellt.
Ausgangsgrößen: Die Ergebnisse werden von einem Algorithmus meist in
Form eine Datenstruktur, eines Datensatzes oder eines
Wertes zur Verfügung gestellt.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-24 | 24/461
Algorithmen und Datenstrukturen – Kapitel 1

Algorithmen

Fehlerfreiheit

Ein Algorithmus muss in allen erdenklichen Situationen wohldefiniert
und geeignet reagieren.
⇒ Prüfen der Eingangsgrößen auf Plausibilität.
⇒ Ist die Ermittlung des Ergebnisses nicht möglich, muss dies vom
Algorithmus geeignet signalisiert werden.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-25 | 25/461
Algorithmen und Datenstrukturen – Kapitel 1

Algorithmen

Definition des Algorithmusbegriffs

Versuch einer Definition:
Ein Algorithmus ist ein endliches, schrittweises Verfahren zur Berechnung
gesuchter aus gegebenen Größen, in dem jeder Schritt aus einer Anzahl
eindeutig ausführbarer Operationen und einer Angabe über den nächsten
Schritt besteht.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-26 | 26/461
Algorithmen und Datenstrukturen – Kapitel 1

Algorithmen

Beschreibung von Algorithmen
Spezifikation = Sicht von außen
Beschreibung der Problemstellung.
Definition des „Was“.
Beschreibung der Schnittstelle und deren Verhalten.
Der Algorithmus an sich wird als „Black Box“ betrachtet.
Darstellung = Sicht von innen
Beschreibung der Lösungsidee.
Beschreibung des „Wie“.
Beschreibung des eigentlichen Lögungsverfahrens.
Muss die spezifizierte Schnittstelle und deren Verhalten zur Verfügung
stellen.
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-27 | 27/461
Algorithmen und Datenstrukturen – Kapitel 1

Algorithmen

Darstellung von Algorithmen
Die Darstellung eines Algorithmus ist eine Meta-Beschreibung – die
Beschreibung einer Beschreibung.
Darstellungsarten:
Prosa: Umgangssprachlich in Form eines kurzen „Aufsatzes“.
Stilisiert: Umgangssprachlich, aber schon etwas formalisiert –
schrittweise, eindeutig, endlich.
Grafisch: Ablaufdiagramm (Flussdiagramm) oder Struktogramm.
Abstrakt: Algorithmenbeschreibungssprache wie Adele oder Jana
(Pseudocode).
Konkret: Implementierung in einer Programmiersprache wie Java, C#,
C, C++, Pascal, . . .

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-28 | 28/461
Algorithmen und Datenstrukturen – Kapitel 1

Algorithmen

Implementierung von Algorithmen als Objekt-Methoden
Ist ein Algorithmus Teil einer Datenstruktur, so wird der Algorithmus als
Objektmethode implementiert.
Beispiel: Sort-Algorithmus der Klasse List
1
2

public class List {
...

3
4

public void sort() {
...
}

5
6
7
8
9

...
}

Die Eingangsgrößen kann der Algorithmus direkt von der
Datenstruktur beziehen.
Die Ausgangsgrößen kann der Algorithmus direkt in der Datenstruktur
ablegen oder als Rückgabewert liefern.
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-29 | 29/461
Algorithmen und Datenstrukturen – Kapitel 1

Algorithmen

Implementierung von Algorithmen als Klassen-Methoden
Wird ein Algorithmus nicht als Teil einer Datenstruktur formuliert, so wird
er als Klassenmethode einer Klasse implementiert.
Beispiel: Externer Sort-Algorithmus
1
2

public class Sort {
...

3
4

public static void sort(List list) {
...
}

5
6
7
8
9

...
}

Die Eingangsgrößen werden dem Algorithmus über die
Aktualparameter übergeben.
Die Ausgangsgrößen liefert der Algorithmus über den Rückgabewert
oder wenn möglich über Referenz-Aktualparameter (für komplexe
oder mehrere Ergebniswerte).
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-30 | 30/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführung

Überblick über Algorithmen und Datenstrukturen
1

Datensätze

2

Datenstrukturen

3

Algorithmen

4

Leitfaden für die Lösung von Problemstellungen

5

Einführendes Beispiel

6

Zusammenfassung

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-31 | 31/461
Algorithmen und Datenstrukturen – Kapitel 1

Lösungsleitfaden

Schrittweise Herangehensweise
1

Beschäftigung mit der Thematik.
Wenn die Thematik nicht bekannt ist, muss man sich in diese
einarbeiten!

2

3

Mit welchen Datensätzen hat man zu tun? Wie können die
Datensätze dargestellt werden?
Auswahl einer geeigneten Datenstruktur.
Kann eine elementare, bekannte Datenstruktur verwendet werden?
Muss eine problemgerechte Datenstruktur entwickelt werden?

4

Spezifizieren der Schnittstelle des Algorithmus und was er zu tun hat.

5

Entwicklung und Implementierung des Algorithmus unter
Bedachtnahme auf die ausgewählte Datenstruktur und die
spezifizierte Schnittstelle.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-32 | 32/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführung

Überblick über Algorithmen und Datenstrukturen
1

Datensätze

2

Datenstrukturen

3

Algorithmen

4

Leitfaden für die Lösung von Problemstellungen

5

Einführendes Beispiel

6

Zusammenfassung

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-33 | 33/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Ermittlung des Index eines Folgegliedes
Problemstellung:
Gegeben: Eine endliche Folge von paarweise disjunkten, ganzen Zahlen.
z = (6, 3, 4, 8, 5, 7, 2, 9, . . . , zn )
Gesucht: Der Index einer gegebenen Zahl der Folge.
Fragestellungen bei der Analyse für die Implementierung:
1

Beschäftigen mit der Problemstellung: Was ist eine Folge und was ist
der Index eines Folgegliedes?

2

Wie können die ganzen Zahlen in Java dargestellt werden?

3

Welche Datenstruktur passt auf das Problem?

4

Wie soll der Algorithmus das Problem mit Bedacht auf die
ausgewählte Datenstruktur lösen?
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-34 | 34/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Beschäftigung mit der Problemstellung
Was ist eine Folge und was ist der Index eines Folgegliedes?
Aus Wikipedia:
Als Folge wird eine Auflistung endlich oder unendlich vieler, durch
Ordinalzahlen fortlaufend nummerierter Objekte bezeichnet.
Das Objekt mit der Nummer i, man sagt hier auch: mit dem Index i,
wird i-tes Glied der Folge genannt.
Schreibweise:
Endliche Folge: x = (x1 , x2 , x3 , . . . , xn )
Unendliche Folge: x = (x1 , x2 , x3 , . . .)
Formale Definition: Eine Folge x ist als Abbildung aus einer
Indexmenge I in die Zielmenge X definiert:
x : I → X,

wobei I = {1, 2, 3, . . . , n}

und X = {xi }

x : i → xi
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-35 | 35/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Eine ganze Zahl als Datensatz
In Java können ganze Zahlen durch die elementaren Datentypen
byte, short, int oder long dargestellt werden.
Nach der Regel, dass Datensätze als Objekte von Klassen dargestellt
werden müssen, können die in Java existierenden Wrapperklassen der
elementaren Datentypen verwendet werden.
Datentyp
byte
short
int
long

Wrapperklasse
Byte
Short
Integer
Long

Welche dieser Wrapperklasse verwendet werden soll, hängt von dem
Wertebereich der darzustellenden ganzen Zahlen ab.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-36 | 36/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Eine ganze Zahl als Datensatz
Ein Objekt der Wrapperklasse Long repräsentiert einen long-Wert
1

package java.lang;

2
3
4

public class Long {
public Long(long l);

// Constructor

5
6

public
// <
// =
// >

7
8
9

int compareTo(Long anotherLong);
0, if longValue() < anotherLong.longValue()
0, if longValue() == anotherLong.longValue()
0, if longValue() > anotherLong.longValue()

10
11

public long longValue();

// The represented value

12
13

public String toString();

// The value as a String

14
15
16

public static Long valueOf(long l);

// Create an Object from a value

}

Listing 3 : Auszug aus der Klasse Long

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-37 | 37/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Welche Datenstruktur passt auf das Problem?
Welche Funktionalitäten muss die Datenstruktur zur Verfügung stellen?
Die Reihenfolge der Folgeglieder muss in der Datenstruktur erhalten
bleiben.
Es soll möglich sein, auf einzelne Objekte der Folge direkt über ihren
Index zugreifen zu können.
Eine mögliche und in diesem Fall gute Wahl ist die Verwendung eines
Arrays.
In Arrays bleibt die Reihenfolge der Elemente erhalten.
In Arrays kann über den Array-Index auf die einzelnen Elemente
zugegriffen werden.
Achtung:
Das erste Element einer Folge trägt typischerweise den Index 1.
Das erste Element eines Arrays trägt den Index 0.
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-38 | 38/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Die Datenstruktur Array
Array als Klasse
1
2
3

public class Array {
protected int size = 0;
protected Object[] array = null;

4
5

public Array(int size) {
this.size = size; array = new Object[size];
}

6
7
8
9

public void add(int index, Object o) {
array[index] = o;
}

10
11
12
13

public Object get(int index) {
return array[index];
}

14
15
16
17

public int size() {
return size;
}

18
19
20

}

Listing 4 : Array.java
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-39 | 39/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Spezifikation des Algorithmus: Version 1
1

Name: Der Algorithmus heißt indexSearch und wird als
Klassenmethode der Klasse IndexSearch implementiert.

2

Eingangsgrößen: Dem Algorithmus wird ein mit Long-Objekten
gefülltes Objekt der Klasse Array und ein long-Wert als Schlüssel, in
Form eines Objektes der Klasse Long, übergeben.

3

Ausgangsgrößen: Der Algorithmus ermittelt den (mathematischen)
Index des Schlüssels und gibt diesen als Ergebnis zurück.
Schnittstelle:

4

int indexSearch(Array array, Long key);
5

Fehlerfälle:
Ist der Schlüssel nicht im Array gespeichert, so soll dies durch den
Rückgabewert -1 angezeigt werden.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-40 | 40/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Darstellung des Algorithmus
Datenrepräsentation
Jedes Glied der Folge wird in ein Element des Array gespeichert.
Die Reihenfolge der Folgeglieder und deren Repräsentation als
Elemente im Array soll identisch sein.
⇒ Die Indizes index der Elemente des Arrays korrespondieren mit den
Indizes i der Folgeglieder, wobei ein Offset von 1 besteht:

index = i − 1.
Arbeitsweise
Schleife über alle Elemente des Arrays.
Jedes Element des Arrays mit der gegebenen Zahl vergleichen.
Sind beide gleich, ist der Index i der gegebenen Zahl gleich dem Index
des Elements im Array plus eins: index + 1.
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-41 | 41/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Ermittlung des Index eines Folgegliedes
Prosa

Man nehme die gegebene Folge und wähle die erste Position der Folge als
aktuelle Position.
Ist die aktuelle Position außerhalb der gegebenen Folge, ist die
vorgegebene Zahl nicht Element der Folge und die Suche kann somit nicht
erfolgreich beendet werden. Ist die Zahl an der aktuellen Position gleich
der gesuchten Zahl, so ist die aktuelle Position in der gegebenen Folge die
Ordinalzahl, d.h. der Index der vorgegebenen Zahl und die Suche können
somit erfolgreich beendet werden. Ist die Zahl an der aktuellen Position
nicht die gesuchte Zahl, so gehe zur nächsten Position in der Folge und
wiederhole den in diesem Absatz beschriebenen Vorgang!

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-42 | 42/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Ermittlung des Index eines Folgegliedes
Stilisierte Prosa

1

Wähle die erste Position der Folge als aktuelle Position.

2

Liegt die aktuelle Position außerhalb der Folge (aktuelle Position
> |F |), gehe zu Schritt 6!

3

Ist die Zahl an der aktuellen Position der Folge gleich der
vorgegebenen Zahl, dann gehe zu Schritt 5!

4

„Erhöhe“ die aktuelle Position um 1 und gehe zu Schritt 2!

5

Die gesuchte Ordinalzahl, also der Index der vorgegebenen Zahl, ist
die aktuelle Position.

6

Ende des Algorithmus.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-43 | 43/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Ermittlung des Index eines Folgegliedes
Flussdiagramm
indexsearch(F , vZahl)

i =1

? i > |F |

Y

N
? Fi == vZahl

Y

N
i =i +1

index = i

End

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-44 | 44/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Der fertig implementierte Algorithmus
Der Algorithmus indexSearch
1
2
3
4

public class IndexSearch {
public static int indexSearch(Array array, Long key) {
for (int i = 0; i < array.size(); i++) { // Iterate over every index
Long currentLong = (Long) array.get(i);

5
6

if (key.compareTo(currentLong) == 0) { // Found?
return i + 1; // Found: Return the
// adjusted index
}

7
8
9
10

}
return -1; // Not found: Return -1

11
12
13

}
}

Listing 5 : IndexSearch.java

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-45 | 45/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Testen des Algorithmus
Ein Test-Treiber für indexSearch
1
2
3

public class IndexSearchTreiber {
public static void main(String[] args) {
Array array = new Array(10);

4
5

for (int i = 0; i < 10; i++) {
array.add(i, new Long(100 + i));
}

6
7
8
9

Long key = new Long(102);
int index = IndexSearch.indexSearch(array, key);

10
11
12

System.out.println("Index␣of␣" + key + ":␣" + index);

13
14

}
}

Listing 6 : IndexSearchTreiber.java

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-46 | 46/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Spezifikation des Algorithmus: Version 2
1

Name: Der Algorithmus heißt indexSearch und wird als
Objektmethode der Klasse ArrayWithIndexSearch implementiert.

2

Eingangsgrößen: Der Algorithmus kann direkt auf die Elemente der
Klasse ArrayWithIndexSearch zugreifen. Zusätzlich wird ihm ein
long-Wert als Schlüssel, in Form eines Objektes der Klasse Long,
übergeben.

3

Ausgangsgrößen: Der Algorithmus ermittelt den (mathematischen)
Index des Schlüssels und gibt diesen als Ergebnis zurück.
Schnittstelle:

4

int indexSearch(Long key);
5

Fehlerfälle:
Ist der Schlüssel nicht im Array gespeichert, so soll dies durch den
Rückgabewert -1 angezeigt werden.
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-47 | 47/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

indexSearch als Objektmethode
Algorithmen können, auch als Objektmethoden implementiert werden.
Der Algorithmus indexSearch also Objektmethode
1
2
3
4

public class ArrayWithIndexSearch extends Array { // Inherit Array as base
public ArrayWithIndexSearch(int size) {
super(size);
}

5
6

public int indexSearch(Long key) {
for (int i = 0; i < this.size(); i++) { // Iterate over every index
Long currentLong = (Long) this.get(i);

7
8
9
10

if (key.compareTo(currentLong) == 0) { // Found?
return i + 1; // Found: Return the
// adjusted index
}

11
12
13
14

}
return -1; // Not found: Return -1

15
16
17

}
}

Listing 7 : ArrayWithIndexSearch.java
Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-48 | 48/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführendes Beispiel

Wieder ein Test-Treiber

Ein Test-Treiber für indexSearch als Objektmethode
1
2
3

public class ArrayWithIndexSearchTreiber {
public static void main(String[] args) {
ArrayWithIndexSearch array = new ArrayWithIndexSearch(10);

4
5

for (int i = 0; i < 10; i++) {
array.add(i, new Long(100 + i));
}

6
7
8
9

Long key = new Long(102);
int index = array.indexSearch(key);

10
11
12

System.out.println("Index␣of␣" + key + ":␣" + index);

13
14

}
}

Listing 8 : ArrayWithIndexSearchTreiber.java

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-49 | 49/461
Algorithmen und Datenstrukturen – Kapitel 1

Einführung

Überblick über Algorithmen und Datenstrukturen
1

Datensätze

2

Datenstrukturen

3

Algorithmen

4

Leitfaden für die Lösung von Problemstellungen

5

Einführendes Beispiel

6

Zusammenfassung

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-50 | 50/461
Algorithmen und Datenstrukturen – Kapitel 1

Zusammenfassung

Algorithmen und Datenstrukturen
Algorithmen verarbeiten meist eine Menge von Datensätzen.
Diese Datensätze müssen in geeigneter Weise in Datenstrukturen
verwaltet werden.
Algorithmen greifen über die Schnittstellen der Datenstrukturen auf
die Daten zu.
Die Schnittstellen der Datenstrukturen sind selbst wieder Algorithmen.
Fazit:
Algorithmen und Datenstrukturen bilden eine Einheit. Datenstrukturen
verwalten Datensätze und Algorithmen verarbeiten diese. Dabei bedienen
sich die Algorithmen der Schnittstellen der Datenstrukturen, um auf die
Datensätze zugreifen zu können und der Schnittstellen der Datensätze, um
diese zu verarbeiten.

Volker Christian

FH-OÖ – Hagenberg – MTD – ADS

22. Oktober 2013

1-51 | 51/461

More Related Content

Viewers also liked

Portafolio - Yessenia Guevara
Portafolio - Yessenia GuevaraPortafolio - Yessenia Guevara
Portafolio - Yessenia Guevarayessenia guevara
 
AEM Maroc Bulletin Officiel (BO 6358) version FR
AEM Maroc Bulletin Officiel (BO 6358) version FRAEM Maroc Bulletin Officiel (BO 6358) version FR
AEM Maroc Bulletin Officiel (BO 6358) version FRAuto-Entrepreneurs MAROC
 
Programas para screencasting en elearning
Programas para screencasting en elearningProgramas para screencasting en elearning
Programas para screencasting en elearningGorka J Palacio Arko
 
Guias y talleres adjuntados
Guias y talleres adjuntadosGuias y talleres adjuntados
Guias y talleres adjuntadosAngie Diaz
 
Estrategia de optimización de las redes internas de una organización
Estrategia de optimización de las redes internas de una organizaciónEstrategia de optimización de las redes internas de una organización
Estrategia de optimización de las redes internas de una organizaciónSocialnautas, S.L.
 
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 04
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 04UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 04
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 04Ramiro Nahuel Pol
 
Vih et grossesse,m1&m2
Vih et grossesse,m1&m2Vih et grossesse,m1&m2
Vih et grossesse,m1&m2Idrissou Fmsb
 
Restaurante waldgeist xxxxx_len_hofheim
Restaurante waldgeist xxxxx_len_hofheimRestaurante waldgeist xxxxx_len_hofheim
Restaurante waldgeist xxxxx_len_hofheimBenjamin Liu
 
La revolución energética y la sostenibilidad
La revolución energética y la sostenibilidadLa revolución energética y la sostenibilidad
La revolución energética y la sostenibilidadMargarita TARAMELLI
 
Voilà, c’est fini
Voilà, c’est finiVoilà, c’est fini
Voilà, c’est finimdorgere
 
Contraste externo 2
Contraste externo 2Contraste externo 2
Contraste externo 2centinel
 
Taller de Financiamiento - Cristóbal Rivas
Taller de Financiamiento - Cristóbal RivasTaller de Financiamiento - Cristóbal Rivas
Taller de Financiamiento - Cristóbal RivasEduardo Reyes
 
Leccionesadministrativas
LeccionesadministrativasLeccionesadministrativas
Leccionesadministrativaspaquitaguapa
 

Viewers also liked (20)

Portafolio - Yessenia Guevara
Portafolio - Yessenia GuevaraPortafolio - Yessenia Guevara
Portafolio - Yessenia Guevara
 
AEM Maroc Bulletin Officiel (BO 6358) version FR
AEM Maroc Bulletin Officiel (BO 6358) version FRAEM Maroc Bulletin Officiel (BO 6358) version FR
AEM Maroc Bulletin Officiel (BO 6358) version FR
 
Programas para screencasting en elearning
Programas para screencasting en elearningProgramas para screencasting en elearning
Programas para screencasting en elearning
 
Résultats provisoires à Strasbourg à 22h11
Résultats provisoires à Strasbourg à 22h11Résultats provisoires à Strasbourg à 22h11
Résultats provisoires à Strasbourg à 22h11
 
Guias y talleres adjuntados
Guias y talleres adjuntadosGuias y talleres adjuntados
Guias y talleres adjuntados
 
Estrategia de optimización de las redes internas de una organización
Estrategia de optimización de las redes internas de una organizaciónEstrategia de optimización de las redes internas de una organización
Estrategia de optimización de las redes internas de una organización
 
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 04
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 04UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 04
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 04
 
Palazioberri Web20 Pdi
Palazioberri Web20 PdiPalazioberri Web20 Pdi
Palazioberri Web20 Pdi
 
Vih et grossesse,m1&m2
Vih et grossesse,m1&m2Vih et grossesse,m1&m2
Vih et grossesse,m1&m2
 
Dossiers 0003
Dossiers 0003Dossiers 0003
Dossiers 0003
 
Restaurante waldgeist xxxxx_len_hofheim
Restaurante waldgeist xxxxx_len_hofheimRestaurante waldgeist xxxxx_len_hofheim
Restaurante waldgeist xxxxx_len_hofheim
 
Decálogo del buen divorcio. María Ángeles Peña Yáñez
Decálogo del buen divorcio. María Ángeles Peña YáñezDecálogo del buen divorcio. María Ángeles Peña Yáñez
Decálogo del buen divorcio. María Ángeles Peña Yáñez
 
Gestió de recursos. Eulàlia Sau
Gestió de recursos. Eulàlia SauGestió de recursos. Eulàlia Sau
Gestió de recursos. Eulàlia Sau
 
La revolución energética y la sostenibilidad
La revolución energética y la sostenibilidadLa revolución energética y la sostenibilidad
La revolución energética y la sostenibilidad
 
Voilà, c’est fini
Voilà, c’est finiVoilà, c’est fini
Voilà, c’est fini
 
Dossiers 0011
Dossiers 0011Dossiers 0011
Dossiers 0011
 
Contraste externo 2
Contraste externo 2Contraste externo 2
Contraste externo 2
 
El procés de desistiment de les persones empresonades
El procés de desistiment de les persones empresonadesEl procés de desistiment de les persones empresonades
El procés de desistiment de les persones empresonades
 
Taller de Financiamiento - Cristóbal Rivas
Taller de Financiamiento - Cristóbal RivasTaller de Financiamiento - Cristóbal Rivas
Taller de Financiamiento - Cristóbal Rivas
 
Leccionesadministrativas
LeccionesadministrativasLeccionesadministrativas
Leccionesadministrativas
 

Similar to Algorithmen und Datenstrukturen - Kapitel 1

Fmk2013 datenmodelle krambrich-brändle (rev)
Fmk2013 datenmodelle krambrich-brändle (rev)Fmk2013 datenmodelle krambrich-brändle (rev)
Fmk2013 datenmodelle krambrich-brändle (rev)Verein FM Konferenz
 
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenAMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenBjörn Muschall
 
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenKickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenLydiaU
 
Digitale Methoden und soziale Netzwerkplattformen. Zwischen Mediumspezifizitä...
Digitale Methoden und soziale Netzwerkplattformen. Zwischen Mediumspezifizitä...Digitale Methoden und soziale Netzwerkplattformen. Zwischen Mediumspezifizitä...
Digitale Methoden und soziale Netzwerkplattformen. Zwischen Mediumspezifizitä...Bernhard Rieder
 
amsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-Förderphaseamsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-FörderphaseBjörn Muschall
 
Anwendungen_der_KI_-_06_Maschinelles_Lernen_III.pdf
Anwendungen_der_KI_-_06_Maschinelles_Lernen_III.pdfAnwendungen_der_KI_-_06_Maschinelles_Lernen_III.pdf
Anwendungen_der_KI_-_06_Maschinelles_Lernen_III.pdfAntonDoll
 
Web-2.0-Forschung der KWARC-Gruppe
Web-2.0-Forschung der KWARC-GruppeWeb-2.0-Forschung der KWARC-Gruppe
Web-2.0-Forschung der KWARC-GruppeChristoph Lange
 
Master Studium Informationstechnik & System-Management
Master Studium Informationstechnik & System-ManagementMaster Studium Informationstechnik & System-Management
Master Studium Informationstechnik & System-ManagementFachhochschule Salzburg
 

Similar to Algorithmen und Datenstrukturen - Kapitel 1 (11)

SoSe 2013 | IT-Zertifikat: AMM - Klausurvorbereitung
 SoSe 2013 | IT-Zertifikat: AMM - Klausurvorbereitung SoSe 2013 | IT-Zertifikat: AMM - Klausurvorbereitung
SoSe 2013 | IT-Zertifikat: AMM - Klausurvorbereitung
 
Wir sind aber nicht Twitter
Wir sind aber nicht TwitterWir sind aber nicht Twitter
Wir sind aber nicht Twitter
 
Fmk2013 datenmodelle krambrich-brändle (rev)
Fmk2013 datenmodelle krambrich-brändle (rev)Fmk2013 datenmodelle krambrich-brändle (rev)
Fmk2013 datenmodelle krambrich-brändle (rev)
 
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenAMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
 
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenKickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
 
Digitale Methoden und soziale Netzwerkplattformen. Zwischen Mediumspezifizitä...
Digitale Methoden und soziale Netzwerkplattformen. Zwischen Mediumspezifizitä...Digitale Methoden und soziale Netzwerkplattformen. Zwischen Mediumspezifizitä...
Digitale Methoden und soziale Netzwerkplattformen. Zwischen Mediumspezifizitä...
 
amsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-Förderphaseamsl - Ergebnispräsentation der EFRE-Förderphase
amsl - Ergebnispräsentation der EFRE-Förderphase
 
Anwendungen_der_KI_-_06_Maschinelles_Lernen_III.pdf
Anwendungen_der_KI_-_06_Maschinelles_Lernen_III.pdfAnwendungen_der_KI_-_06_Maschinelles_Lernen_III.pdf
Anwendungen_der_KI_-_06_Maschinelles_Lernen_III.pdf
 
Entscheidungsunterstützung im Semantic Web
Entscheidungsunterstützung im Semantic WebEntscheidungsunterstützung im Semantic Web
Entscheidungsunterstützung im Semantic Web
 
Web-2.0-Forschung der KWARC-Gruppe
Web-2.0-Forschung der KWARC-GruppeWeb-2.0-Forschung der KWARC-Gruppe
Web-2.0-Forschung der KWARC-Gruppe
 
Master Studium Informationstechnik & System-Management
Master Studium Informationstechnik & System-ManagementMaster Studium Informationstechnik & System-Management
Master Studium Informationstechnik & System-Management
 

Recently uploaded

Kurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfKurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfHenning Urs
 
Presentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamPresentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamEus van Hove
 
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächEin Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächOlenaKarlsTkachenko
 
Stadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaStadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaOlenaKarlsTkachenko
 
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...Mathias Magdowski
 
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...Martin M Flynn
 

Recently uploaded (7)

Kurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfKurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdf
 
Presentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamPresentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von Rotterdam
 
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächEin Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
 
Stadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaStadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt Popasna
 
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
 
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdfDíptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
 
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
 

Algorithmen und Datenstrukturen - Kapitel 1

  • 1. Medientechnik und Design Algorithmen und Datenstrukturen Medientechnik und Design Algorithmen und Datenstrukturen Mag. Volker Christian FH Oberösterreich – Campus Hagenberg Fakultät für Informatik, Kommunikation und Medien Softwarepark 11, 4232 Hagenberg/Austria Sommersemester 2013 Volker Christian FH-OÖ – Hagenberg – MTD – ADS Sommersemester 2013 1 Pages
  • 2. Algorithmen und Datenstrukturen Kapitel 1: Einführung Algorithmen und Datenstrukturen Kapitel 1 Einführung Allgemeines Überblick über Algorithmen und Datenstrukturen Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-1 | 1/461
  • 3. Algorithmen und Datenstrukturen Kapitel 1: Einführung Allgemeines Inhalt 1 Form der Lehrveranstaltung 2 Literatur Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-2 | 2/461
  • 4. Algorithmen und Datenstrukturen – Kapitel 1 Einführung Allgemeines 1 Form der Lehrveranstaltung 2 Literatur Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-3 | 3/461
  • 5. Algorithmen und Datenstrukturen – Kapitel 1 Form der Lehrveranstaltung Lehrveranstaltungen Vorlesung Volker Christian volker.christian@fh-hagenberg.at Die Homepage der Vorlesung finden Sie unter http://elearning.fh-hagenberg.at/course/view.php?id=2236 Die Vorlesung findet wöchentlich jeweils am Montag von 940 bis 1115 statt. Übungen Volker Christian volker.christian@fh-hagenberg.at Die Homepage der Übungen finden Sie unter http://elearning.fh-hagenberg.at/course/view.php?id=2237 Es finden neun Übungseinheiten statt. Die Termine werden gesondert bekannt gegeben. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-4 | 4/461
  • 6. Algorithmen und Datenstrukturen – Kapitel 1 Form der Lehrveranstaltung Beurteilung Vorlesung Es findet eine abschließende Klausur statt. Übungen In jeder Übungseinheit werden Übungsaufgaben ausgegeben. Diese Übungsaufgaben werden von Tutoren korrigiert und bewertet. Bei jeder Übung können maximal 24 Punkte erreicht werden. Von den neu Übungen werden die besten Acht gewertet. Jede dieser acht Übungen muss für sich selbst positiv (≥ 12 Punkte) sein. Für einen positiven Abschluss müssen insgesamt mehr als 96 Punkte erreicht werden. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-5 | 5/461
  • 7. Algorithmen und Datenstrukturen – Kapitel 1 Einführung Allgemeines 1 Form der Lehrveranstaltung 2 Literatur Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-6 | 6/461
  • 8. Algorithmen und Datenstrukturen – Kapitel 1 Literatur Basisliteratur Algorithmen in Java (http://www.pearsonhighered.com/educator/product/Algorithms-in-Java-Parts-14/97802013 Author: Robert Sedgewick Verlag: Pearson Studium Seiten: 768 Preis: e 54.08 ISBN: 9780201361209 Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-7 | 7/461
  • 9. Algorithmen und Datenstrukturen Kapitel 1: Einführung Überblick über Algorithmen und Datenstrukturen Inhalt 1 Datensätze 2 Datenstrukturen 3 Algorithmen 4 Leitfaden für die Lösung von Problemstellungen 5 Einführendes Beispiel 6 Zusammenfassung Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-8 | 8/461
  • 10. Algorithmen und Datenstrukturen – Kapitel 1 Überblick über Algorithmen und Datenstrukturen Das große Bild Beim Studium von Datenstrukturen . . . beschäftigt man sich mit verschiedenen, strukturierten Möglichkeiten zum Verwalten (d.h. Speichern) von Datensätzen. beschäftigt man sich mit der Art, wie man auf Datensätze wieder zugreifen kann. beschäftigt man sich mit der Effizienz verschiedener Datenverwaltungstrategien. lernt man, selbst problemgerechte Datenstrukturen zu entwickeln. Beim Studium von Algorithmen . . . beschäftigt man sich mit grundsätzlichen, schematischen Lösungsverfahren für elementare Problemstellungen. beschäftigt man sich mit der Effizienz von Lösungsverfahren. lernt man, selbst in strukturierter Weise Lösungsverfahren für spezifische Problemstellungen zu entwickeln. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-9 | 9/461
  • 11. Algorithmen und Datenstrukturen – Kapitel 1 Einführung Überblick über Algorithmen und Datenstrukturen 1 Datensätze 2 Datenstrukturen 3 Algorithmen 4 Leitfaden für die Lösung von Problemstellungen 5 Einführendes Beispiel 6 Zusammenfassung Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-10 | 10/461
  • 12. Algorithmen und Datenstrukturen – Kapitel 1 Datensätze Datensätze Ein Datensatz ist eine Gruppe von inhaltlich zusammenhängenden Datenfeldern. Datensätze sind dem jeweiligen Problem angepasst. Datensätze sind wiederum aus Datensätzen und elementaren Daten aufgebaut. Telefonbucheintrag Name Vertex Koordinaten Zeichen eines Textes Zeichencode Vorname Farbe Schriftart Telefonnummern Normale Straße Nachbarvertizes Schnitt (Fett, Kursiv, . . . ) Ort Texturkoordinaten ... ... Volker Christian FH-OÖ – Hagenberg – MTD – ADS Farben Unterstrich ... 22. Oktober 2013 1-11 | 11/461
  • 13. Algorithmen und Datenstrukturen – Kapitel 1 Datensätze Datensätze beinhalten selbst wieder Datenstrukturen Telefonbucheintrag (Auszug) Vorname: z.B. Liste oder Array von Zeichen. (Man kann nicht davon ausgehen, dass es in jeder Programmiersprache eine Klasse String gibt.) Nummern: z.B. Liste von Telefonnummern. Möglicherweise existieren mehrere Telefonnummern für die betreffende Person. Vertex (Auszug) Koordinaten: z.B. Array für die Koordinaten x , y und z. Nachbarn: z.B. Liste von Vertizes. Farbe: z.B. Array für die Komponenten Rot, Grün und Blau. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-12 | 12/461
  • 14. Algorithmen und Datenstrukturen – Kapitel 1 Datensätze Implementierung von Datensätzen in Java Elementare Datensätze besitzen elementare Datentypen, d.h. Werte von elementaren Datentypen sind elementare Datensätze – bestehen aus einzelnen Bits und Bytes. boolean, byte, char, short, int, long, float, double Komplexe Datensätze sind Objekte von Klassen. class TelBookEntry, class Vertex, class Symbol, . . . Die öffentlichen Methoden der Klassen bilden die Schnittstelle des Datensatzes. Die Schnittstelle abstrahiert den Datensatz von dessen eigentlicher Implementierung. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-13 | 13/461
  • 15. Algorithmen und Datenstrukturen – Kapitel 1 Datensätze Beispiel: Telefonbucheintrag 1 2 3 4 5 6 public class TelephoneBookEntry { protected String name; protected String surName; protected String city; protected String street; protected String[] phoneNumbers; 7 8 public TelephoneBookEntry(String name, String surName, String city, String street, ← String[] phoneNumbers) { this.name = name; this.surName = surName; this.city = city; this.street = street; this.phoneNumbers = phoneNumbers.clone(); } 9 10 11 12 13 14 15 16 public String getName() { return name; } 17 18 35 public void setName(String name) { this.name = name; } } Listing 1 : TelephoneBookEntry.java Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-14 | 14/461
  • 16. Algorithmen und Datenstrukturen – Kapitel 1 Einführung Überblick über Algorithmen und Datenstrukturen 1 Datensätze 2 Datenstrukturen 3 Algorithmen 4 Leitfaden für die Lösung von Problemstellungen 5 Einführendes Beispiel 6 Zusammenfassung Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-15 | 15/461
  • 17. Algorithmen und Datenstrukturen – Kapitel 1 Datenstrukturen Datenstrukturen verwalten Datensätze Datenstrukturen werden verwendet, um Daten bzw. Datensätze geeignet zu verwalten. Eine spezielle Datenstruktur ist definiert durch . . . die Art der Anordnung und Verknüpfung der Datensätze. mögliche Zugriffsarten auf die Datensätze. (a) Liste (b) Baum (c) Hashmap Abbildung 1 : Beispiele von Datenstrukturen Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-16 | 16/461
  • 18. Algorithmen und Datenstrukturen – Kapitel 1 Datenstrukturen Elementare Datenstrukturen Es existieren viele elementare Datenstrukturen. Jede Datenstruktur hat ihre Vor- und Nachteile. Felder (Arrays) Stapelspeicher (Stack) Warteschlangen (Queue) Listen (List) Bäume (Tree) Hashtabellen (Hashtable/Hashmap) Halden (Heaps) Graphen (Graphs) Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-17 | 17/461
  • 19. Algorithmen und Datenstrukturen – Kapitel 1 Datenstrukturen Charakteristika von Datenstrukturen Datenstrukturen werden nach folgenden Eigenschaften charakterisiert: Schnittstelle: Zugriffsarten (Operationen) auf die Datenstruktur. Operationen zum Einfügen von Datensätzen Operationen zum Löschen von Datensätzen Operationen, um auf Datensätze zuzugreifen ... Komplexität: Dynamische und statische Komplexität Dynamische Komplexität ist ein Maß für das Laufzeitverhalten der Schnittstelle und dessen Abhängigkeit von der Zahl gespeicherter Datensätze. Statische Komplexität ist ein Maß für die Komplexität des Quelltextes der Implementierung. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-18 | 18/461
  • 20. Algorithmen und Datenstrukturen – Kapitel 1 Datenstrukturen Implementierung von Datenstrukturen in Java Datenstrukturen werden als Klassen implementiert. class List, class Tree, class Array, . . . Die öffentlichen Methoden dieser Klassen bilden die Schnittstelle der Datenstruktur. Die Schnittstelle abstrahiert die Datenstruktur von ihrer eigentlichen Implementierung. Sind Hilfsmethoden und Hilfsklassen notwendig, so werden diese als nicht öffentlich vereinbart. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-19 | 19/461
  • 21. Algorithmen und Datenstrukturen – Kapitel 1 Datenstrukturen Beispiel: Array als Datenstruktur Eine Datenstruktur ist ein Array, wenn man über einen Index auf Datensätze zugreifen kann. 1 2 3 public class Array { protected int size = 0; protected Object[] array = null; Array #size:int 4 5 public Array(int size) { this.size = size; array = new Object[size]; } 6 7 +Array(size:int) +add(index:int, o:Object):void +get(index:int):Object +size():int 8 9 public void add(int index, Object o) { array[index] = o; } 10 11 <<array>> 12 13 public Object get(int index) { return array[index]; } 14 15 0..size Object 16 17 public int size() { return size; } 18 19 20 } Listing 2 : Array.java Volker Christian array Abbildung 2 : UML-Class-Diagramm der Klasse Array FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-20 | 20/461
  • 22. Algorithmen und Datenstrukturen – Kapitel 1 Einführung Überblick über Algorithmen und Datenstrukturen 1 Datensätze 2 Datenstrukturen 3 Algorithmen 4 Leitfaden für die Lösung von Problemstellungen 5 Einführendes Beispiel 6 Zusammenfassung Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-21 | 21/461
  • 23. Algorithmen und Datenstrukturen – Kapitel 1 Algorithmen Strukturierte Problemlösungsverfahren Wortstamm: Verballhornung des Namens Muhammed ibn Musa al-Chwarizmi ( ca. 783, ca. 850), dessen arabisches Lehrbuch „Über das Rechnen mit indischen Ziffern“ (um 825) in der mittelalterlichen lateinischen Übersetzung mit den Worten Dixit Algorismi (Algorismi hat gesagt) beginnt. Bedeutung: Eine Vorschrift zur Lösung einer Problemstellung. Elementare Algorithmen sind Problemlösungsstrategien für verschiedene, in Abwandlungen immer wiederkehrende Problemstellungen. Sortieren Suchen Zeichenkettenverarbeitung Geometrie und Grafik Numerik Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-22 | 22/461
  • 24. Algorithmen und Datenstrukturen – Kapitel 1 Algorithmen Charakteristika von Algorithmen Ein Algorithmus ist eine Vorschrift zur Lösung eines elementaren, unabhängigen Problems und muss . . . aus einzelnen Schritten zusammengesetzt sein. In jedem Schritt wird eine „Berechnung“ durchgeführt. Bei jedem Schritt ist angegeben, welcher Schritt als nächster auszuführen ist. eindeutig ausführbar sein. Es darf kein Interpretationsspielraum, was zu geschehen hat, bestehen. endlich sein. Statische Endlichkeit: Ein Algorithmus muss sich mit endlich vielen Zeichen formulieren lassen. Dynamische Endlichkeit: Ein Algorithmus muss das Problem in endlich vielen Schritten lösen. Daten verarbeiten. Manipulation – z.B. Sortieren – von bestehenden Daten. Berechnung eines Ergebnisses – z.B. Berechnung der Wurzel aus 9. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-23 | 23/461
  • 25. Algorithmen und Datenstrukturen – Kapitel 1 Algorithmen Eingangsgrößen und Ausgangsgrößen Ein Algorithmus muss Zugriff auf die zu verarbeitenden Datensätze oder die für eine Berechnung heranzuziehenden Werte haben. Ein Algorithmus muss die verarbeiteten Datensätze oder die Ergebnisse einer Rechnung wieder zur Verfügung stellen. Eingangsgrößen: Die Datenbasis wird einem Algorithmus meist in Form von Datensätzen in einer Datenstruktur zur Verfügung gestellt. Ausgangsgrößen: Die Ergebnisse werden von einem Algorithmus meist in Form eine Datenstruktur, eines Datensatzes oder eines Wertes zur Verfügung gestellt. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-24 | 24/461
  • 26. Algorithmen und Datenstrukturen – Kapitel 1 Algorithmen Fehlerfreiheit Ein Algorithmus muss in allen erdenklichen Situationen wohldefiniert und geeignet reagieren. ⇒ Prüfen der Eingangsgrößen auf Plausibilität. ⇒ Ist die Ermittlung des Ergebnisses nicht möglich, muss dies vom Algorithmus geeignet signalisiert werden. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-25 | 25/461
  • 27. Algorithmen und Datenstrukturen – Kapitel 1 Algorithmen Definition des Algorithmusbegriffs Versuch einer Definition: Ein Algorithmus ist ein endliches, schrittweises Verfahren zur Berechnung gesuchter aus gegebenen Größen, in dem jeder Schritt aus einer Anzahl eindeutig ausführbarer Operationen und einer Angabe über den nächsten Schritt besteht. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-26 | 26/461
  • 28. Algorithmen und Datenstrukturen – Kapitel 1 Algorithmen Beschreibung von Algorithmen Spezifikation = Sicht von außen Beschreibung der Problemstellung. Definition des „Was“. Beschreibung der Schnittstelle und deren Verhalten. Der Algorithmus an sich wird als „Black Box“ betrachtet. Darstellung = Sicht von innen Beschreibung der Lösungsidee. Beschreibung des „Wie“. Beschreibung des eigentlichen Lögungsverfahrens. Muss die spezifizierte Schnittstelle und deren Verhalten zur Verfügung stellen. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-27 | 27/461
  • 29. Algorithmen und Datenstrukturen – Kapitel 1 Algorithmen Darstellung von Algorithmen Die Darstellung eines Algorithmus ist eine Meta-Beschreibung – die Beschreibung einer Beschreibung. Darstellungsarten: Prosa: Umgangssprachlich in Form eines kurzen „Aufsatzes“. Stilisiert: Umgangssprachlich, aber schon etwas formalisiert – schrittweise, eindeutig, endlich. Grafisch: Ablaufdiagramm (Flussdiagramm) oder Struktogramm. Abstrakt: Algorithmenbeschreibungssprache wie Adele oder Jana (Pseudocode). Konkret: Implementierung in einer Programmiersprache wie Java, C#, C, C++, Pascal, . . . Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-28 | 28/461
  • 30. Algorithmen und Datenstrukturen – Kapitel 1 Algorithmen Implementierung von Algorithmen als Objekt-Methoden Ist ein Algorithmus Teil einer Datenstruktur, so wird der Algorithmus als Objektmethode implementiert. Beispiel: Sort-Algorithmus der Klasse List 1 2 public class List { ... 3 4 public void sort() { ... } 5 6 7 8 9 ... } Die Eingangsgrößen kann der Algorithmus direkt von der Datenstruktur beziehen. Die Ausgangsgrößen kann der Algorithmus direkt in der Datenstruktur ablegen oder als Rückgabewert liefern. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-29 | 29/461
  • 31. Algorithmen und Datenstrukturen – Kapitel 1 Algorithmen Implementierung von Algorithmen als Klassen-Methoden Wird ein Algorithmus nicht als Teil einer Datenstruktur formuliert, so wird er als Klassenmethode einer Klasse implementiert. Beispiel: Externer Sort-Algorithmus 1 2 public class Sort { ... 3 4 public static void sort(List list) { ... } 5 6 7 8 9 ... } Die Eingangsgrößen werden dem Algorithmus über die Aktualparameter übergeben. Die Ausgangsgrößen liefert der Algorithmus über den Rückgabewert oder wenn möglich über Referenz-Aktualparameter (für komplexe oder mehrere Ergebniswerte). Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-30 | 30/461
  • 32. Algorithmen und Datenstrukturen – Kapitel 1 Einführung Überblick über Algorithmen und Datenstrukturen 1 Datensätze 2 Datenstrukturen 3 Algorithmen 4 Leitfaden für die Lösung von Problemstellungen 5 Einführendes Beispiel 6 Zusammenfassung Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-31 | 31/461
  • 33. Algorithmen und Datenstrukturen – Kapitel 1 Lösungsleitfaden Schrittweise Herangehensweise 1 Beschäftigung mit der Thematik. Wenn die Thematik nicht bekannt ist, muss man sich in diese einarbeiten! 2 3 Mit welchen Datensätzen hat man zu tun? Wie können die Datensätze dargestellt werden? Auswahl einer geeigneten Datenstruktur. Kann eine elementare, bekannte Datenstruktur verwendet werden? Muss eine problemgerechte Datenstruktur entwickelt werden? 4 Spezifizieren der Schnittstelle des Algorithmus und was er zu tun hat. 5 Entwicklung und Implementierung des Algorithmus unter Bedachtnahme auf die ausgewählte Datenstruktur und die spezifizierte Schnittstelle. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-32 | 32/461
  • 34. Algorithmen und Datenstrukturen – Kapitel 1 Einführung Überblick über Algorithmen und Datenstrukturen 1 Datensätze 2 Datenstrukturen 3 Algorithmen 4 Leitfaden für die Lösung von Problemstellungen 5 Einführendes Beispiel 6 Zusammenfassung Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-33 | 33/461
  • 35. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Ermittlung des Index eines Folgegliedes Problemstellung: Gegeben: Eine endliche Folge von paarweise disjunkten, ganzen Zahlen. z = (6, 3, 4, 8, 5, 7, 2, 9, . . . , zn ) Gesucht: Der Index einer gegebenen Zahl der Folge. Fragestellungen bei der Analyse für die Implementierung: 1 Beschäftigen mit der Problemstellung: Was ist eine Folge und was ist der Index eines Folgegliedes? 2 Wie können die ganzen Zahlen in Java dargestellt werden? 3 Welche Datenstruktur passt auf das Problem? 4 Wie soll der Algorithmus das Problem mit Bedacht auf die ausgewählte Datenstruktur lösen? Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-34 | 34/461
  • 36. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Beschäftigung mit der Problemstellung Was ist eine Folge und was ist der Index eines Folgegliedes? Aus Wikipedia: Als Folge wird eine Auflistung endlich oder unendlich vieler, durch Ordinalzahlen fortlaufend nummerierter Objekte bezeichnet. Das Objekt mit der Nummer i, man sagt hier auch: mit dem Index i, wird i-tes Glied der Folge genannt. Schreibweise: Endliche Folge: x = (x1 , x2 , x3 , . . . , xn ) Unendliche Folge: x = (x1 , x2 , x3 , . . .) Formale Definition: Eine Folge x ist als Abbildung aus einer Indexmenge I in die Zielmenge X definiert: x : I → X, wobei I = {1, 2, 3, . . . , n} und X = {xi } x : i → xi Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-35 | 35/461
  • 37. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Eine ganze Zahl als Datensatz In Java können ganze Zahlen durch die elementaren Datentypen byte, short, int oder long dargestellt werden. Nach der Regel, dass Datensätze als Objekte von Klassen dargestellt werden müssen, können die in Java existierenden Wrapperklassen der elementaren Datentypen verwendet werden. Datentyp byte short int long Wrapperklasse Byte Short Integer Long Welche dieser Wrapperklasse verwendet werden soll, hängt von dem Wertebereich der darzustellenden ganzen Zahlen ab. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-36 | 36/461
  • 38. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Eine ganze Zahl als Datensatz Ein Objekt der Wrapperklasse Long repräsentiert einen long-Wert 1 package java.lang; 2 3 4 public class Long { public Long(long l); // Constructor 5 6 public // < // = // > 7 8 9 int compareTo(Long anotherLong); 0, if longValue() < anotherLong.longValue() 0, if longValue() == anotherLong.longValue() 0, if longValue() > anotherLong.longValue() 10 11 public long longValue(); // The represented value 12 13 public String toString(); // The value as a String 14 15 16 public static Long valueOf(long l); // Create an Object from a value } Listing 3 : Auszug aus der Klasse Long Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-37 | 37/461
  • 39. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Welche Datenstruktur passt auf das Problem? Welche Funktionalitäten muss die Datenstruktur zur Verfügung stellen? Die Reihenfolge der Folgeglieder muss in der Datenstruktur erhalten bleiben. Es soll möglich sein, auf einzelne Objekte der Folge direkt über ihren Index zugreifen zu können. Eine mögliche und in diesem Fall gute Wahl ist die Verwendung eines Arrays. In Arrays bleibt die Reihenfolge der Elemente erhalten. In Arrays kann über den Array-Index auf die einzelnen Elemente zugegriffen werden. Achtung: Das erste Element einer Folge trägt typischerweise den Index 1. Das erste Element eines Arrays trägt den Index 0. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-38 | 38/461
  • 40. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Die Datenstruktur Array Array als Klasse 1 2 3 public class Array { protected int size = 0; protected Object[] array = null; 4 5 public Array(int size) { this.size = size; array = new Object[size]; } 6 7 8 9 public void add(int index, Object o) { array[index] = o; } 10 11 12 13 public Object get(int index) { return array[index]; } 14 15 16 17 public int size() { return size; } 18 19 20 } Listing 4 : Array.java Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-39 | 39/461
  • 41. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Spezifikation des Algorithmus: Version 1 1 Name: Der Algorithmus heißt indexSearch und wird als Klassenmethode der Klasse IndexSearch implementiert. 2 Eingangsgrößen: Dem Algorithmus wird ein mit Long-Objekten gefülltes Objekt der Klasse Array und ein long-Wert als Schlüssel, in Form eines Objektes der Klasse Long, übergeben. 3 Ausgangsgrößen: Der Algorithmus ermittelt den (mathematischen) Index des Schlüssels und gibt diesen als Ergebnis zurück. Schnittstelle: 4 int indexSearch(Array array, Long key); 5 Fehlerfälle: Ist der Schlüssel nicht im Array gespeichert, so soll dies durch den Rückgabewert -1 angezeigt werden. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-40 | 40/461
  • 42. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Darstellung des Algorithmus Datenrepräsentation Jedes Glied der Folge wird in ein Element des Array gespeichert. Die Reihenfolge der Folgeglieder und deren Repräsentation als Elemente im Array soll identisch sein. ⇒ Die Indizes index der Elemente des Arrays korrespondieren mit den Indizes i der Folgeglieder, wobei ein Offset von 1 besteht: index = i − 1. Arbeitsweise Schleife über alle Elemente des Arrays. Jedes Element des Arrays mit der gegebenen Zahl vergleichen. Sind beide gleich, ist der Index i der gegebenen Zahl gleich dem Index des Elements im Array plus eins: index + 1. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-41 | 41/461
  • 43. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Ermittlung des Index eines Folgegliedes Prosa Man nehme die gegebene Folge und wähle die erste Position der Folge als aktuelle Position. Ist die aktuelle Position außerhalb der gegebenen Folge, ist die vorgegebene Zahl nicht Element der Folge und die Suche kann somit nicht erfolgreich beendet werden. Ist die Zahl an der aktuellen Position gleich der gesuchten Zahl, so ist die aktuelle Position in der gegebenen Folge die Ordinalzahl, d.h. der Index der vorgegebenen Zahl und die Suche können somit erfolgreich beendet werden. Ist die Zahl an der aktuellen Position nicht die gesuchte Zahl, so gehe zur nächsten Position in der Folge und wiederhole den in diesem Absatz beschriebenen Vorgang! Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-42 | 42/461
  • 44. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Ermittlung des Index eines Folgegliedes Stilisierte Prosa 1 Wähle die erste Position der Folge als aktuelle Position. 2 Liegt die aktuelle Position außerhalb der Folge (aktuelle Position > |F |), gehe zu Schritt 6! 3 Ist die Zahl an der aktuellen Position der Folge gleich der vorgegebenen Zahl, dann gehe zu Schritt 5! 4 „Erhöhe“ die aktuelle Position um 1 und gehe zu Schritt 2! 5 Die gesuchte Ordinalzahl, also der Index der vorgegebenen Zahl, ist die aktuelle Position. 6 Ende des Algorithmus. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-43 | 43/461
  • 45. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Ermittlung des Index eines Folgegliedes Flussdiagramm indexsearch(F , vZahl) i =1 ? i > |F | Y N ? Fi == vZahl Y N i =i +1 index = i End Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-44 | 44/461
  • 46. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Der fertig implementierte Algorithmus Der Algorithmus indexSearch 1 2 3 4 public class IndexSearch { public static int indexSearch(Array array, Long key) { for (int i = 0; i < array.size(); i++) { // Iterate over every index Long currentLong = (Long) array.get(i); 5 6 if (key.compareTo(currentLong) == 0) { // Found? return i + 1; // Found: Return the // adjusted index } 7 8 9 10 } return -1; // Not found: Return -1 11 12 13 } } Listing 5 : IndexSearch.java Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-45 | 45/461
  • 47. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Testen des Algorithmus Ein Test-Treiber für indexSearch 1 2 3 public class IndexSearchTreiber { public static void main(String[] args) { Array array = new Array(10); 4 5 for (int i = 0; i < 10; i++) { array.add(i, new Long(100 + i)); } 6 7 8 9 Long key = new Long(102); int index = IndexSearch.indexSearch(array, key); 10 11 12 System.out.println("Index␣of␣" + key + ":␣" + index); 13 14 } } Listing 6 : IndexSearchTreiber.java Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-46 | 46/461
  • 48. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Spezifikation des Algorithmus: Version 2 1 Name: Der Algorithmus heißt indexSearch und wird als Objektmethode der Klasse ArrayWithIndexSearch implementiert. 2 Eingangsgrößen: Der Algorithmus kann direkt auf die Elemente der Klasse ArrayWithIndexSearch zugreifen. Zusätzlich wird ihm ein long-Wert als Schlüssel, in Form eines Objektes der Klasse Long, übergeben. 3 Ausgangsgrößen: Der Algorithmus ermittelt den (mathematischen) Index des Schlüssels und gibt diesen als Ergebnis zurück. Schnittstelle: 4 int indexSearch(Long key); 5 Fehlerfälle: Ist der Schlüssel nicht im Array gespeichert, so soll dies durch den Rückgabewert -1 angezeigt werden. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-47 | 47/461
  • 49. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel indexSearch als Objektmethode Algorithmen können, auch als Objektmethoden implementiert werden. Der Algorithmus indexSearch also Objektmethode 1 2 3 4 public class ArrayWithIndexSearch extends Array { // Inherit Array as base public ArrayWithIndexSearch(int size) { super(size); } 5 6 public int indexSearch(Long key) { for (int i = 0; i < this.size(); i++) { // Iterate over every index Long currentLong = (Long) this.get(i); 7 8 9 10 if (key.compareTo(currentLong) == 0) { // Found? return i + 1; // Found: Return the // adjusted index } 11 12 13 14 } return -1; // Not found: Return -1 15 16 17 } } Listing 7 : ArrayWithIndexSearch.java Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-48 | 48/461
  • 50. Algorithmen und Datenstrukturen – Kapitel 1 Einführendes Beispiel Wieder ein Test-Treiber Ein Test-Treiber für indexSearch als Objektmethode 1 2 3 public class ArrayWithIndexSearchTreiber { public static void main(String[] args) { ArrayWithIndexSearch array = new ArrayWithIndexSearch(10); 4 5 for (int i = 0; i < 10; i++) { array.add(i, new Long(100 + i)); } 6 7 8 9 Long key = new Long(102); int index = array.indexSearch(key); 10 11 12 System.out.println("Index␣of␣" + key + ":␣" + index); 13 14 } } Listing 8 : ArrayWithIndexSearchTreiber.java Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-49 | 49/461
  • 51. Algorithmen und Datenstrukturen – Kapitel 1 Einführung Überblick über Algorithmen und Datenstrukturen 1 Datensätze 2 Datenstrukturen 3 Algorithmen 4 Leitfaden für die Lösung von Problemstellungen 5 Einführendes Beispiel 6 Zusammenfassung Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-50 | 50/461
  • 52. Algorithmen und Datenstrukturen – Kapitel 1 Zusammenfassung Algorithmen und Datenstrukturen Algorithmen verarbeiten meist eine Menge von Datensätzen. Diese Datensätze müssen in geeigneter Weise in Datenstrukturen verwaltet werden. Algorithmen greifen über die Schnittstellen der Datenstrukturen auf die Daten zu. Die Schnittstellen der Datenstrukturen sind selbst wieder Algorithmen. Fazit: Algorithmen und Datenstrukturen bilden eine Einheit. Datenstrukturen verwalten Datensätze und Algorithmen verarbeiten diese. Dabei bedienen sich die Algorithmen der Schnittstellen der Datenstrukturen, um auf die Datensätze zugreifen zu können und der Schnittstellen der Datensätze, um diese zu verarbeiten. Volker Christian FH-OÖ – Hagenberg – MTD – ADS 22. Oktober 2013 1-51 | 51/461