• Keine Ergebnisse gefunden

LOOP-Programme / LOOP-Berechenbarkeit

N/A
N/A
Protected

Academic year: 2021

Aktie "LOOP-Programme / LOOP-Berechenbarkeit"

Copied!
5
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Formale Sprachen und Komplexit¨ at

Sommersemester 2019

Zentral¨ ubung 27.06.2019:

LOOP-, WHILE-, GOTO-Programme

Prof. Dr. David Sabel

LFE Theoretische Informatik

Letzte ¨Anderung der Folien: 27. Juni 2019

LOOP-Programme / LOOP-Berechenbarkeit

Wiederholung:

LOOP-Programme Syntax (informell)

x

i

:= x

j

± c P

1

; P

2

LOOP x

i

DO P END LOOP-Berechenbarkeit

Totale Funktion f : N

k

→ N ist LOOP-berechenbar, wenn es ein LOOP-Programm gibt, dass ausgef¨ uhrt mit Variablenbelegung ρ = {x

1

7→ n

1

, . . . , x

k

7→ n

k

} mit einer Variablenbelegung ρ

0

endet, sodass ρ

0

(x

0

) = f (n

1

, . . . , n

k

)

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 2/17 LOOP Programme WHILE & GOTO

LOOP-Programme erstellen

Aufgabe

Zeige, dass die folgenden Funktionen LOOP-berechenbar sind.

Gebe dabei das bezeugende LOOP-Programm vollst¨ andig und ohne Abk¨ urzungen an.

a) +(n

1

, n

2

) = n

1

+ n

2

b) −(n

1

, n

2

) = max{0, n

1

− n

2

} c) ∗(n

1

, n

2

) = n

1

∗ n

2

d) b (n

1

, n

2

) = n

n12

e) = (n

1

, n

2

) =

1, wenn n

1

= n

2

0, sonst

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 3/17 LOOP Programme WHILE & GOTO

LOOP-Programme erstellen

a) +(n

1

, n

2

) = n

1

+ n

2

Beachte: LOOP-Programm empf¨ angt n

1

uber ¨ x

1

, n

2

¨ uber x

2

und muss n

1

+ n

2

in x

0

zur Verf¨ ugung stellen.

Idee: Addiere x

2

mal 1 zum Wert von x

1

. LOOP-Programm:

x

0

:= x

1

+ 0;

LOOP x

2

DO x

0

:= x

0

+ 1 END

Dieses Programm berechnet +, da

({x17→n1, x27→n2}, x0:=x1+ 0;LOOPx2DOx0:=x0+ 1END)

−−−→

LOOP

({x17→n1, x27→n2, x07→n1},LOOPx2DOx0:=x0+ 1END)

−−−→

LOOP

({x17→n1, x27→n2, x07→n1}, x0:=x0+ 1;. . .;x0:=x0+ 1

| {z }

n2-mal

)

−−−→

LOOP

n2({x07→n1+ 1 +. . .+ 1

| {z }

n2-mal

}, ε) = ({x07→n1+n2}, ε)

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 4/17 LOOP Programme WHILE & GOTO

(2)

LOOP-Programme erstellen

b) −(n

1

, n

2

) = max{0, n

1

− n

2

}

Idee: Subtrahiere x

2

mal 1 vom Wert von x

1

. LOOP-Programm:

x

0

:= x

1

+ 0;

LOOP x

2

DO

x

0

:= x

0

− 1//liefert 0 wenn x

0

schon 0 END

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 5/17 LOOP Programme WHILE & GOTO

LOOP-Programme erstellen

c) ∗(n

1

, n

2

) = n

1

∗ n

2

Idee: Addiere x

2

mal x

1

zur 0.

LOOP-Programm (optimiert):

LOOP x

2

DO // x

2

-mal x

1

addieren LOOP x

1

DO// x

1

-mal 1 addieren

x

0

:= x

0

+ 1 END

END

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 6/17 LOOP Programme WHILE & GOTO

LOOP-Programme erstellen

d) b (n

1

, n

2

) = n

n12

Idee: Multipliziere x

2

mal x

1

zur 1, d.h. 1 ·x

1

· · · x

1

| {z }

x2-mal

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 7/17 LOOP Programme WHILE & GOTO

LOOP-Programme erstellen

e) = (n

1

, n

2

) =

1, wenn n

1

= n

2

0, sonst

Idee: Berechne −(n

1

, n

2

) und −(n

2

, n

1

) und pr¨ ufe, dass beides mal 0 raus kommt.

LOOP-Programm:

x

0

:= x

0

+ 1;

x

3

:= x

1

+ 0;

x

4

:= x

2

+ 0;

LOOP x

2

DO x

3

:= x

3

− 1 END;

LOOP x

1

DO x

4

:= x

4

− 1 END;

LOOP x

3

DO x

0

:= x

5

+ 0 END;

LOOP x

4

DO x

0

:= x

5

+ 0 END

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 8/17 LOOP Programme WHILE & GOTO

(3)

LOOP-Programme

Aufgabe

Zeige, dass die Funktion prime(x) =

1, wenn x Primzahl 0, wenn x keine Primzahl LOOP-berechenbar ist. Sie d¨ urfen die Abk¨ urzungen

x

i

:= c f¨ ur das Programm, das x

i

den Konstantenwert c zuweist

x

i

:= x

j

∗ x

k

f¨ ur das Programm, das x

i

das Produkt der Werte von x

j

und x

k

zuweist

x

i

:= x

j

== x

k

f¨ ur das Programm,das x

i

den Wert 0 oder 1 zuweist, jenachdem ob die Werte von x

j

und x

k

verschieden oder gleich sind.

verwenden.

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 9/17 LOOP Programme WHILE & GOTO

Ideen zum Programm f¨ ur prime

F¨ ur x

1

> 2, teste, ob es x

3

, x

4

gibt mit x

3

∗ x

4

= x

1

und x

3

, x

4

> 1

F¨ alle x

1

≤ 2 werden extra behandelt Obere Grenze f¨ ur x

3

, x

4

ist eigentlich d √

x

1

e Wir nehmen zuviel: x

1

, funktioniert immer noch

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 10/17 LOOP Programme WHILE & GOTO

Programm, dass prime(x 1 ) berechnet

LOOP-Programm:

x

0

:= 0;

x

2

:= x

1

− 1;

LOOP x

2

DO x

0

:= 1 END; // setzt x

0

auf 1, wenn x

1

> 1 x

3

:= 2;

LOOP x

1

DO x

4

:= 2;

LOOP x

1

DO x

5

:= x

3

∗ x

4

; x

6

:= x

1

== x

5

;

LOOP x

6

DO x

0

:= 0 END; // Produkt gefunden x

4

:= x

4

+ 1

END;

x

3

:= x

3

+ 1 END

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 11/17 LOOP Programme WHILE & GOTO

WHILE-Programme / GOTO-Programme

Wiederholung:

WHILE-Programme, Syntax informell x

i

:= x

j

± c

P

1

; P

2

LOOP x

i

DO P END WHILE x

i

6= 0 DO P END GOTO-Programme, Syntax informell Programm M

1

: A

1

; . . . ; M

n

: A

n

mit A

i

x

i

:= x

j

± c GOTO M

j

IF x

i

= 0 THEN GOTO M

j

HALT

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 12/17 LOOP Programme WHILE & GOTO

(4)

Einfache Programme

Aufgabe

Zeigen, dass die folgenden Funktionen WHILE- und

GOTO-berechenbar sind, indem Sie sowohl ein WHILE- als auch ein GOTO-Programm angeben, welche die Berechenbarkeit bezeugen.

a) f(n

1

, n

2

) = n

1

+ n

2

b) f(n

1

, n

2

) = n

1

∗ n

2

c) f(n

1

, n

2

) =

n

1

− n

2

, wenn n

1

≥ n

2

undefiniert, sonst

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 13/17 LOOP Programme WHILE & GOTO

Einfache Programme

a) f (n

1

, n

2

) = n

1

+ n

2

WHILE-Programm:

x

0

:= x

1

+ 0;

x

3

:= x

2

+ 0;

WHILE x

3

6= 0 DO x

0

:= x

0

+ 1;

x

3

:= x

3

− 1 END

GOTO-Programm:

M

1

: x

0

:= x

1

+ 0;

M

2

: x

3

:= x

2

+ 0;

M

3

: IF x

3

= 0 THEN GOTO M

7

; M

4

: x

0

:= x

0

+ 1;

