Karnaugh-diagram

Een Karnaugh-diagram of ook wel een Veitch-diagram is een hulpmiddel om expressies in booleaanse algebra te vereenvoudigen. Het diagram werd uitgevonden in 1950 door Maurice Karnaugh, een telecommunicatie-ingenieur bij Bell Labs.

Dikwijls zijn er uitgebreide berekeningen nodig om een booleaanse expressie of functie zo eenvoudig mogelijk te schrijven, maar met een Karnaugh-diagram kan dit vaak sneller. Doordat het menselijk brein gemakkelijk patronen kan herkennen, helpt het diagram om snel op te zoeken welke termen gecombineerd kunnen worden om een expressie te vereenvoudigen. Daarenboven kan men met Karnaugh-diagrammen snel herkennen waar eventueel een zogenaamde "race condition" zou kunnen voorkomen, en men kan ze dan ook verwijderen, wat met booleaanse expressies alleen niet kan.

Een Karnaugh-diagram is geschikt voor vereenvoudigen tot maximaal zes variabelen; meer variabelen maken het zelfs voor het brein moeilijk om nog patronen te herkennen. Voor expressies met meer dan 4 variabelen is het beter het Quine-McCluskey-algoritme te gebruiken. Heden ten dage wordt voor dit doel echter in de regel de veel efficiëntere Espresso heuristische logische minimalisator toegepast.

Karnaugh-diagrammen zijn ook nuttig bij het aanleren van booleaanse functies en minimalisatie.

Voorbeeld

De functie f ( A , B , C , D ) {\displaystyle f(A,B,C,D)} heeft de volgende waarheidstabel (met 0 voor onwaar en 1 voor waar):

i {\displaystyle i} A {\displaystyle A} B {\displaystyle B} C {\displaystyle C} D {\displaystyle D} Waarde van f {\displaystyle f} i {\displaystyle i} A {\displaystyle A} B {\displaystyle B} C {\displaystyle C} D {\displaystyle D} Waarde van f {\displaystyle f}
0 0 0 0 0 0 8 1 0 0 0 1
1 0 0 0 1 0 9 1 0 0 1 1
2 0 0 1 0 0 10 1 0 1 0 1
3 0 0 1 1 0 11 1 0 1 1 1
4 0 1 0 0 0 12 1 1 0 0 1
5 0 1 0 1 0 13 1 1 0 1 1
6 0 1 1 0 1 14 1 1 1 0 1
7 0 1 1 1 0 15 1 1 1 1 0

De waarheidstabel wordt anders weergegeven door de invoervariabelen A , B , C {\displaystyle A,B,C} en D {\displaystyle D} in paren A B {\displaystyle AB} en C D {\displaystyle CD} tegen elkaar uit te zetten. De waarden van deze paren zijn geordend in Gray-code, om ervoor te zorgen dat in twee opeenvolgende waarden er slechts één variabele verandert.

Het zo ontstane Karnaugh-diagram is een 4 bij 4 diagram, met in het veld ( A B , C D ) {\displaystyle (AB,CD)} de functiewaarde f ( A , B , C , D ) . {\displaystyle f(A,B,C,D).}

Sample Karnaugh map, style #1.
Sample Karnaugh map, style #1.

Als eenmaal de getallen ingevuld zijn, is de volgende stap het vinden van minimale termen voor de uiteindelijke expressie. Deze termen kunnen gevonden worden door de enen in het diagram te omkaderen. Dit moet gebeuren op een dusdanige manier dat de "kaders" rechthoekig zijn en exact 2 n {\displaystyle 2^{n}} velden omvatten, waarbij n {\displaystyle n} een natuurlijk getal is groter dan 0. De omkaderingen moeten ook zo groot mogelijk zijn. De optimale kaders worden hierboven getoond in groen, rood en blauw.

Voor elk van deze kaders wordt nagegaan welke variabele in alle velden van het kader dezelfde waarde heeft. Voor het eerste (rode) kader blijkt:

  • De variabele A {\displaystyle A} heeft dezelfde waarde (1) in het hele kader, dus behoort A {\displaystyle A} tot de term die hoort bij het rode kader.
  • De variabele B {\displaystyle B} heeft niet dezelfde waarde (ze verandert van 1 naar 0), dus wordt ze uitgesloten.
  • Op dezelfde manier verandert D {\displaystyle D} wel, maar C {\displaystyle C} niet. C {\displaystyle C} is hier altijd gelijk aan 0.

Omdat C = 0 {\displaystyle C=0} wordt de negatie aan de term toegevoegd. De eerste term wordt daarom A C ¯ . {\displaystyle A{\overline {C}}.}

In het groene kader is in elk veld A = 1 {\displaystyle A=1} en B = 0 , {\displaystyle B=0,} maar veranderen C {\displaystyle C} en D . {\displaystyle D.} De tweede term wordt daarom A B ¯ . {\displaystyle A{\overline {B}}.}

In het blauwe kader ten slotte is B = 1 , C = 1 , D = 0 {\displaystyle B=1,C=1,D=0} en verandert A {\displaystyle A} van waarde, zodat de derde term B C D ¯ {\displaystyle BC{\overline {D}}} is.

De volledige expressie wordt dus gegeven door

f ( A , B , C , D ) = A C ¯ + A B ¯ + B C D ¯ . {\displaystyle f(A,B,C,D)=A{\overline {C}}+A{\overline {B}}+BC{\overline {D}}.}

Men verifieert eenvoudig dat bijvoorbeeld

1 = f ( 0 , 1 , 1 , 0 ) = 0 × 0 + 0 × 0 + 1 × 1 × 1. {\displaystyle 1=f(0,1,1,0)=0\times 0+0\times 0+1\times 1\times 1.}

De inverse functie kan gevonden worden door de nullen te omcirkelen in plaats van de enen.

Zie ook

  • venndiagram
  • Espresso heuristische logische minimalisator

Externe links

  • Opensource-software voor Karnaugh-diagrammen
Mediabestanden
Zie de categorie Karnaugh maps van Wikimedia Commons voor mediabestanden over dit onderwerp.