Wiederholung
Download
1 / 16

Wiederholung - PowerPoint PPT Presentation


  • 62 Views
  • Uploaded on

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 :

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Wiederholung' - quant


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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
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, ...


Ein algorithmus
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?


Euklidischer algorithmus
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.


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

Eigenschaften von Algorithmen


Darstellung von algorithmen

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


Berechenbarkeit
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


Turing maschinen ein abstrakes maschinenmodell
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


Berechnungen einer tm

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


Beispiel

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)


While berechenbarkeit
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


Beispiel1
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.


Goto berechenbarkeit
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


Ein goto programm f r die multiplikation
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


Quivalenz der pr zisierungen von berechenbarkeit
Ä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?


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

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!!