Logische Operationen
Es gibt eine Äquivalenz zwischen logischen Operationen und Operationen auf Mengen. Nehmen Sie zum Beispiel die folgende logische Aussage:
„Es regnet, das bedeutet, dass Wolken am Himmel sind.“
Ohne Wolken gäbe es keinen Regen. Wir können zwei Gruppen von Orten nehmen, „die Gruppe der Orte, an denen es regnet“ und „die Gruppe der Orte, an denen es Wolken gibt“, und zeigen, dass die erste Gruppe strikt in der zweiten Gruppe enthalten ist.
In ähnlicher Weise beruht die Typinferenz in der Informatik auf logischen Operationen zwischen Typen und ein Typ kann als die Menge aller Objekte betrachtet werden, die zu diesem Typ gehören (wenn es mindestens ein solches Objekt gibt, kann man sagen, dass der Typ bevölkert ist, andernfalls ist er es ) . leer. )
Die Typinferenz verwendet logische Beweise und zielt darauf ab, bevölkerte Typen zu finden, da Programme Objekte verarbeiten, deren Typ wir ermitteln möchten.
Aufgrund der oben genannten Äquivalenz werde ich logische Operationen anhand von Mengen im Geiste von Boole veranschaulichen . Jede Operation an Mengen wird mithilfe eines logischen Konnektors und einer logischen Notation ausgedrückt.
Für die Diskussion werde ich zwei Intervalle über den ganzen Zahlen A und B als Eingabemengen verwenden.
A: 0…10
B: 5…18
Ergänzen
Stecker: Nein
Das Ergebnis enthält alle Elemente, die nicht in A enthalten sind .
¬A: …-1, 11…
Union
Anschluss: oder
Das Ergebnis enthält alle Elemente, die in A oder B enthalten sind .
A ∨ B: 0…18
Überschneidung
Anschluss: und
Das Ergebnis enthält nur die Elemente, die sowohl in A als auch in B enthalten sind .
A ∧ B: 5…10
Disjunktive Union
Konnektor: else (xor)
Das Ergebnis enthält die Elemente, die nur in A enthalten sind , sonst nur in B.
A ⊕ B: 0…4, 11…18
Implikation
Connector: nur wenn (impliziert)
Das Ergebnis enthält die Elemente, die in A sind, nur dann, wenn sie in B sind .
Das ist etwas schwieriger zu verstehen als frühere Operationen. Es ist leicht zu erkennen, dass das Ergebnis den Schnittpunkt der beiden Mengen enthält: Seine Elemente liegen in A und in B , was die Bedingung erfüllt.
Aber was ist mit dem Rest von B ?
Sie können sehen, dass die Elemente von B außerhalb des Schnittpunkts nicht in A sind . Bedeutet das, dass sie die Bedingung erfüllen? Es kommt darauf an, wie Sie es lesen:
- Das Ergebnis enthält die Elemente, die in A sind ( nur wenn sie in B sind ).
- Das Ergebnis enthält die Elemente (die nur dann in A sind , wenn sie in B sind ).
A ⇒ B: …-1, 5…
Ein anderes Beispiel wäre „Es regnet nur, wenn es Wolken gibt“. Wenn es einen Ort gibt, an dem es regnet, aber keine Wolken vorhanden sind, ist die Bedingung nicht erfüllt . Der Satz stellt keine Bedingung für Orte dar, an denen es nicht regnet, es kann also bewölkt sein oder nicht, beides ist in Ordnung.
Unterschied
Stecker: aber nicht
Das Ergebnis enthält nur die Elemente, die in A , aber nicht in B enthalten sind .
Interessanterweise gibt es dieses Mal keine spezielle Lesart, aber der Unterschied liegt tatsächlich in der Ergänzung der Implikation! Beachten Sie auch, dass die Reihenfolge von A und B wichtig ist.
A - B: 0…4

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































