Ternær logik ( tre-værdi logik eller ternær logik ) er en af de typer af mange-værdi logik foreslået af Jan Lukasiewicz i 1920 . Logik med tre værdier - historisk set er den første logik med flere værdier , den enkleste udvidelse af logik med to værdier .
Der er tydelige TL, hvor alle tre værdier er defineret som specifikke numeriske værdier (for eksempel, , , ), samt et antal fuzzy ternære logikker med en, to og tre fuzzy logiske værdier (udtrykt ved tal som værdiområder).
Fuzzy ternær logik med en fuzzy værdi supplerer værdierne ("false") og ("true") med en fuzzy værdi "uncertainty", som optager (i sammenligning med probabilistisk logik ) hele intervallet . Et eksempel på TL-værdier med to fuzzy værdier er ("mindre", "lige", "større"), ("negativ", 0, "positiv").
En TL med tre fuzzy værdier er af stor praktisk interesse, da enhver målt (for eksempel ved hjælp af sensorer) information kun er korrekt med en vis tolerance, det vil sige i et bestemt værdiområde. Eksempler på værdier for sådanne logikker kan være tripletter ("mindre end", "lige, inden for tolerance", "større end"), ("hældning til venstre", "lige, inden for acceptable grænser", "hældning til højre"), ("kold", "kølig", "varm") og andre.
Ternær logik, i modsætning til binær, er ikke en boolsk ring og har sit eget matematiske apparat. Det består af et system af aksiomer , der definerer enkelt- og dobbeltoperationer over mængden {" 1 ", "0", "1"}, såvel som egenskaberne afledt af dem.
For konjunktion og disjunktion i ternær logik er kommutative (forskydning), associative (associative) og distributive (distributive) love bevaret.
Flere egenskaber er dannet på grund af træk ved Lukasiewiczs negation:
Men på grund af tilstedeværelsen af den tredje stat viser nogle love for binær logik sig at være forkerte, og ternære analoger er formuleret til dem. Så i stedet for modsigelsesloven begyndte de at anvende loven om staters uforenelighed i stedet for loven om den udelukkede midterste - loven om staters fuldstændighed ( den udelukkede fjerde lov ), i stedet for den ukorrekte Blake- Poretsky-loven, den tre-sigtede Blake-Poretsky-lov bruges .
Når de er fysisk implementeret, svarer ternære funktioner i ternær logik til ternære logiske elementer , i det generelle tilfælde ikke nødvendigvis elektroniske.
Kredsløb med 3-4-værdilogik gør det muligt at reducere antallet af brugte logiske og lagerelementer samt sammenkoblinger. Tre-værdi logiske kredsløb implementeres nemt på CMOS - teknologi. Tre-værdi logik er mere udtryksfuld end to-værdi logik.
På basis af ternære elementer - en ternær ferritdiodecelle udviklet af Nikolai Brusentsov - i 1959, blev en lille computer " Setun " designet i computercentret på Moscow State University , udgivet i 46 eksemplarer.
Nedenfor er sandhedstabellerne for de logiske operationer af Stephen Kleenes " stærke logik om ubestemmelighed " og Graham Priests " logic of paradox, LP " Begge logikker har tre logiske værdier - "falsk", "usikkerhed" (i Priests logik - "paradoks") og "sandhed", som i Kleenes logik er betegnet med bogstaverne F (falsk), U (ukendt), T (sandt), og i Priests logik med tallene −1, 0 og 1 [1] .
|
|
Værdien U i Kleenes logik er tildelt udtryk, der faktisk har værdien T eller F, men i øjeblikket er denne værdi ukendt af en eller anden grund, hvilket resulterer i usikkerhed. Resultatet af en logisk operation med værdien U kan dog bestemmes. For eksempel, da T & F = F og F & F = F, så U & F = F. Mere generelt: hvis for en logisk operation opererer relationen
oper(F,F)=oper(F,T), så oper (F,U)=oper(F,F)=oper(F,T);
på samme måde, hvis
oper(T,F)=oper(T,T), så oper(T,U)=oper(T,F)=oper(T,T).
I modsætning til Kleenes logik er værdien 0 i Priests logik defineret og betragtet som både sand og falsk (paradoksalt) på samme tid. Forskellen ligger i definitionen af tautologier. Mens der i Kleenes logik kun er én fornemt sandhedsværdi, der er T, skelnes der i Priests logik både værdierne 1 og 0.
Med den numeriske betegnelse af logiske værdier (-1, 0, 1) svarer logiske operationer til følgende numeriske operationer:
Implikationsoperationen i Kleene og Priest logikken er defineret af en formel svarende til den binære logiske formel:
.Sandhedstabeller for hende
|
|
Denne definition adskiller sig fra den definition af implikation, der er vedtaget i Lukasiewicz's logik.
Vi kalder en funktion for en logisk funktion med tre værdier, hvis alle dens variabler tager værdier fra mængden {0,1,2} og selve funktionen tager værdier fra det samme sæt. Funktionseksempler: max (x, y), min (x, y), x+1 ( mod 3). Angiv mængden af alle funktioner i logik med tre værdier. Ved operation på funktioner mener vi superposition. En klasse af funktioner K fra kaldes lukket, hvis en hvilken som helst superposition af funktioner fra K tilhører K . Et system af funktioner af klasse K kaldes komplet, hvis en funktion fra K kan repræsenteres ved en superposition af funktioner i dette system. Et komplet system kaldes en basis, hvis ingen funktion fra dette system kan repræsenteres ved en superposition af de resterende funktioner i dette system. Det er bevist, at der findes en endelig basis i (især bestående af én funktion). En lukket klasse K kaldes precomplete, hvis den ikke falder sammen med , men tilføjelse af en funktion, der ikke hører til den, genererer . SV Yablonsky beviste [2] at der er 18 prækomplette klasser i . Det er også bevist, at de alle har endelige baser, især bestående af funktioner afhængig af højst to variable [3] . Yu. I. Yanov og A. A. Muchnik beviste [4] , at der er klasser af funktioner, der ikke har en basis, og klasser af funktioner, der har en uendelig basis. Dette indebærer, at sættet af lukkede klasser i har kontinuummets kardinalitet . I denne, adskiller tre-værdi (og enhver multi-værdi) logik væsentligt fra to-værdi logik, hvor, som Post bevist [5] , alle lukkede klasser har en endelig basis, og sættet af lukkede klasser kan tælles.
Nogle databasestyringssystemer bruger den særlige værdi UNKNOWN, som kan være resultatet af en logisk operation sammen med værdierne TRUE og FALSE.
Betydningen af UNKNOWN-værdien er "ukendt", det vil sige det udefinerede resultat af operationen. Værdien UNKNOWN kan bruges, når den særlige værdi NULL bruges i det anvendte softwareudviklingssystem . UNKNOWN-værdien returnerer en sammenligningsoperation, hvis en eller begge dens operander er NULL, samt nogle booleske operationer, hvis en af deres operander er UNKNOWN. De betingede operatører af programmeringssprog behandler UNKENDT værdien på samme måde som FALSE, det vil sige en konstruktion af formen:
hvis UKENDT så a := 1 ellers a := 2vil medføre, at variabel a tildeles værdien 2.