1 Vom Problem zum Program
EinProblembesteht darin, aus einer Menge von Informationen eine weitere (unbekannte) Information zu bestimmen.
mathematisch:
Ein Problem beschreibt eine Funktionf :E→A, mit E=zulässige EingabenundA=mögliche Ausgaben.
Beispiele:
ñ Addition:f :Q×Q→Q
ñ Primzahltest:f :N→ {yes,no}
ñ Schach:f :P → Z, wobeiPdie Menge aller
Schachpositionen ist, undf (P ), der beste Zug in PositionP.
1 Vom Problem zum Program
EinProblembesteht darin, aus einer Menge von Informationen eine weitere (unbekannte) Information zu bestimmen.
mathematisch:
Ein Problem beschreibt eine Funktionf :E→A, mit E=zulässige EingabenundA=mögliche Ausgaben.
Beispiele:
ñ Addition:f :Q×Q→Q
ñ Primzahltest:f :N→ {yes,no}
ñ Schach:f :P → Z, wobeiPdie Menge aller
Schachpositionen ist, undf (P ), der beste Zug in PositionP.
1 Vom Problem zum Program
Harald Räcke 3/656
1 Vom Problem zum Program
EinProblembesteht darin, aus einer Menge von Informationen eine weitere (unbekannte) Information zu bestimmen.
mathematisch:
Ein Problem beschreibt eine Funktionf :E→A, mit E=zulässige EingabenundA=mögliche Ausgaben.
Beispiele:
ñ Addition:f :Q×Q→Q
ñ Primzahltest:f :N→ {yes,no}
ñ Schach:f :P → Z, wobeiPdie Menge aller
Schachpositionen ist, undf (P ), der beste Zug in PositionP.
1 Vom Problem zum Program
EinProblembesteht darin, aus einer Menge von Informationen eine weitere (unbekannte) Information zu bestimmen.
mathematisch:
Ein Problem beschreibt eine Funktionf :E→A, mit E=zulässige EingabenundA=mögliche Ausgaben.
Beispiele:
ñ Addition:f :Q×Q→Q
ñ Primzahltest:f :N→ {yes,no}
ñ Schach:f :P → Z, wobeiPdie Menge aller
Schachpositionen ist, undf (P ), der beste Zug in PositionP.
1 Vom Problem zum Program
Harald Räcke 3/656
1 Vom Problem zum Program
EinProblembesteht darin, aus einer Menge von Informationen eine weitere (unbekannte) Information zu bestimmen.
mathematisch:
Ein Problem beschreibt eine Funktionf :E→A, mit E=zulässige EingabenundA=mögliche Ausgaben.
Beispiele:
ñ Addition:f :Q×Q→Q
ñ Primzahltest:f :N→ {yes,no}
ñ Schach:f :P → Z, wobeiPdie Menge aller
Schachpositionen ist, undf (P ), der beste Zug in PositionP.
Algorithmus
EinAlgorithmusist einexaktes Verfahren zur Lösung eines Problems, d.h. zur Bestimmung der gewünschten Resultate.
Man sagt auch ein Algorithmusberechnet eine Funktionf.
Ausschnitt aus Briefmarke, Soviet Union 1983 Public Domain
Abu Abdallah Muhamed ibn Musa
al-Chwarizmi, ca.
780–835
Algorithmus
Beobachtung:
Nicht jedes Problem läßt sich durch einen Algorithmus lösen (Berechenbarkeitstheorie).
Beweisidee: (Diskrete Strukturen)
ñ es gibtüberabzählbar unendlichviele Probleme
ñ es gibtabzählbar unendlichviele Algorithmen
Algorithmus
Beobachtung:
Nicht jedes Problem läßt sich durch einen Algorithmus lösen (Berechenbarkeitstheorie).
Beweisidee: (Diskrete Strukturen)
ñ es gibtüberabzählbar unendlichviele Probleme
ñ es gibtabzählbar unendlichviele Algorithmen
1 Vom Problem zum Program
Harald Räcke 5/656
Algorithmus
Dasexakte Verfahrenbesteht i.a. darin, eine Abfolge von elementaren Einzelschrittender Verarbeitung festzulegen.
Beispiel:Alltagsalgorithmen
Resultat Algorithmus Einzelschritte
Pullover Strickmuster eine links, eine rechts, eine fallen lassen
Kuchen Rezept nimm 3 Eier . . .
Konzert Partitur Noten
Beispiel: Euklidischer Algorithmus
Problem:geg.a, b∈N, a, b≠0. BestimmeggT(a, b).
Algorithmus:
1. Fallsa=bbrich Berechnung ab. Es giltggT(a, b)=a.
Ansonsten gehe zu Schritt 2.
2. Fallsa > b, ersetzeadurcha−bund setze Berechnung in Schritt 1 fort. Ansonsten gehe zu Schritt 3.
3. Es gilta < b. Ersetzebdurchb−aund setze Berechnung in Schritt 1 fort.
1 Vom Problem zum Program
Harald Räcke 7/656
Beispiel: Euklidischer Algorithmus
Warum geht das?
Wir zeigen, füra > b:ggT(a, b)=ggT(a−b, b).
Seieng=ggT(a, b),g0=ggT(a−b, b).
Dann gilt:
a = qa·g
b = qb·g und a−b = q0a−b·g0 b = q0b·g0
a−b = (qa−qb)·g
b = qb·g und a = (q0a−b+q0b)·g0 b = qb0 ·g0 Das heißtgist Teiler vona−b, bundg0 ist Teiler vona, b. Daraus folgtg≤g0undg0≤g, alsog=g0.
Beispiel: Euklidischer Algorithmus
Warum geht das?
Wir zeigen, füra > b:ggT(a, b)=ggT(a−b, b).
Seieng=ggT(a, b),g0=ggT(a−b, b).
Dann gilt:
a = qa·g
b = qb·g und a−b = q0a−b·g0 b = q0b·g0
a−b = (qa−qb)·g
b = qb·g und a = (q0a−b+q0b)·g0 b = qb0 ·g0
Das heißtgist Teiler vona−b, bundg0 ist Teiler vona, b. Daraus folgtg≤g0undg0≤g, alsog=g0.
1 Vom Problem zum Program
Harald Räcke 8/656
Beispiel: Euklidischer Algorithmus
Warum geht das?
Wir zeigen, füra > b:ggT(a, b)=ggT(a−b, b).
Seieng=ggT(a, b),g0=ggT(a−b, b).
Dann gilt:
a = qa·g
b = qb·g und a−b = q0a−b·g0 b = q0b·g0
a−b = (qa−qb)·g
b = qb·g und a = (q0a−b+q0b)·g0 b = qb0 ·g0
Das heißtgist Teiler vona−b, bundg0 ist Teiler vona, b. Daraus folgtg≤g0undg0≤g, alsog=g0.
Beispiel: Euklidischer Algorithmus
Warum geht das?
Wir zeigen, füra > b:ggT(a, b)=ggT(a−b, b).
Seieng=ggT(a, b),g0=ggT(a−b, b).
Dann gilt:
a = qa·g
b = qb·g und a−b = q0a−b·g0 b = q0b·g0
a−b = (qa−qb)·g
b = qb·g und a = (q0a−b+q0b)·g0 b = qb0 ·g0
Das heißtgist Teiler vona−b, bundg0 ist Teiler vona, b.
Daraus folgtg≤g0undg0≤g, alsog=g0.
1 Vom Problem zum Program
Harald Räcke 8/656
Eigenschaften
(statische) Finitheit. Die Beschreibung des Algorithmus besitzt endliche Länge. (nichtuniforme Algorithmen)
(dynamische) Finitheit. Die bei Abarbeitung entstehenden Zwischenergebnisse sind endlich.
Terminiertheit. Algorithmen, die nach endlich vielen Schritten ein Resultat liefern, heißenterminierend. (Betriebssysteme,
reaktive Systeme)
Determiniertheit. Bei gleichen Eingabedaten gibt ein Algorithmus das gleiche Ergebnis aus. (randomisierte Algorithmen, nicht-deterministische Algorithmen) Determinismus. Der nächste anzuwendende Schritt im
Eigenschaften
(statische) Finitheit. Die Beschreibung des Algorithmus besitzt endliche Länge. (nichtuniforme Algorithmen)
(dynamische) Finitheit. Die bei Abarbeitung entstehenden Zwischenergebnisse sind endlich.
Terminiertheit. Algorithmen, die nach endlich vielen Schritten ein Resultat liefern, heißenterminierend. (Betriebssysteme,
reaktive Systeme)
Determiniertheit. Bei gleichen Eingabedaten gibt ein Algorithmus das gleiche Ergebnis aus. (randomisierte Algorithmen, nicht-deterministische Algorithmen)
Determinismus. Der nächste anzuwendende Schritt im Verfahren ist stets eindeutig definiert. (randomisierte Algorithmen, nicht-deterministische Algorithmen)
Eigenschaften
(statische) Finitheit. Die Beschreibung des Algorithmus besitzt endliche Länge. (nichtuniforme Algorithmen)
(dynamische) Finitheit. Die bei Abarbeitung entstehenden Zwischenergebnisse sind endlich.
Terminiertheit. Algorithmen, die nach endlich vielen Schritten ein Resultat liefern, heißenterminierend. (Betriebssysteme,
reaktive Systeme)
Determiniertheit. Bei gleichen Eingabedaten gibt ein Algorithmus das gleiche Ergebnis aus. (randomisierte Algorithmen, nicht-deterministische Algorithmen) Determinismus. Der nächste anzuwendende Schritt im
Eigenschaften
(statische) Finitheit. Die Beschreibung des Algorithmus besitzt endliche Länge. (nichtuniforme Algorithmen)
(dynamische) Finitheit. Die bei Abarbeitung entstehenden Zwischenergebnisse sind endlich.
Terminiertheit. Algorithmen, die nach endlich vielen Schritten ein Resultat liefern, heißenterminierend. (Betriebssysteme,
reaktive Systeme)
Determiniertheit. Bei gleichen Eingabedaten gibt ein Algorithmus das gleiche Ergebnis aus. (randomisierte Algorithmen, nicht-deterministische Algorithmen)
Determinismus. Der nächste anzuwendende Schritt im Verfahren ist stets eindeutig definiert. (randomisierte Algorithmen, nicht-deterministische Algorithmen)
Eigenschaften
(statische) Finitheit. Die Beschreibung des Algorithmus besitzt endliche Länge. (nichtuniforme Algorithmen)
(dynamische) Finitheit. Die bei Abarbeitung entstehenden Zwischenergebnisse sind endlich.
Terminiertheit. Algorithmen, die nach endlich vielen Schritten ein Resultat liefern, heißenterminierend. (Betriebssysteme,
reaktive Systeme)
Determiniertheit. Bei gleichen Eingabedaten gibt ein Algorithmus das gleiche Ergebnis aus. (randomisierte Algorithmen, nicht-deterministische Algorithmen) Determinismus. Der nächste anzuwendende Schritt im
Programm
EinProgrammist dieFormulierungeines Algorithmus in einer Programmiersprache.
Die Formulierung gestattet (hoffentlich) eine maschinelle Ausführung.
ñ EinProgrammsystemberechnet i.a. nicht nur eine Funktion, sondernimmer wiederFunktionen in Interaktion mit
Benutzerinnen und/oder der Umgebung.
ñ Es gibt viele Programmmiersprachen:Java,C,Prolog, Fortran,TeX,PostScript, . . .
Programm
Ein Programm istgut, wenn
ñ die Programmiererinin ihr algorithmische Ideennatürlich beschreiben kann, insbesondere später noch versteht was das Programm tut (oder nicht tut);
ñ ein Computerdas Programm leicht verstehen undeffizient ausführen kann.