M

5

: x

3

:= x

3

− 1;

M

6

: GOTO M

3

; M

7

: HALT

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 14/17 LOOP Programme WHILE & GOTO

Einfache Programme

b) f (n

1

, n

2

) = n

1

∗ n

2

WHILE-Programm:

x

0

:= x

0

+ 0;

x

3

:= x

2

+ 0;

WHILE x

3

6= 0 DO x

4

:= x

1

+ 0 : WHILE x

4

6= 0 DO

x

0

:= x

0

+ 1;

x

4

:= x

4

− 1;

END

x

3

:= x

3

− 1;

END

GOTO-Programm:

M

1

: x

0

:= x

0

+ 0;

M

2

: x

3

:= x

2

+ 0;

// Aeussere Berechnung fuer * M

3

: IF x

3

= 0 THEN GOTO M

11

; M

4

: GOTO M

7

;

M

5

: x

3

:= x

3

− 1;

M

6

: GOTO M

3

;

// Innere Berechnung fuer + M

7

: x

4

:= x

1

;

M

8

: IF x

4

= 0 THEN GOTO M

5

; M

9

: x

0

:= x

0

+ 1;

M

10

: x

4

:= x

4

− 1;

M

11

: GOTO M

8

; M

12

: HALT

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 15/17 LOOP Programme WHILE & GOTO

Einfache Programme

c) f(n

1

, n

2

) =

n

1

− n

2

, wenn n

1

≥ n

2

undefiniert, sonst WHILE-Programm:

x

0

:= x

1

+ 0;

x

3

:= x

2

+ 0;

WHILE x

3

6= 0 DO

x

4

:= x

5

+ 1; //x

4

:= 1

LOOP x

0

DO x

4

:= x

5

+ 0 END; //IF x

0

6= 0 THEN x

4

:= 0 WHILE x

4

6= 0 DO x

4

:= x

4

+ 0 END;

x

0

:= x

0

− 1;

x

3

:= x

3

− 1

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 16/17 LOOP Programme WHILE & GOTO

(5)

Einfache Programme

c) f (n

1

, n

2

) =

n

1

− n

2

, wenn n

1

≥ n

2

undefiniert, sonst GOTO-Programm:

M

1

: x

0

:= x

1

+ 0;

M

2

: x

3

:= x

2

+ 0;

M

3

: IF x

3

= 0 THEN GOTO M

8

; M

4

: IF x

0

= 0 THEN GOTO M

9

; M

5

: x

0

:= x

0

− 1;

M

6

: x

3

:= x

3

− 1;

M

7

: GOTO M

3

; M

8

: HALT;

M

9

: GOTO M

9

TCS | Zentral¨ubung 27.06.2019 | SoSe 2019 17/17 LOOP Programme WHILE & GOTO

Referenzen

ÄHNLICHE DOKUMENTE

Wir sagen, dass eine Menge M (algorithmisch) entscheidbar (oder rekursiv) ist, wenn die zugeh¨ orige charakteristische Funktion ϕ M Turing -berechenbar ist. Anderenfalls heißt

• Es gibt totale und (intuitiv) berechenbare Funktionen, die nicht LOOP- berechenbar sind.... Jede WHILE-berechenbare Funktion

• Es gibt totale und (intuitiv) berechenbare Funktionen, die nicht LOOP- berechenbar sind.... Jede WHILE-berechenbare Funktion

In other words, our proposal is to complement the third wave of AI ethics with a stakeholder engagement approach, according to which, whenever conflicts arise between dif-

WHILE ist Turing-m¨ achtig Die Ackermann Funktion.. Die Programmiersprache LOOP.. ¨ Andert sich der Wert von x i im Inneren von P, so hat dies keinen Einfluss auf die Anzahl

Wir betrachten eine einfache Programmiersprache namens LOOP, deren Programme aus den folgenden syntaktischen Komponenten aufgebaut sind:.. Wir betrachten eine

I Das Symbol unterm Kopf erhalten wir durch den Befehl UntermKopf := BandAbKopf MOD 10. BuK/WS 2017 VL-11: LOOP und WHILE Programme

Wir betrachten eine einfache Programmiersprache namens LOOP, deren Programme aus den folgenden syntaktischen Komponenten aufgebaut sind:.. I Variablen: x 1 x 2