• Keine Ergebnisse gefunden

VL-11: Primitive Rekursion (Berechenbarkeit und Komplexit¨at, WS 2019) Gerhard Woeginger

N/A
N/A
Protected

Academic year: 2022

Aktie "VL-11: Primitive Rekursion (Berechenbarkeit und Komplexit¨at, WS 2019) Gerhard Woeginger"

Copied!
48
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

VL-11: Primitive Rekursion

(Berechenbarkeit und Komplexit¨ at, WS 2019) Gerhard Woeginger

WS 2019, RWTH

(2)

Organisatorisches

N¨achste Vorlesungen:

Mittwoch, Dezember 04, 10:30–12:00, Aula

Freitag, Dezember 06:Keine Vorlesung (Tag der Informatik) Mittwoch, Dezember 11, 10:30–12:00, Aula

Webseite:

https://algo.rwth-aachen.de/Lehre/WS1920/BuK/BuK.py

(3)

Wiederholung

(4)

Wdh.: LOOP versus WHILE

Die Ackermann FunktionA:N2→Nist folgendermassen definiert:

A(0,n) = n+1 f¨urn≥0

A(m+1,0) = A(m,1) f¨urm≥0 A(m+1,n+1) = A(m,A(m+1,n)) f¨urm,n≥0 Satz

Die Ackermann Funktion ist nicht LOOP-berechenbar.

Da die Ackermann Funktion (durch eine TM) berechenbar ist, folgt:

Satz

Die Menge der LOOP-berechenbaren Funktionen

bildet eineechte Teilmengeder berechenbaren Funktionen.

(5)

Wdh.: Die Berechenbarkeitslandschaft

Rekursiv aufz¨ahlbare

Probleme

H

H D

Probleme mit rekursiv aufz¨ahlbarem

Komplement H H

D rekursive

Probleme

Nicht rekursiv aufz¨ahlbare Probleme mit

nicht rekursiv aufz¨ahlbarem Komplement Htot PCP

Dioph

A(·,·) LOOP berechenbar

(6)

Douglas Hofstadter: “G¨ odel, Escher, Bach” (1979)

This book looks at the surprising points of contact between the music of Bach, the artwork of Escher, and the mathematics of G¨odel. It also looks at the prospects for computers and artificial intelligence for mimicking human thought.

BlooPis a non-Turing-complete programming language in Hofstadter’s book whose flow structure is a bounded loop. All programs in the language must terminate, and this language can only expressprimitive recursive functions.

(7)

Vorlesung VL-11

Primitiv rekursive Funktionen

Primitiv rekursive Funktionen Aquivalenz zu LOOP¨

µ-rekursive Funktionen Aquivalenz zu WHILE¨

(8)

Primitiv rekursive Funktionen

Die primitiv rekursiven Funktionen bilden eine Unterfamilie der FunktionenNk →Nmitk ≥1.

Sie sind induktiv definiert, und werden durch zweiOperationen aus den sogenanntenBasisfunktionen zusammengebaut.

(9)

Die Basisfunktionen

Die folgenden drei Funktionsmengen bilden die Basisfunktionen unter den primitiv rekursiven Funktionen:

Allekonstanten Funktionensind primitiv rekursiv.

Alle identischen Abbildungen (Projektionenauf eine der Komponenten) sind primitiv rekursiv.

Die Nachfolgerfunktionsucc(n) =n+1ist primitiv rekursiv.

Anmerkung: Die ProjektionNk →Nauf diep-te vonk Komponenten wird manchmal mitπk,p bezeichnet.

(10)

Die beiden Operationen

JedeKompositionvon primitiv rekursiven Funktionen ist primitiv rekursiv.

Wenn die Funktiong:Nk →Nprimitiv rekursiv ist und

wenn die k Funktionen h1, . . . ,hk :N` →Nprimitiv rekursiv sind, so ist auch die folgende Funktion f :N`→Nprimitiv rekursiv:

