Entscheidbarkeit und Aufzählbarkeit

Aus ProgrammingWiki
Archivierte Version vom 2012-03-29T13:50:54+00:00. Aktuelle Version

Entscheidbarkeit, Charakteristische Funktion, Aufzählbarkeit

Aufzaehlbare Mengen

(define nat_zahlen (make-stream 0 (lambda (n) (+ n 1))))

(define menge-bis print-stream) ; angepasster Prozedurnamen

(define generiere_aufzaehlbare_menge

 (lambda (f)
   (stream-map f nat_zahlen)))

(define generiere_aufzaehlbare_wortmenge

 (lambda (f)
   (stream-map number->string (stream-map f nat_zahlen))))

Beispiel: Wörter der Länge 3 über \{a,b\}^*

Die zu charakterisierende Menge ist endlich, denn es gibt nur 2^3=8 solche Wörter.


Beispiel: Wörter über \{a,b\}^*, die mit a beginnen. Das ist eine abzählbar unendliche Menge. Sie ist entscheidbar.

Die Menge der Fibonacci-Zahlen ist aufzählbar unendlich:

Die Menge der Primzahlen ist aufzählbar unendlich:

Offensichtlich ist f surjektiv und berechenbar.

Wir verwenden f, um die unendliche Menge der Primzahlen zu erzeugen:

Man kann sich das Anfangsstück einer aufzählbar unendlichen Menge anschauen:

Die charakteristischen Funktion chi_primzahlen ist berechenbar:

Analog geht das Ganze auch mit Zahlwörtern, was auf Wortfunktionen A^*\mapsto A^* hinausläuft.

Semi-Entscheidbarkeit

Wir stellen (im Hintergrund) die Prozedur semi-chi bereit. Sie berechnet die semi-charakteristische Funktion. Dies gelingt natürlich auch für die Primzahlen.

Wählt man ein Zahlwort, das eine Nicht-Primzahl repräsentiert, muss die Berechnung von außen abgebrochen werden.

Vereinigung zweier aufzählbarer Mengen

An der Ausgabe erkennt man das Reißverschlussprinzip.

Die Menge der Primzahlen: