George Boole og boolesk algebra (2. del)

I 2. del i serien om den engelske matematiker George Boole går vi tættere på hans arbejde og især boolesk algebra. George Boole opfandt en måde at arbejde med logik på, som blev et fuldstændig afgørende grundlag for, at computeren blev udviklet. 

Photo by Brendan Church on Unsplash

Boole udviklede et system til logisk tænkning, der gik ud på at bruge symboler i stedet for ord. I Booles system var der kun to symboler at vælge imellem, nemlig 0 og 1. Ifølge Boole kan alle udsagn (i forhold til logikken) reduceres til enten sandt (1) eller falsk (0). Lige som du kan forestille dig i et retslokale, hvor man kan blive dømt skyldig eller ikke-skyldig. Man kan aldrig blive dømt næsten-skyldig eller lidt uskyldig. Det er enten-eller; alt eller intet.

Booles system kaldes også for boolesk algebra. Og hvad er så algebra? Algebra betyder bogstavregning, og algebra bruger man, hvis man for eksempel har nogle ubekendte i sit regnestykke, eller hvis man regner med størrelser, der ikke kan reduceres til tal.


Arv fra Platon

Man kan sige, at Boole trak på arven fra Platon, som var den første til at dele verden op i to poler, og det er en tilgang, der siden har præget den vestlige verdens tænkning: Kvinde og mand, nat og dag, op og ned, godt og ondt og så videre. Sådan et verdensbillede er nemlig meget overskueligt at have med at gøre, når alt kan deles op i to forskellige enheder – i stedet for 10 eller 50.

Det er ikke i alle sammenhænge, at det er hensigtsmæssigt at simplificere vores verden på den måde. Men når man skal arbejde med ekstremt komplekse enheder, så kan det være en enorm hjælp. Og Booles system har faktisk åbnet mulighederne for at skabe instrumenter, der kan fjernstyre hjerneoperationer og lande fartøjer ude i rummet.


Værdien og effekten


I Booles system var der altså fokus på værdien af et udsagn, som var enten sandt (1) eller falsk (0) – eller man kunne også kalde det ”noget” (1) eller ”intet” (0). Og der var samtidig fokus på resultatet (effekten) af flere udsagn, når man stillede dem op overfor hinanden.

De grundlæggende byggesten i boolesk algebra er de udsagn, der indgår, som typisk er repræsenteret ved: Bogstaver, deres tilhørende sandhedsværdi (altså om de er et sandt eller falsk udsagn) og så deres indbyrdes logiske relation. Den relation udtrykkes i logikke som ”og” og ”eller”, og i boolesk algebra repræsenteres det ”og” som multiplikation (*), og ”eller” repræsenteres som addition (+).


Eksempel 1

Et eksempel på et udsagn kunne være:

Køb bil = Bilen er grøn og bilen har ikke soltag

Hvis vi oversætter udsagnets tre elementer til bogstaver, så kan det se sådan ud:

A = Køb
B = Grøn
C = Soltag

Og hvis udsagnet så omsættes til formel med de bogstaver, ser det sådan ud:

A = B * !C

Hvis vi så indsætter bogstaverne i en sandhedstabel, hvor 0=falsk og 1=sandt, så får vi følgende:


Eksempel 2


Et andet eksempel på et udsagn, hvor vi bruger ”eller” i stedet for ”og”, kan være:

Køb bil = Bilen er grøn eller bilen har soltag

På formel kommer sætningen til at se således ud:
A = B + C

Og hvis vi så indsætter den i en sandhedstabel efter boolesk logik, så får vi følgende:


Og hvad kan det så bruges til?

Boole udviklede sit system til at arbejde med logik, altså med abstrakt tænkning. Så til at begynde med var det kun af interesse for en håndfuld akademikere. Men George Booles system endte altså med at blive mainstream-viden og -brug 150 år senere! Her er hvorfor:

