16
G.Heyer Digitale Informationsverarbeitung 1 Wiederholu ng Was ist Informatik? Wissenschaft, Technik und Anwendung der maschinellen Verarbeitung und Übermittlung von Informationen Grundlage der maschinellen Verarbeitung von Informationen sind Algorithmen.

Wiederholung

  • Upload
    quant

  • View
    23

  • Download
    2

Embed Size (px)

DESCRIPTION

Wiederholung. Was ist Informatik? Wissenschaft, Technik und Anwendung der maschinellen Verarbeitung und Übermittlung von Informationen Grundlage der maschinellen Verarbeitung von Informationen sind Algorithmen. 2. Algorithmenbegriff und Berechenbarkeit. Algorithmus : - PowerPoint PPT Presentation

Citation preview

G.Heyer Digitale Informationsverarbeitung1

Wiederholung

Was ist Informatik?

Wissenschaft, Technik und Anwendung der maschinellen Verarbeitung und Übermittlung von Informationen

Grundlage der maschinellen Verarbeitung von Informationen sind Algorithmen.

G.Heyer Digitale Informationsverarbeitung2

2. Algorithmenbegriff und Berechenbarkeit

Algorithmus:

Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen Ausgabewerte ermittelt werden.

Berechnungsvorschrift muß präzise und endlich sein, löst Problemenklasse

Elementaroperationen müssen von Maschine durchgeführt werden können

Abfolge der Schritte liegt fest, bzw. Wahlmöglichkeiten sind festgelegt

Beispiele:

Algorithmen zu Addition, Subtraktion, Division, Multiplikation, ...euklidischer Algorithmus, ...

Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen, ...

G.Heyer Digitale Informationsverarbeitung3

Ein Algorithmus?

Reifenauswechseln

1. Löse die Radmuttern.2. Hebe den Wagen an.3. Schraube die Radmuttern ab.4. Tausche das Rad gegen ein anderes Rad aus.5. Schraube die Radmuttern an.6. Setze den Wagen ab.7. Ziehe die Radmuttern fest.

Jeder Schritt definiert?Festgelegte Folge von Ausführungsschritten?Gibt es Elementaroperationen und wer führt sie aus?

G.Heyer Digitale Informationsverarbeitung4

Euklidischer Algorithmus

Gesucht: größter gemeinsamer Teiler positiver ganzer Zahlen n, m

1. Wenn m kleiner als n, vertausche Werte von m und n.2. Dividiere m durch n, nenne den Rest r.3. Wenn r gleich 0 ist, so gib n aus und terminiere.4. Wenn r nicht gleich 0 ist, so weise m den Wert von n zu und n den von r.5. Gehe zu 2.

Ein Nicht-AlgorithmusWir machen Rührei1. Erhitze Öl in der Pfanne bis sich Bläschen bilden.2. Schlage die Eier in die Pfanne.3. Füge eine Prise Salz hinzu und rühre gut durch.4. Lasse alles brutzeln bis die Eier die richtige Konsistenz haben.

Jeder Schritt definiert?Festgelegte Folge von Ausführungsschritten?

Gibt es Elementaroperationen und wer führt sie aus?

G.Heyer Digitale Informationsverarbeitung5

Eigenschaften von Algorithmen

• Abstraktion: Lösung einer Klasse von Problemen• Finitheit: Beschreibung endlich, jeweils nur endlich viel Speicherplatz• Terminierung: wenn Algorithmen bei jeder Eingabe nach endlicher Zeit

halten und ein Ergebnis liefern, so heißen sie terminierend• Determinismus: Algorithmus heißt deterministisch, wenn zu jeder Zeit der

Ausführung nur eine Fortsetzungsmöglichkeit besteht• Determiniertheit: Algorithmus heißt determiniert, wenn bei gleichen

Eingabewerten stets das gleiche Ergebnis geliefert wird

Deterministische Algorithmen immer determiniert, aber nicht umgekehrt!

Algorithmen sollten verständlich und effizient sein

G.Heyer Digitale Informationsverarbeitung6

Darstellung von Algorithmen

• natürlichsprachlichfür die Kommunikation von Ideen oft ausreichend, muß präzisierbar sein

• Stilisierte Prosa und Pseudo-CodeMischung von Prosa und Konstrukten aus Programmiersprachen

• Graphische Darstellungen, Ablaufpläne, Struktogrammemachen Kontrollfluß sichtbar

• Formulierung in ProgrammiersprachePräzision, Ausführbarkeit auf Maschine garantiert

G.Heyer Digitale Informationsverarbeitung7

BerechenbarkeitWann ist eine Funktion (über den natürlichen Zahlen) berechenbar?

Intuitiv: wenn es einen Algorithmus gibt, der sie berechnet

Was heißt, eine Elementaroperation ist maschinell ausführbar?Was verstehen wir unter einer Rechenmaschine?

verschiedene Ansätze zur Präzisierung des Berechenbarkeitsbegriffs:

• Turing-Berechenbarkeit • While-Berechenbarkeit • Goto-Berechenbarkeit

==>

All diese Präzisierungen (und weitere) beschreiben exakt dieselbe Klasse von Funktionen

Churchsche These: die so erfaßte Klasse von Funktionen ist identisch mit der Klasse der intuitiv berechenbaren Funktionen

G.Heyer Digitale Informationsverarbeitung8

Turing-Maschinen: ein abstrakes Maschinenmodell

Eine Turing-Maschine M = <Z, , ,, z0, •, E> besteht aus

Z: endliche Zustandsmenge: Eingabealphabet:Arbeitsalphabet, enthält Überführungsfunktion Z ---> Z {L, R, N}z0: Startzustand •: Blanksymbol E: Menge der Endzustände in Z

endlicheKontrolleinheit

Schreib-Lesekopf

• • ••A B 0 C 1 1 A B 0

G.Heyer Digitale Informationsverarbeitung9

Berechnungen einer TM

Eingabe steht auf Band, pro Feld ein SymbolSL-Kopf auf dem am weitesten links stehenden Eingabesymbol S Zustand ist AnfangszustandIn Abhängigkeit von Zustand und gelesenem Symbol gibt an

• Nachfolgezustand, • auf Band geschriebenes neues Symbol, • Bewegungsrichtung (Links, Rechts, Nicht bewegen)

Maschine führt so lange Aktionen aus, bis Zustand aus E erreicht wird Ausgabe steht nun auf Band

Eine Funktion heißt Turing-berechenbar, wenn es eine Turing-Maschine gibt, die sie (im genannten Sinn) berechnet.

G.Heyer Digitale Informationsverarbeitung10

Beispiel

(z0, •) -> (z3, 1, N)(z0, 0) -> (z0, •, R)(z0, 1) -> (z1, •, R)

Maschine liefert 1 gdw auf Band eine Folge 0...01...1 steht. Anzahl jeweils beliebig (auch null)

Eingabealphabet: {0, 1}, Arbeitsalphabet: {0, 1, •}Z = {z0, z1, z2, z3}, E = {z3}Überführungsfunktion [(x, y) -> (z, v, w) statt (x,y) = (z, v, w)]:

(z2, •) -> (z2, •, R)(z2, 0) -> (z2, •, R)(z2, 1) -> (z2, •, R)

(z1, •) -> (z3, 1, N)(z1, 0) -> (z2, •, R)(z1, 1) -> (z1, •, R)

G.Heyer Digitale Informationsverarbeitung11

While-Berechenbarkeit

Ein While-Programm besteht aus folgenden Komponenten:

Variablen: x0, x1, x2, ...Konstanten: 0, 1, 2, ...Trennsymbole: ; :=

Operationszeichen: + -Schlüsselwörter: WHILE DO END

1. Eine Wertzuweisung der Form xi := xj + c oder xi := xj - c (c Konstante) ist ein While-Programm2. Falls P1 und P2 While-Programme sind, so auch P1;P23. Falls P While-Programm ist, so ist auch WHILE xi ≠ 0 DO P END ein While-Programm4. Nur die durch 1-3 beschiebenen Konstrukte sind While-Programme

Semantik: Wertzuweisung: xi erhält Wert von xj ± cSequenz: erst wird P1 ausgeführt, dann P2Schleife: P wird so lange ausgeführt, bis xi = 0 gilt. Test vor P-AusführungEingabewerte sind Werte der Variablen x1, ..., xn, alle anderen zunächst 0

Syntax von While-Programmen, induktive Definition:

G.Heyer Digitale Informationsverarbeitung12

Beispiel

WHILE x1 ≠ 0 DO x3 := x2; WHILE x3 ≠ 0 DO x0 := x0 + 1; x3 := x3 - 1 END; x1 := x1 - 1END

Funktion ist While-berechenbar: es gibt While-Programm, das sie berechnet.

andere Konstrukte können als Abkürzung eingeführt werden, etwa:

IF x ≠ 0 THEN P1 ELSE P2 END statt

Multiplikation: Eingabe: x1, x2, Ausgabe: x0

x' := 1; x'' := x;WHILE x'' ≠ 0 DO P1; x'' := 0; x' := 0 END;WHILE x' ≠ 0 DO P2; x' := 0 END

G.Heyer Digitale Informationsverarbeitung13

Goto-Berechenbarkeit

Goto-Programme: Sequenzen von Anweisungen mit Marken: M1: A1; M2: A2; ...; Mk: Ak(Marken, zu denen nie gesprungen wird, dürfen entfallen)

Anweisungen:Wertzuweisungen:unbedingter Sprung:bedingter Sprung:Stopanweisung:

Ai xi := xj ± cGOTO Mi (Ai wird als nächstes ausgeführt)IF xi = c THEN GOTO MiHALT

While-Schleifen lassen sich mit Goto's simulieren:WHILE xi ≠ 0 DO P END wird

IF xi = 0 THEN GOTO M2;P;GOTO M1;...

M1:

M2:

Funktion Goto-berechenbar: es gibt entsprechendes Goto-Programm

G.Heyer Digitale Informationsverarbeitung14

Ein Goto-Programm für die Multiplikation

IF x1 = 0 THEN GOTO M4;x3 := x2;IF x3 = 0 THEN GOTO M3;x0 := x0 + 1;x3 := x3 - 1;GOTO M2;x1 := x1 - 1;GOTO M1;HALT

M1:

M2:

M3:

M4:

Annahmen: Eingabewerte x1 und x2, Ausgabe x0, x0 mit 0 vorbelegt

Programme mit GOTO schwer verstehbar und kaum verifizierbarKonstrukt sollte deshalb beim Programmieren nicht verwendet werden

G.Heyer Digitale Informationsverarbeitung15

Äquivalenz der Präzisierungen von Berechenbarkeit

Theorem: Die Begriffe Turing-berechenbar, While-berechenbar und Goto-berechenbar sind äquivalent.

Deshalb geht man davon aus, daß der intuitive Berechenbarkeitsbegriffin diesen Präzisierungen adäquat erfaßt wurde.

Frage: gibt es Funktionen (über den natürlichen Zahlen), die

• mathematisch präzise beschrieben werden können, aber • nicht berechenbar sind?

G.Heyer Digitale Informationsverarbeitung16

Nicht berechenbare Funktionen: ein Beispiel

Jede Turing-Maschine läßt sich eindeutig als natürliche Zahl codieren.Unter dem speziellen Halteproblem versteht man folgendes Problem:

• gegeben: natürliche Zahl m • gefragt: terminiert Turing-Maschine mit Code m bei Eingabe m?

Problem repräsentierbar als Funktion f: Nat --> {0, 1}, f(m) = 1 gdw TM mit Code m hält bei Eingabe m, f(m) = 0 sonst

<=> M bei Eingabe n liefert 0 <=> TM mit Code n hält nicht bei Eingabe n <=> M' hält nicht bei Eingabe n

Widerspruch!!

Funktion f ist nicht berechenbar!!

Beweisskizze: Angenommen es gäbe TM M, die f berechnet. Konstruiere daraus TM

M' wie folgt: M' führt erst M aus, danach wird getestet, ob das Band den Wert 0 hat. Falls ja terminiert M', falls nein geht M' in Endlosschleife. Sei n der Code von M'. Es gilt:

M' hält bei Eingabe n