Spojení | |
---|---|
A | |
| |
Definice | |
pravdivostní tabulka | |
logická brána | |
normální formy | |
Disjunktivní | |
spojivkové | |
Zhegalkinův polynom | |
Členství v předkompletních třídách | |
Ušetří 0 | Ano |
Ušetří 1 | Ano |
Monotónní | Ano |
lineární | Ne |
Self-duální | Ne |
Konjunkce (z latinského conjunctio - „spojení, spojení“) je logická operace ve významu co nejblíže spojení „a“. Synonyma: logické "AND" , logické násobení , někdy jen "AND" [1] .
Konjunkce může být binární operace (tj. mít dva operandy), ternární operace (tj. mít tři operandy) nebo n-ární operace (tj. mít n operandů).
Nejběžnější zápis operace spojky je:
(v případě použití tečky jako znaku logického násobení lze toto znaménko, stejně jako při běžném násobení v algebře , vynechat: [1] ).
Zápis doporučený normou ISO 31-11 je přitom nejpoužívanější v moderní matematice a matematické logice , kde však konkuruje znaku ampersand & [1] ; posledně jmenovaný, objevující se v 1. století př. Kr. E. jako grafickou zkratku ( ligatura ) latinského union et 'and', již v roce 1685 používali Jacob a Johann Bernoulli jako logické spojení (spojoval v nich však nikoli výroky , ale pojmy ) [2] [3] . George Boole (následovaný dalšími průkopníky systematické aplikace symbolické metody na logiku: W. S. Jevons , E. Schroeder , P. S. Poretsky ) označoval konjunkci se znaménkem - jako obyčejné násobení [4] . Symbol ⋀ (převrácený disjunkční znak ) jako symbol pro konjunkci navrhl Arend Heyting (1930) [5] .
Zápis ⋀pro konjunkci byl také používán v raném programovacím jazyce Algol 60 [6] . Kvůli nedostatku odpovídajícího znaku ve standardních znakových sadách (například v ASCII nebo EBCDIC ) používaných na většině počítačů však nejrozšířenější programovací jazyky poskytovaly pro spojení jiné zápisy. Ve Fortranu IV a PL/I se tedy používalo označení .AND.a &(s možností nahrazení posledně jmenovaného klíčovým slovem AND ) [7] ; Pascal a Ada používají vyhrazené slovo and[8] [9] ; jazyky C a C++ používají zápis &pro bitovou konjunkci a &&pro logickou konjunkci [10] ).
Konečně, při přirozeném uspořádání pravdivostních hodnot dvouhodnotové logiky (když se předpokládá, že ), se ukazuje, že konjunkce se tedy ukazuje jako speciální případ operace výpočtu minima ; otevírá se tím nejpřirozenější způsob, jak definovat fungování konjunkce v systémech mnohohodnotové logiky (ačkoli se někdy uvažují i jiné způsoby zobecňující konjunkce - např. v případě k -hodnotové logiky, ve které množina pravdivostních hodnot je reprezentován počátečním segmentem pologrupy přirozených čísel ) [11] [12] .
Definice.
Logická funkce MIN ve dvouhodnotové (binární) logice se nazývá konjunkce ( logické "AND" , logické násobení nebo jednoduše "AND" ).
Pravidlo: Výsledek se rovná nejmenšímu operandu.
Popis.
V Booleově algebře je spojka funkcí dvou, tří nebo více proměnných (jsou také operandy operace, jsou také argumenty funkce). Proměnné mohou nabývat hodnot z množiny . Výsledek také patří do sestavy . Výsledek se vypočítá podle jednoduchého pravidla nebo podle pravdivostní tabulky . Místo hodnot lze použít libovolnou jinou dvojici vhodných znaků, např. nebo nebo „nepravda“, „pravda“, ale u takového označení je nutné dodatečně definovat senioritu, např. , s digitálním označením, seniorita je přirozené .
Pravidlo: výsledek je , pokud jsou všechny operandy stejné ; ve všech ostatních případech je výsledkem .
Pravdivostní tabulky:
pro binární konjunkci
pro ternární konjunkci
0 | 0 | 0 | 0 |
jeden | 0 | 0 | 0 |
0 | jeden | 0 | 0 |
jeden | jeden | 0 | 0 |
0 | 0 | jeden | 0 |
jeden | 0 | jeden | 0 |
0 | jeden | jeden | 0 |
jeden | jeden | jeden | jeden |
Konjunkce je komutativní , asociativní a distributivní vzhledem ke slabé disjunkci [13] .
Operace, nazývaná konjunkce v binární logice , v multi-cenil logiky je obvykle spojena s minimální operací : , kde a je hodnota logiky; jsou však možné i jiné možnosti zobecnění obvyklé konjunkce na případ množiny. Zpravidla se snažíme zachovat kompatibilitu s Booleovou algebrou pro hodnoty operandů a .
Název tohoto minima operace má smysl v logikách s libovolnou hodnotou, včetně binární logiky, a názvy konjunkce , logické "AND" , logické násobení a jednoduše "AND" jsou typické pro binární logiku a při přechodu na vícehodnotová logika.
V klasickém výrokovém počtu jsou vlastnosti konjunkce definovány pomocí axiomů . Klasický výrokový počet může být dán různými systémy axiomů a některé z nich budou popisovat vlastnosti konjunkce. Jedna z nejběžnějších možností obsahuje 3 axiomy pro spojení:
Pomocí těchto axiomů lze dokázat další formule obsahující operaci konjunkce. Vezměte prosím na vědomí, že v klasickém výrokovém počtu se výsledek nepočítá z hodnot operandů (jako v Booleově algebře), ale je nutné dokázat vzorec jako celek na základě axiomů a inferenčních pravidel.
Logický prvek, který implementuje funkci konjunkce, se nazývá match obvod [13] . Mnemotechnické pravidlo pro spojení s libovolným počtem vstupů je: Výstup bude:
V podmínkách teorie množin je konjunkce obdobou operace průniku .
V počítačových jazycích se používají dvě hlavní verze spojky: logické "AND" a bitové (bitové) "AND". Například v jazycích C/C++ je logické AND označeno symbolem "&&" a bitové je označeno symbolem "&". V terminologii používané v C# se operace „&“ nazývá logický „AND“ a operace „&&“ se nazývá podmíněná „AND“ , protože hodnoty operandů jsou podmínkou pro pokračování výpočtu. V jazycích Pascal/Delphi se oba druhy spojení označují pomocí klíčového slova " a " a výsledek akce je určen typem operandů. Pokud jsou operandy typu boolean (například Boolean), provede se logická operace, pokud je celé číslo (například Byte) bitovou operací.
Logické "AND" se používá v příkazech podmíněného skoku nebo v podobných případech, kdy je vyžadován výsledek nebo . Například:
if ( a & b & c ) { /* nějaké akce */ };Porovnání v tomto případě bude pokračovat až do konce výrazu, bez ohledu na mezivýsledky. Princip podmíněného "AND" v podobné situaci:
a = nepravda _ b = pravda ; c = pravda ; if ( a && b && c ) { /* nějaké akce */ };Ověřování pravdivosti výrazu se v tomto případě zastaví po kontrole proměnné a, protože další porovnávání nedává smysl.
Výsledek bude stejný , pokud jsou oba operandy stejné (není stejné pro číselné typy ). V každém jiném případě bude výsledek .
V tomto případě se použije standardní konvence: pokud je hodnota levého operandu rovna , pak se hodnota pravého operandu nevypočítá (místo toho může existovat složitý vzorec). Tato konvence urychluje provádění programu a v některých případech je užitečnou technikou. Kompilátor Delphi podporuje speciální direktivu, která obsahuje
{$B-}nebo vypnutí
{$B+}podobné chování. Pokud například levý operand testuje, zda lze vyhodnotit pravý operand:
if ( a != 0 && b / a > 3 ) { /* nějaké akce */ };V tomto příkladu se kvůli kontrole na levém operandu pravý operand nikdy nebude dělit nulou.
Bitové "AND" provádí obvyklou operaci booleovské algebry na všech bitech levého a pravého operandu v párech. Například,
-li | |
a = | |
b= | |
pak | |
a a b = |
Často se poukazuje na podobnost mezi spojkou a spojkou „a“ v přirozeném jazyce. Složený výrok " A a B " je považován za pravdivý, pokud jsou pravdivé oba výroky A i B , jinak je složený výrok nepravdivý. To přesně odpovídá definici konjunkce v Booleově algebře, pokud "pravda" je označena a "nepravda" je označena . Současně se často používá standardní klauzule o nejednoznačnosti přirozeného jazyka . Například v závislosti na kontextu může spojení „a“ nést další konotaci „a pak“, „a proto“, „a pak“. Rozdíl mezi logikou přirozeného jazyka a matematickou logikou vtipně vyjádřil americký matematik Stephen Kleene , když poznamenal, že v přirozeném jazyce „Mary se vdala a měla dítě“ není totéž jako „Mary porodila dítě a vdala se“.
V bibliografických katalozích |
---|
Booleovské operace | |
---|---|
|
Logika | |||||||||
---|---|---|---|---|---|---|---|---|---|
Filosofie • Sémantika • Syntaxe • Historie | |||||||||
Logické skupiny |
| ||||||||
Komponenty |
| ||||||||
Seznam booleovských symbolů |