PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Logische Kuriositaeten


richy
12.03.12, 22:11
"Ein Kreter sagt alle Kreter luegen"
**************************
ist ein bekannter Widerspruch, der mit zum goedelsche Unvollstaendigkeitssatz fuehrte. Verfolgt man die Aussage des Kreters zeitlich inkremenentell, so ergibt sich eine Schwingung des Aussagegehaltes :

Anfangsannahme Kreter(0) luegt :
Kreter(0) luegt, Kreter(1) sagt wahrheit, Kreter(2) luegt, Kreter(3) sagt wahrheit ...

Anfangsannahme Kreter(1) sagt wahrheit :
Kreter(0) sagt wahrheit, Kreter(1) luegt, Kreter(2) sagt wahrheit, Kreter(3) luegt ...

Den Wahrheitsgehalt kann man auch ueber eine binaere Logik ausdruecken :
Kreter luegt = 0
Kreter sagt wahrheit = 1

Die beiden Zustaende sind komplementaer und koennen daher ueber die Nicht Funktion dargestellt werden :

Ein Nicht-Gatter (engl.: NOT gate), auch als Komplement-Gatter oder Inverter bezeichnet, ist ein Gatter mit einem Eingang und einem Ausgang. Es entspricht dem logischen Nicht. In der Aussagenlogik wird das Komplement durch ein ¬ vor, in der Schaltalgebra durch einen Querstrich über den entsprechenden Symbolen dargestellt.

Dessen Abbildungsfunktion lautet : ¬K=(1-K)
Damit laesst sich die Aussage "Ein Kreter sagt alle Kreter luegen" fuer beide Anfangswerte iterativ darstellen :

EDIT
y(k+1)=1-y(k)

richy
12.03.12, 23:50
Herleitung einer Bedingung
********************

Oft sind Widersprueche mit einer if Funktion verknuepft. Wie laesst sich fuer eine Iteration, DZGL eine if Funktion realisieren ? Ein Informatiker kennt sicherlich dieses kleinen Trick :

if (in=10) then out=1 else out:=100
Das laesst sich auch schreiben als
out:=(in=10)*1 + (1-(in=10))*100

Das funktioniert fuer beliebige logische Ausdruecke.
Beispiel : Vorzeichen ermitteln

if (in>=0) then sign=1 else sign:=-1
out:=(in>=10)*1 + (1-(in>=10))*(-1)
effizienter waere evtl :
K:=(in>=10);
sign:=K+(1-K)*(-1)
sign:=K-(1-K)
sign:=2K-1

Test in=10 ,da groesser 0 gilt K=1, sign:=2-1=1
Test in=-1 ,da kleiner 0 gilt K=0, sign:=0-1=-1

Manche Programmiersprachen ermoeglichen diese Notation nicht.

Allgemein :

Falls (if_Wahrheit) then ((out:=if_Zuordnung) else ((out:=else_Zuordnung)
Falls (if_Wahrheit) then (out:=if_Zuordnung) falls ¬(if_Wahrheit) then (out:=else_Zuordnung)

out:=(if_Wahrheit)*if_Zuordnung + ¬(if_Wahrheit)*else_Zuordnung
out:=(if_Wahrheit)*if_Zuordnung + (1-if_Wahrheit)*else_Zuordnung