1 / 16

Wiederholung

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 :

quant
Télécharger la présentation

Wiederholung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wiederholung Was ist Informatik? Wissenschaft, Technik und Anwendung der maschinellen Verarbeitung und Übermittlung von Informationen Grundlage der maschinellen Verarbeitung von Informationen sind Algorithmen.

  2. 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, ...

  3. 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?

  4. 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. Jeder Schritt definiert? Festgelegte Folge von Ausführungsschritten? Gibt es Elementaroperationen und wer führt sie aus? Ein Nicht-Algorithmus Wir machen Rührei 1. 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.

  5. 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 Eigenschaften von Algorithmen

  6. natürlichsprachlich für die Kommunikation von Ideen oft ausreichend, muß präzisierbar sein Stilisierte Prosa und Pseudo-Code Mischung von Prosa und Konstrukten aus Programmiersprachen Graphische Darstellungen, Ablaufpläne, Struktogramme machen Kontrollfluß sichtbar Formulierung in Programmiersprache Präzision, Ausführbarkeit auf Maschine garantiert Darstellung von Algorithmen

  7. Berechenbarkeit Wann 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

  8. 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  • A B 1 1 B 0 • • 0 C A • Schreib-Lesekopf endliche Kontrolleinheit

  9. Eingabe steht auf Band, pro Feld ein Symbol SL-Kopf auf dem am weitesten links stehenden Eingabesymbol S Zustand ist Anfangszustand In 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. Berechnungen einer TM

  10. 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)]: Beispiel (z0, •) -> (z3, 1, N) (z0, 0) -> (z0, •, R) (z0, 1) -> (z1, •, R) (z1, •) -> (z3, 1, N) (z1, 0) -> (z2, •, R) (z1, 1) -> (z1, •, R) (z2, •) -> (z2, •, R) (z2, 0) -> (z2, •, R) (z2, 1) -> (z2, •, R) Maschine liefert 1 gdw auf Band eine Folge 0...01...1 steht. Anzahl jeweils beliebig (auch null)

  11. 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 Syntax von While-Programmen, induktive Definition: 1. Eine Wertzuweisung der Form xi := xj + c oder xi := xj - c (c Konstante) ist ein While-Programm 2. Falls P1 und P2 While-Programme sind, so auch P1;P2 3. Falls P While-Programm ist, so ist auch WHILE xi ≠ 0 DO P END ein While-Programm 4. Nur die durch 1-3 beschiebenen Konstrukte sind While-Programme Semantik: Wertzuweisung: xi erhält Wert von xj ± c Sequenz: erst wird P1 ausgeführt, dann P2 Schleife: P wird so lange ausgeführt, bis xi = 0 gilt. Test vor P-Ausführung Eingabewerte sind Werte der Variablen x1, ..., xn, alle anderen zunächst 0

  12. Beispiel Multiplikation: Eingabe: x1, x2, Ausgabe: x0 WHILE x1 ≠ 0 DO x3 := x2; WHILE x3 ≠ 0 DO x0 := x0 + 1; x3 := x3 - 1 END; x1 := x1 - 1 END andere Konstrukte können als Abkürzung eingeführt werden, etwa: IF x ≠ 0 THEN P1 ELSE P2 END statt x' := 1; x'' := x; WHILE x'' ≠ 0 DO P1; x'' := 0; x' := 0 END; WHILE x' ≠ 0 DO P2; x' := 0 END Funktion ist While-berechenbar: es gibt While-Programm, das sie berechnet.

  13. 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 ± c GOTO Mi (Ai wird als nächstes ausgeführt) IF xi = c THEN GOTO Mi HALT While-Schleifen lassen sich mit Goto's simulieren: WHILE xi ≠ 0 DO P END wird M1: M2: IF xi = 0 THEN GOTO M2; P; GOTO M1; ... Funktion Goto-berechenbar: es gibt entsprechendes Goto-Programm

  14. Ein Goto-Programm für die Multiplikation Annahmen: Eingabewerte x1 und x2, Ausgabe x0, x0 mit 0 vorbelegt M1: M2: M3: M4: 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 Programme mit GOTO schwer verstehbar und kaum verifizierbar Konstrukt sollte deshalb beim Programmieren nicht verwendet werden

  15. Ä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 Berechenbarkeitsbegriff in 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?

  16. 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  Nicht berechenbare Funktionen: ein Beispiel 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 <=> M bei Eingabe n liefert 0 <=> TM mit Code n hält nicht bei Eingabe n <=> M' hält nicht bei Eingabe n Widerspruch!!

More Related