f(x1, . . . ,x`) = g(h1(x1, . . . ,x`), . . . ,hk(x1, . . . ,x`))

Jede Funktion, die durchprimitive Rekursionaus primitiv rekursiven Funktionen entsteht ist primitiv rekursiv.

Wenn die beiden Funktionen g:Nk →Nundh:Nk+2→N primitiv rekursiv sind, so ist auch f :Nk+1→Nprimitiv rekursiv:

f(0,x1, . . . ,xk) = g(x1, . . . ,xk)

f(n+1,x1, . . . ,xk) = h(n, f(n,x1, . . . ,xk), x1, . . . ,xk)

(11)

Intuition zu primitiv rekursiven Funktionen

Beobachtung:Jede primitiv rekursive Funktion ist berechenbar und total.

Klar f¨ur Basisfunktionen. Und die Komposition von berechenbaren und totalen Funktionen ist ebenfalls berechenbar und total.

Angenommen, die beiden Funktioneng:Nk →Nundh:Nk+2→N sind berechenbar. Dann berechnen wir der Reihe nach:

y0 := g(x1, . . . ,xk) = f(0,x1, . . . ,xk)

y1 := h(0,y0, x1, . . . ,xk) = f(1,x1, . . . ,xk) y2 := h(1,y1, x1, . . . ,xk) = f(2,x1, . . . ,xk) y3 := h(2,y2, x1, . . . ,xk) = f(3,x1, . . . ,xk)

... ...

yn := h(n−1,yn−1, x1, . . . ,xk) = f(n,x1, . . . ,xk) Damit haben wir dann auchf(n,x1, . . . ,xk) =ynberechnet.

(12)

Primitiv rekursive Beispiele

(13)

Beispiel: Addition

Die Additionsfunktionadd:N2→Nmitadd(x,y) =x+y ist primitiv rekursiv.

add(0,x) = x

add(n+1,x) = succ(add(n,x))

Genauer:Die Additionsfunktion add:N2→Nentsteht durch primitive Rekursion aus der Projektiong(x) =π1,1(x) =x und aus der primitiv rekursiven Funktionh(a,b,c) =succ(π3,2(a,b,c)):

add(0,x) = g(x)

add(n+1,x) = h(n,add(n,x),x)

(14)

Beispiel: Multiplikation

Die Multiplikationsfunktionmult:N2→Nmitmult(x,y) =x·y ist primitiv rekursiv.

mult(0,x) = 0

mult(n+1,x) = add(mult(n,x),x)

Genauer:Die Multiplikationsfunktion mult:N2→Nentsteht durch primitive Rekursion aus der konstanten Abbildungg(x) =0und aus der primitiv rekursiven Funktionh(a,b,c) =add(π3,2(a,b,c), π3,3(a,b,c)):

mult(0,x) = g(x)

mult(n+1,x) = h(n,mult(n,x),x)

(15)

Beispiel: Vorg¨ anger

Die Vorg¨angerfunktionpred:N→Nmitpred(x) =max{x−1,0} ist primitiv rekursiv.

pred(0) = 0 pred(n+1) = n

Genauer:Die Vorg¨angerfunktionpred:N→Nentsteht durch primitive Rekursion aus der konstanten Abbildungg() =0und aus der Projektion h(a,b) =π2,1(a,b) =a:

pred(0) = g()

pred(n+1) = h(n,pred(n))

(16)

Beispiel: Subtraktion

Die (modifizierte) Subtraktionsfunktionsub:N2→Nmit sub(x,y) =x−. y =max{x−y,0}ist primitiv rekursiv.

Da die zugrunde liegende primitive Rekursion ¨uber die erste Komponente l¨auft, definieren wir zun¨achst die HilfsfunktionsubAux(y,x) =x−. y.

subAux(0,x) = x

subAux(n+1,x) = pred(subAux(n,x))

Genauer:Die HilfsfunktionsubAux:N2→Nentsteht aus der Projektiong(x) =π1,1(x) =x und aus der primitiv rekursiven Funktionh(a,b,c) =pred(π3,2(a,b,c)):

subAux(0,x) = g(x)

subAux(n+1,x) = h(n,subAux(n,x),x)

Danach definieren wir sub(x,y) =subAux(π2,2(x,y), π2,1(x,y)).

(17)

Weitere primitiv rekursive Beispiele (1)

Notation: F¨ur ein logischesPr¨adikatverwenden wir die Schreibweise[Pr¨adikat], wobei

[Pr¨adikat] =0fallsPr¨adikatden Wahrheitswertfalschhat, und [Pr¨adikat] =1fallsPr¨adikatden Wahrheitswertwahr hat.

Ubung¨

Die folgenden Funktionen sind primitiv rekursiv:

Signum:f :N→ {0,1}mitf(x) = [x ≥1]

Gleichheit:f :N2→ {0,1} mitf(x,y) = [x=y]

Kleiner: f :N2→ {0,1}mitf(x,y) = [x <y] Gr¨osser:f :N2→ {0,1}mitf(x,y) = [x>y] Kleiner-gleich:f :N2→ {0,1} mitf(x,y) = [x≤y]

Gr¨osser-gleich:f :N2→ {0,1}mitf(x,y) = [x ≥y]

(18)

Weitere primitiv rekursive Beispiele (2)

Ubung¨

Die folgenden Funktionen sind primitiv rekursiv:

Maximum:f :N2→Nmitf(x,y) =max{x,y}

Minimum:f :N2→Nmitf(x,y) =min{x,y} Division:f :N2→Nmitf(x,y) =bx/yc Teilbarkeit: f :N2→ {0,1}mitf(x,y) = [x|y] Parit¨at:f :N→ {0,1}mitf(x) = [x gerade]

Parit¨at:f :N→ {0,1}mitf(x) = [x ungerade]

Primzahl:f :N→ {0,1}mitf(x) = [x prim]

(19)

Ein wichtiges Werkzeug:

Primitiv rekursive Bijektionen

(20)

Eine Bijektion (1)

Die Funktionbinom2:N→Nmit binom2(x) =

x 2

= 1

2x(x−1) = 0+1+2+· · ·+ (x−1)

ist primitiv rekursiv.

binom2(0) = 0

binom2(n+1) = add(n,binom2(n))

Die Funktionβ:N2→Nmit

β(x,y) =

x+y+1 2

+x ist primitiv rekursiv.

(21)

Eine Bijektion (2)

Beobachtung (und Hausaufgabe am 3. ¨Ubungsblatt) Die Funktionβ(x,y) = x+y+12

+x ist eine Bijektion zwischenN2undN.

x/y 0 1 2 3 4 5 6 · · ·

0 0 1 3 6 10 15 21 · · ·

1 2 4 7 11 16 22 29 · · ·

2 5 8 12 17 23 30 38 · · ·

3 9 13 18 24 31 39 48 · · ·

4 14 19 25 32 40 49 59 · · ·

5 20 26 33 41 50 60 71 · · ·

6 27 34 42 51 61 72 84 · · ·

7 35 43 52 62 73 85 98 · · ·

(22)

Die Umkehrfunktion der Bijektion (1)

Ubung¨

Beweisen Sie: F¨ur allex,y ∈Ngilt x≤β(x,y) und y≤β(x,y).

Als n¨achstes Ziel wollen wir nun f¨ur eine gegebene Zahlndie entsprechende (eindeutig festgelegte) Zahlx ∈Nin der Gleichung β(x,y) =nbestimmen.

Triviale M¨oglichkeit: Teste alle Paare(x,y)∈N2.

Kl¨ugere M¨oglichkeit: Teste alle Paare(x,y)∈ {0,1, . . . ,n}2.

(23)

Die Umkehrfunktion der Bijektion (2)

Die Funktion f :N3→ {0,1}mitf(x,y,n) = [β(x,y) =n]ist primitiv rekursiv.

Die Funktion g:N3→ {0,1} mit

g(x,k,n) = [∃y≤k :β(x,y) =n]ist primitiv rekursiv:

g(x,0,n) = f(x,0,n)

g(x,k,n) = [f(x,k,n) =1 ∨ g(x,k−1,n) =1]

Wir definierenmax∅=0. Die Funktionh:N3→Nmit h(m,k,n) =max{x≤m:∃y ≤k:β(x,y) =n} ist primitiv rekursiv:

h(0,k,n) = 0

h(m,k,n) = max{h(m−1,k,n), m·g(m,k,n)}

(24)

Die Umkehrfunktion der Bijektion (3)

Daraus folgt sofort:

Die Funktionγ:N→Nmitγ(n) =h(n,n,n)ist primitiv rekursiv Also:γ(n) =h(n,n,n)ist die gr¨osste Zahl x≤n, f¨ur die eine Zahl y ≤nexistiert, sodassβ(x,y) =ngilt.

F¨ur jedes n∈Ngibt es ein einziges Zahlenpaar(x,y)∈N2 mit β(x,y) =n. Die Funktionγ(n)gibt uns daher die (eindeutig bestimmte) Zahlx in dieser Gleichung an.

Analog: Es gibt eine primitiv rekursive Funktionδ(n), die die (eindeutig bestimmte) Zahly in der Gleichungβ(x,y) =nangibt.

Zusammenfassend:

Die Umkehrfunktionenγ undδder Bijektionβ sind primitiv rekursiv.

F¨ur allen∈Ngilt β(γ(n), δ(n)) =n.

(25)

Weitere Bijektionen

Aus der Bijektionβ:N2→Nkann man weitere Bijektionen zwischen Nk+1 undNbauen: Dieprimitiv rekursiveFunktion

β(n0, β(n1, β(n2, . . . , β(nk−1,nk). . .))

weist jedem(k+1)-Tupel(n0,n1, . . . ,nk)eine entsprechende Zahl inN zu, die wir im Folgenden mithn0,n1, . . . ,nkibezeichnen.

Mit Hilfe der beiden Funktionenγ(n)undδ(n)kann man dann weitere primitiv rekursiveFunktionen u0,u1, . . . ,uk :N→Nkonstruieren, sodass f¨ur allen∈Ndie folgende Beziehung gilt:

n = hu0(n), u1(n), . . . ,uk(n)i

(26)

Aquivalenz zu LOOP Programmen ¨

(27)

Aquivalenz zu LOOP Programmen ¨

Satz

Die Menge derprimitiv rekursivenFunktionen f¨allt

mit der Menge der LOOP-berechenbarenFunktionen zusammen.

(28)

Hinrichtung:

LOOP → Primitiv rekursiv

(29)

LOOP → Primitiv rekursiv: Hauptidee

Wir betrachten eine LOOP-berechenbare Funktionf, die von einem LOOP Programm P berechnet wird.

Die im ProgrammP verwendeten Variablen seienx0,x1, . . . ,xk.

Wir beweisen mit Induktion ¨uber den Aufbau vonP, dass eine primitiv rekursive FunktiongP :N→Nexistiert, die die Arbeitsweise vonP simuliert:

Wenn das ProgrammP die Anfangswerte a0,a1, . . . ,ak der Variablen in die Endwerteb0,b1, . . . ,bk ¨ubersetzt, dann gilt entsprechend

gP(ha0,a1, . . . ,aki) =hb0,b1, . . . ,bki

(30)

LOOP → Primitiv rekursiv (1)

Zuweisungen

FallsP aus der Zuweisungxi:=xj+c besteht, so ist

gP(x) =hu0(x), . . . ,ui−1(x),uj(x) +c,ui+1(x), . . . , uk(x)i

(31)

LOOP → Primitiv rekursiv (2)

Hintereinanderausf¨uhrung

FallsP die FormQ;R hat, so gilt gP(x) =gR(gQ(x) )

(32)

LOOP → Primitiv rekursiv (3)

LOOP-Konstrukt

Angenommen,P ist ein LOOP Programm von der Form LOOPxi DOQ ENDLOOP

Wir definieren zun¨achst die (primitiv rekursive) Hilfsfunktion h:N2→Nmit

h(0,x) = x

h(n+1,x) = gQ(h(n,x)).

Der Aufrufh(n,x)wendet das ProgrammQ genaun-mal hintereinander auf die Eingabex an.

Da der Wert xi am Anfang der Schleife durchui(x)gegeben ist, gilt gP(x) =h(ui(x),x)

(33)

LOOP → Primitiv rekursiv: Schluss

Schlussendlich geben wir Anfang und Ende der Simulation an:

Start des LOOP Programms

Die Eingabe ist in den Variablenx1, . . . ,xm enthalten.

Alle anderen Variablen werden mit0initialisiert.

Wenn diem Eingabevariablen die Wertex10, . . . ,xm0 haben, so ist der Eingabewert f¨ur die primitiv rekursive Simulation

x = h0, x10,x20, . . . ,xm0 , 0,0, . . . ,0

| {z }

k−m

i

Terminieren des LOOP Programms

Das Resultat ist die Zahl, die sich am Ende in der Variablenx0 ergibt.

Das Resultat des LOOP ProgramsP ergibt sich als u0 gP(h0, x10,x20, . . . ,xm0, 0,0, . . . ,0i)

.

(34)

R¨ uckrichtung:

Primitiv rekursiv → LOOP

(35)

Primitiv rekursiv → LOOP: Hauptidee

Wir betrachten eine primitiv rekursive Funktion f :Nk →N Wir beweisen mit Induktion ¨uber die Definition vonf, dass ein LOOP ProgrammPf existiert, das die Auswertung vonf simuliert Das ProgrammPf nimmt die Variablenwertex1, . . . ,xk als Eingabe und terminiert mit x0=f(x1, . . . ,xk).

(36)

Primitiv rekursiv → LOOP (1)

Basisfunktionen

Die konstante Funktionf(x1, . . . ,xk) =c wird durch das LOOP Programx0:=c simuliert.

Die Projektionf(x1, . . . ,xk) =xj wird durch das LOOP Programx0:=xj simuliert.

Die Nachfolgerfunktionsucc(xj) =xj+1wird durch das LOOP Programx0:=xj+1simuliert.

(37)

Primitiv rekursiv → LOOP (2)

Komposition

Falls die primitiv rekursive Funktionf durch Komposition aus anderen primitiv rekursiven Funktionenf1, . . . ,fs entsteht,

so wird f simuliert, indem man die LOOP Programme f¨urf1, . . . ,fs geeignet hintereinander ausf¨uhrt.

Anmerkung:Zwischenergebnissekann sich die Simulation f¨ur sp¨ater merken, indem sie sie in separaten Variablen bis zur Wiederverwendung zwischenspeichert.

(38)

Primitiv rekursiv → LOOP (3)

Primitive Rekursion

Angenommen, die Funktionf :Nk+1→Nentsteht durch primitive Rekursion aus den beiden primitiv rekursiven Funktioneng:Nk →Nund h:Nk+2→N, wobei

f(0,x1, . . . ,xk) = g(x1, . . . ,xk)

f(n+1,x1, . . . ,xk) = h(n, f(n,x1, . . . ,xk), x1, . . . ,xk)

Das simulierende LOOP ProgrammPf sieht dann wie folgt aus:

x0:=g(x1, . . . ,xk);

s :=0;

LOOPnDO

x0:=h(s,x0, x1, . . . ,xk);

s:=s+1;

ENDLOOP;

(39)

µ-rekursive Funktionen

(40)

Der Kleene’sche µ-Operator

Wir definieren min∅=⊥.

Definition

Es seig:Nk+1→N∪ {⊥}eine (partielle oder totale) Funktion mitk+1 Argumenten (k ≥1). Durch Anwendung desµ-Operatorsaufgentsteht eine neue Funktionf :Nk →N∪ {⊥}mitk Argumenten, wobei

f(x1, . . . ,xk) =min{n|g(n,x1, . . . ,xk) =0 und

f¨ur allem<ngiltg(m,x1, . . . ,xk)6=⊥}.

Die entstehende Funktionf wird mitµg:Nk →N∪ {⊥}bezeichnet.

Anmerkung: Derµ–Operator arbeitet immer mit der ersten Komponente.

(41)

Beispiele

Beispiel

Es seig:N4→Nmit g(x,a,b,c) = (x−a)2(x−b)2(x−c)2. Dann ist(µg)(a,b,c)die kleinste Zahlx ∈Nmitg(x,a,b,c) =0.

Daraus ergibt sich(µg)(a,b,c) =min{a,b,c}.

Beispiel

Es seig:N2→Nmit g(x,y)≡1.

Dann ist(µg)(y)die kleinste Zahlx ∈Nmit g(x,y) =0.

Daraus ergibt sich(µg)(y)≡ ⊥.

(42)

µ-rekursive Funktionen

Definition

Die Klasse derµ-rekursiven Funktionen ist die kleinste Klasse von (partiellen und totalen) Funktionen,

die die Basisfunktionen (konstante Funktionen; Projektionen;

Nachfolgerfunktion) enth¨alt und

die abgeschlossen ist unter (1) Komposition, (2) primitiver Rekursion und (3) Anwendung des µ-Operators.

Anmerkung: Wenn eines der Argumente vonf(x1, . . . ,xk)den Wert⊥ annimmt, so f¨uhrt das zum Funktionswert f(x1, . . . ,xk) =⊥.

(43)

Stephen Kleene (1909–1994)

Wikipedia:Stephen Cole Kleenewas a student of Alonzo Church.

Kleene is best known as the founder of recursion theory, which

subsequently helped to provide the foundations of theoretical computer science.

Kleene’s work grounds the study of computable functions. A number of mathematical concepts are named after him: Kleene hierarchy, Kleene algebra, the Kleene star (Kleene closure), Kleene’s recursion theorem, and the Kleene fixpoint theorem. He also invented regular expressions, and made significant contributions to the

foundations of mathematical intuitionism.

(44)

Aquivalenz zu WHILE Programmen ¨

(45)

Aquivalenz zu WHILE Programmen ¨

Satz

Die Menge derµ-rekursivenFunktionen f¨allt

mit der Menge der WHILE-berechenbaren(Turing-berechenbaren;

RAM-berechenbaren) Funktionen zusammen.

Der Beweis dieses Satz basiert auf dem Beweis unseres letzten Satzes (primitiv rekursiv ⇔LOOP-berechenbar), und bildet eine einfache Erweiterung

In der Hinrichtung zeigen wir, dass WHILE Schleifen mit Hilfe des µ-Operators simuliert werden k¨onnen

In der R¨uckrichtung zeigen wir, dass derµ-Operator durch eine WHILE Schleife simuliert werden kann

(46)

Hinrichtung: WHILE → µ-rekursiv

Simulation eines WHILE ProgrammsP WHILExi6=0 DOQ ENDWHILE

Wir recyclen die Hilfsfunktion h:N2→N, die durch den Aufruf h(n,x)das Programm Qgenau n-mal aufx anwendet:

h(0,x) = x

h(n+1,x) = gQ(h(n,x)).

Die Funktion uih:N2→Ngibt den Wertuih(n,x) =ui(h(n,x))der Variablenxi nachn-maliger Anwendung vonQ an.

Die Funktion µ(uih) :N→Ngibt die kleinste Zahln=µ(uih)(x) an, f¨ur diexi nachn-maliger Anwendung vonQ den Wert0hat.

Daher wird das WHILE ProgrammP simuliert durch gP(x) =h(µ(uih)(x), x)

(47)

R¨ uckrichtung: µ-rekursiv → WHILE

Simulation desµ-Operators

Angenommen, die Funktionf :Nk →Nentsteht durch den µ-Operator aus derµ-rekursiven Funktiong:Nk+1→N, also f =µg.

Das simulierende WHILE ProgrammPf sieht dann wie folgt aus:

x0:=0;

y :=g(0,x1, . . . ,xk);

WHILEy 6=0 DO x0:=x0+1;

y:=g(x0, x1, . . . ,xk);

ENDLOOP;

(48)

Landschaftsbild

TM = RAM = WHILE =µ-rekursiv

LOOP = primitiv rekursiv + − × ab ab kn

A(m,n)

Ackermann Funktion

Referenzen

ÄHNLICHE DOKUMENTE

L¨ osung lautet wieder: Probiere alle M¨ oglichkeiten durch Nachteil lautet wieder: Extrem langsamer Algorithmus.. Beispiel 2:

Auch dieses Problem kann dadurch gel¨ ost werden, dass man einfach alle M¨ oglichkeiten durchprobiert. Und auch dieser Algorithmus ist

Mittwoch, Oktober 23: Keine Vorlesung Freitag, Oktober 25, 12:30–14:00 Uhr, Audimax Mittwoch, Oktober 30, 10:30–12:00, Aula Freitag, November 1: Keine Vorlesung Mittwoch, November

F¨ ur eine abz¨ ahlbar unendliche Menge M gibt es immer auch eine bijektive (bijektiv = surjektiv+injektiv) Abbildung c : N → M: Wiederholungen von Elementen von M k¨ onnen bei der

F¨ ur eine abz¨ ahlbar unendliche Menge M gibt es immer auch eine bijektive (bijektiv = surjektiv+injektiv) Abbildung c : N → M : Wiederholungen von Elementen von M k¨ onnen bei

Wir wissen nicht, ob diese Instanz eine Ja- oder eine Nein-Instanz ist. Der Satz von Rice ist f¨ ur konkrete

Diese Konfigurationsfolge beginnt mit dem Startdomino Diese Konfigurationsfolge muss zumindest einen L¨ osch- oder Abschlussdomino enthalten (andernfalls w¨ are der untere String

Ein schneller Algorithmus f¨ ur das Entscheidungsproblem liefert (durch wiederholte Anwendung) oft auch einen schnellen Algorithmus zum Berechnen eines expliziten L¨