I slutningen af 1930’erne var der en ung, amerikansk ingeniørstuderende ved navn Claude Shannon (1916-2001), der stødte på Boole i et kursus i filosofi og fik den idé at overføre Booles system direkte til udviklingen af komplekse elektriske kredsløb. For et elektrisk kredsløb er altid enten tændt eller slukket – præcis som enhederne i Booles system også kun kan have to værdier: sandt (1) eller falsk (0).

I sin kandidatafhandling fra 1937 beskrev Shannon, hvordan man med boolesk algebra kunne forenkle telefonomstillingen, som på det tidspunkt var det mest komplekse elektriske kredsløb, som man kendte til.

Claude Shannons opdagelse blev senere taget op af blandt andre Alan Turing, som opfandt computeren.


Boolesk algebra i hardware og software

I dag er computeren det meste komplicerede elektriske kredsløb, som vi kender til. Men – hvis man ser bort fra kunstig intelligens – så har intet ændret sig. En computers kredsløb er fortsat opbygget efter boolesk logik, og alle programmeringssprog er også helt grundlæggende baseret på boolesk logik, uanset om det er Javascript, C# og så videre.

Boolesk algebra går som sagt ud på at forenkle komplekse udsagn og handlinger så meget som overhovedet muligt, så de bliver lettere at arbejde med. De symboler (0 og 1), som anvendes i boolesk algebra er det binære talsystem, og når de oversættes til de to tilstande, der eksisterer i et elektrisk kredsløb – for eksempel en computer – så kaldes de også ”tændt” og ”slukket”.


Boolesk algebra i en moderne computer

Boolesk algebra er altså baseret på, at alle udsagn kan koges ned til 1 eller 0. Men det er selvfølgelig ikke det hele: Algebraen kommer i spil, når man sætter to eller flere udsagn over for hinanden i de kombinationer, som fører til det programmeringsresultat, som man ønsker. For eksempel, at en hvid lyskugle eller en grøn dinosaur skal flyve hen over skærmen, når man trykker på en bestemt knap. Meget forsimplet sagt.


Transistorer og gates

Hvis vi zoomer lidt mere ind, så handler det om, at der i en computer er tusinder af mikro-transistorer. I hver transistor er der forskellige elektriske gates, der bearbejder de input, som de får fra din kode. Når de har bearbejdet koden, så laver de et output – for eksempel billedet af dinosaueren.

Man arbejder med 7 forskellige gates i en moderne computer: ”AND-gate”, ”OR-gate”, ”EXOR-gate”, ”NOT-gate”, ”NAND-gate”, ”NOR-gate” og “EXNOR-gate”. Og den måde, som hver eneste gate bearbejder noget input på, er altså baseret på boolesk algebra.

AND-gate betyder, at hvis begge input-værdier er 1-taller, så vil output-signalet også være 1.
OR-gate betyder, at hvis blot et af input-værdierne er 1, så vil output-signalet være 1.
EXOR-gate betyder ”Exclusive-or”. Det betyder, at outputtet vil være 1, hvis den ene at input-værdierne er 1. Hvis begge input-værdier er 1, så vil outputtet være 0.
NOT-gate giver det modsatte output af inputtet. Så hvis inputtet er 1 og 1 eller 1 og 0, så vil outputtet være 0. Hvis inputtet er 0 og 0, så vil outputtet være 1.
NAND-gate er et ”AND” efterfulgt af ”NOT”. Det betyder, at outputtet er 0, hvis begge input er 1.
NOR-gate er et ”OR” efterfulgt af ”NOT”, og det betyder, at outputtet er 1, hvis begge input er 0
EXNOR er ”Exclusive-nor”, og det betyder, at outputtet er 1, hvis begge input er 0, eller hvis begge input er 1.

Sådan ser de mest grundlæggende elementer i boolesk algebra ud. Herfra bevæger vi os ind på et mere teknisk område, som ligger uden for denne blog.

Buste af George Boole foran Queen’s College i Cork. (Foto af William Murphy, Dublin, Irland)