01 Introduction
01 Introduction
01
Einleitung
Folien beruhen auf gemeinsamer Veranstaltung mit Christian Janson aus dem SS 2020
Eingabe
Computer
Programm
Algorithmus: höherer Setzen
:
(Problem-)
berechne ggT(21,39) =3
Instanz
ausführbar
Algorithmus:
Eine aus endlich vielen Schritten bestehende,
ausführbare Handlungsvorschrift
Eine aus endlich zur eindeutigen
vielen Schritten bestehende, ausführbare
Handlungsvorschrift
Umwandlung zur eindeutigen
von Eingabe- Umwandlung von
in Ausgabedaten.
Eingabe- in Ausgabedaten
Wa
nach Cormen et al., Introduction to Algorithms
↑
übereinstimmende Finitheit Algro hat>
-
liche Beschreibung
end
eine
Charakterisierung
in der Literatur! berechenbar Terminierung stopptProgramm =>
in
Zeit
Effektivität
hal : wer
Asanrayn
Allgemeinheit >
-
nicht
ein zehe
fergebenbeliebige Korrekt
sein Determiniertheit ↑
für selve
↓ gidget
Falls termiet , ,
Alg .
n
Finitheit
berechenbar Terminierung
Effektivität
ist alle
Auß
hat endliche Zeile
Determiniertheit
↑
Code
Allgemeinheit
Terminerba s
"Halte problem"
Gesucht "Programm"
: I mit
anhält
PCP)
2
wenn
H() =
senst
gleicher EingabeTerminierung
Algorithmus liefert bei berechenbar
Effektivität
gleiche Ausgabe > Zufallszahlen -
determiniertheit nicht
generator ist
>
-
Determiniertheit
,
Allgemeinheit
Algorithmus durchläuft für gleiche Eingabe
Korrektheit
immer die gleichen Schritte/Zustände Determinismus
Random quick Sort
anwendbar bestimmt
berechenbar Terminierung
Algorithmus
einige
für Eingaben
bestimmte
Effektivität
ganze Problemklasse anwendbar
sondern
alle beliebige
für
Eingaben
Korrektheit:
Allgemeinheit Determiniertheit
Falls Algorithmus terminiert, ist die
Korrektheit Ausgabe richtigDeterminismus
Primachentester (für Effizienz
Kunde of
% Karakt
anwendbar bestimmt
100
verzichtet)
1 IF b==0 THEN
2 return a
3 ELSE //a mod b Divisionsrest
4 return gcd(b,a mod b)
, + ,
>
-
-- 1-
10
Algorithmen und Datenstrukturen | Marc Fischlin | SS 23 | 01 Einleitung | 9
Beispiel: Euklidischer Algorithmus (II)
1 IF b==0 THEN
2 return a
3 ELSE //a mod b Divisionsrest
4 return gcd(b,a mod b)
1 IF b==0 THEN
2 return a
3 ELSE //a mod b Divisionsrest
4 return gcd(b,a mod b)
I
2 return a
3 ELSE //a mod b Divisionsrest
4 return gcd(b,a mod b) 19
Abschnitte 6 und 7
geeignete Modellierung
von Problemen erlernen
Entwurfs-
paradigmen Übungen
kennenlernern
Umsetzung in
Abschnitt 7 Algorithmus Programme können
(hier: Java)
wichtige
Algorithmen
Analysetechniken erlernen (dorretheit
wissen
Abschnitt 6
Korrektheit Terminierung Aufwand
Eingabe
Computer
Programm
Algorithmus Ausgabe
Abstraktion
+Verallgemeinerung Problem/
Modell Übung
Vorlesung
(Problem-) +Übung
Instanz
…
lauffähiger 1 public void bfs(int s) {
2 Eingabe visited
boolean[]
Java-Code
= new boolean[V];
Computer
3 LinkedList<Integer> queue
Programm
= new LinkedList<>();
4
5 visited[s] = true;
6 [Link](s);
Pseudocode: …
Algorithmus Ausgabe
einfacher Zugang
BFS(G,s)
Abstraktion
+Verallgemeinerung Problem/
Modell Übung
1 [Link]=GRAY; …
2 newQueue(Q); Vorlesung
3 (Problem-)
enqueue(Q,s); +Übung
… Instanz
Figeben
L
a
-
bei
gleicher Eingabe durch
Was halten Sie von folgender Idee, die
- mod-Funktion
(z.B. für den Euklidischen Algorithmus) umzusetzen?
3 END WHILE
4 return a
Datenstrukturen:
Eine aus endlich vielen Schritten bestehende,
ausführbare Handlungsvorschrift zur eindeutigen
Eine Datenstruktur ist eine Methode,
Umwandlung
Daten für den von Eingabe-
Zugriff in Ausgabedaten.
und die Modifikation zu organisieren
0 1 2 3 4 5 6 7 8
A 12 47 17 98 72
Datenstrukturen beinhalten
Daten + Strukturbestandteile
-
720]
A
- iste
z.B. A[7] ist achter erste
Eintrag im Speicher
Stack-Operationen
Datenstruktur („wie“) als Array
oder verkettete Liste
komplexe
Datenstrukturen
Analysetechniken erlernen
kennenlernen
Abschnitte 4 und 5
Korrektheit Terminierung Aufwand
Abschnitte 3-5
Algorithmen und Datenstrukturen | Marc Fischlin | SS 23 | 01 Einleitung | 21
Algorithmen
und
Datenstrukturen
abstrantes Modell
verwendet Daten-
Problem Algorithmus
struktur
Dijkstra(…)
gesucht:
„Suche 1 … Datenstruktur,
kürzesten 2 WHILE… mit der man leicht
Weg“ 3 „gib mir den kleinste Einträge
kleinsten Wert“ finden kann
Abschnitt 6 4 …
„Konstruiere eine
10x30 =
O
300
komplexere einfache
Datenstruktur Abschnitt 4 (auch 3 und 5) Datenstruktur
(z.B. Heap) (z.B. Array)