Carnot kartta

Carnot-kartta ( Carnot- kuutio , Carnot- kaavio , Veitch-kartta ) on graafinen tapa esittää Boolen funktioita niiden kätevän ja visuaalisen manuaalisen minimoinnin tarkoituksena [1] .

Se on yksi vastaavista tavoista kuvata tai määrittää loogisia funktioita yhdessä totuustaulukon tai Boolen algebralausekkeiden kanssa . Karnaugh-kartan muunnos totuustaulukoksi tai Boolen kaavaksi ja päinvastoin suoritetaan alkeisalgoritmilla.

Tällaisen loogisen funktion esityksen mukavuus ja selkeys johtuu siitä, että loogiset termit, joihin voidaan soveltaa pareittain epätäydellisen liimauksen ja alkeisabsorption operaatioita, on ryhmitelty Carnot-kartassa visuaalisesti ilmeisiksi suorakaiteen muotoisiksi taulukoiksi, jotka sisältävät samat arvot (nollat ​​ja ykköset) soluissaan.

Karnaugh-karttoja voidaan pitää kehityksenä n - ulotteisen Boolen kuution tasolle , ja tämän hyperkuution ulottuvuus on sama kuin esitettävän funktion muuttujien lukumäärä, ja jokainen hyperkuution kärki vastaa yksi yhteen yksi Karnaugh-kartan solu. Graafisesti Karnaughin kartta on kuvattu suorakulmiona tai neliöinä soluista, joiden lukumäärä on yhtä suuri kuin , ja mitkä tahansa kaksi vierekkäistä solua pysty- tai vaakasuunnassa tai toisin sanoen von Neumannin naapurustossa kuvaavat termejä, jotka eroavat vain yhden muuttujan osalta. - loogisella negaatiolla ja ilman loogista kieltämistä. Vierekkäin ovat myös ensimmäinen ja viimeinen rivi, taulukon vasen ja oikea sarake, joten Carnot-taulukko on itse asiassa loogisen hyperkuution kehitys toroidin pinnalle . Samalle funktiolle on mahdollista rakentaa erilaisia ​​karttoja, jotka täyttävät ehdon: solujen geometrinen naapuruus von Neumannin merkityksessä on termien looginen lähialue - eli naapurisolujen termien Hamming-etäisyyden ollessa yhtä suuri 1. Mikä tahansa näistä taulukoista on yhtä kätevä funktion minimoimiseen, mutta yleensä muuttujat Karnaugh-kartan riveissä ja sarakkeissa on järjestetty refleksiivisen Gray-koodin mukaan muistin ja selkeyden vuoksi.

Historia

Karnaugh-kartat esitteli vuonna 1952 Edward V. Veitch [2] ja Bell Labsin fyysikko Maurice Karnaugh paransi niitä vuonna 1953 yksinkertaistaakseen digitaalisten järjestelmien suunnittelua [ 3] .

Perusperiaatteet

Karnaugh-kartta on erityisellä tavalla muotoiltu totuustaulukko, joka sopii visuaaliseen manuaaliseen minimointiin. Minimoimisen tulos on joko disjunktiivinen normaalimuoto (DNF) tai konjunktiivinen normaalimuoto (CNF). Ensimmäisessä tapauksessa työ tehdään kartan soluilla, joissa on ykkösiä, toisessa - soluilla, joissa on nollia. Alkuperäisessä kartassa, kuten myös totuustaulukossa, jokainen yksikkö vastaa yhtä täydellisen disjunktiivisen normaalimuodon (PDNF) termiä ja jokainen nolla vastaa yhtä täydellisen konjunktiivisen normaalimuodon (CKNF) termiä .

Läheiset ykkösten tai nollien ryhmät Karnaugh-kartalla yhdistetään suorakaiteen muotoisiksi alueiksi tai "liimauksiksi" solujen koon mukaan. Kukin tällainen ryhmä lopullisessa loogisessa kaavassa vastaa yhtä termiä (jos oletetaan, että looginen " TAI " -operaatio on "summaus" ja looginen " AND " -operaatio on "kerto", niin yksi termi vastaa yhtä termiä DNF:n tapauksessa tai yhteen tekijään CNF:n tapauksessa) sisältävät muuttujat, tätä ryhmittelyä kutsutaan yleensä "liimaukseksi" [4] . Näin ollen kartan kanssa työskentely tarkoittaa useiden ykkösten (nollien) optimaalisen joukon valitsemista ja niiden muuntamista loogiseksi lausekkeeksi.

Minimoimisen periaatteet

Päämenetelmä SDNF: nä tai SKNF :nä esitettyjen loogisten funktioiden minimoimiseksi on pareittainen epätäydellinen liimaus ja alkeisabsorptio. Pariliimaus suoritetaan kahden saman muuttujan sisältävän termin välillä, joiden esiintymiset (suora ja käänteinen) ovat samat kaikille muuttujille yhtä lukuun ottamatta. Tässä tapauksessa kaikki muuttujat yhtä lukuun ottamatta voidaan ottaa pois suluista ja yhden suluissa olevan muuttujan suorat ja käänteiset esiintymät voidaan absorboida. Esimerkiksi:

Samoin CNF:lle:

Absorption mahdollisuus seuraa ilmeisistä yhtäläisyyksistä:

Näin ollen päätehtävä SDNF:n ja SKNF:n minimoinnissa on liimaukseen sopivien termien etsiminen myöhemmän absorption kanssa, mikä voi olla monien loogisten muuttujien funktioille melko vaikea tehtävä. Karnaugh-kartat tarjoavat visuaalisen tavan löytää tällaisia ​​termejä.

N muuttujan loogiset funktiot , jotka esitetään muodossa SDNF tai SKNF, voivat sisältää vain erilaisia ​​termejä. Kaikki nämä alkeistermit voidaan esittää joksikin rakenteeksi, joka topologisesti vastaa -ulotteista kuutiota, ja mitkä tahansa kaksi reunalla yhdistettyä termiä sopivat liimaukseen ja absorptioon.

Kuvassa on yksinkertainen totuustaulukko kahden muuttujan funktiolle, tätä taulukkoa vastaava 2-ulotteinen kuutio (neliö) sekä 2-ulotteinen kuutio SDNF-jäsenten merkinnöillä ja vastaava taulukko termien ryhmittelyä varten:

Kolmen muuttujan funktion tapauksessa on käsiteltävä kolmiulotteista kuutiota. Tämä on monimutkaisempaa ja vähemmän visuaalista, mutta teknisesti mahdollista. Esimerkkinä kuvassa on totuustaulukko kolmen muuttujan Boolen funktiolle ja sitä vastaavalle kuutiolle.

Kuten kuvasta voidaan nähdä, kolmiulotteisessa tapauksessa monimutkaisemmat termien konfiguraatiot ovat mahdollisia. Esimerkiksi neljä kuution samalle pinnalle kuuluvaa termiä yhdistetään yhdeksi termiksi kahden muuttujan absorptiolla:

Yleisessä tapauksessa voidaan sanoa, että hyperkuution tuohon -ulotteiseen pintaan kuuluvat termit liimataan yhdeksi termiksi, kun taas muuttujat absorboituvat.

Työn yksinkertaistamiseksi useiden muuttujien Boolen funktioiden kanssa ehdotettiin seuraavaa kätevää temppua. Kuutio, joka on termirakenne, avataan tasolle kuvan osoittamalla tavalla. Siten on mahdollista esittää Boolen funktioita useammalla kuin kahdella muuttujalla tasaisen taulukon muodossa. On syytä muistaa, että taulukon termikoodien järjestys (00 01 11 10) ei vastaa leksikografisessa järjestyksessä (00 01 10 11) kirjoitettujen binäärilukujen järjestystä ja äärimmäisissä sarakkeissa sijaitsevien solujen järjestystä. pöydät ovat vierekkäin.

Vastaavasti voit työskennellä useiden muuttujien loogisten funktioiden kanssa.

Carnot-karttojen esitystyylit

Perinteisesti Karnot-karttojen esittämiseen on useita tyylejä. Usein otsikko ja vasen sarake sisältävät muuttujien numeeriset arvot, aivan kuten ne näkyvät totuustaulukossa (a). Tässä tyylissä on ilmeisintä, että Karnaugh-kartta on erikoinen totuustaulukon esityksen muoto. Karnaugh-kartan solut seuraavat kuitenkin hieman eri järjestyksessä kuin totuustaulukon rivit, koska totuustaulukossa on tapana järjestää rivit binäärilukujen leksikografisessa kasvussa. Esimerkiksi neljän muuttujan Karnaugh-kartassa totuustaulukon karttasolujen ja rivien järjestys on sama, jos kartan kolmas-neljäs sarake ja kolmas-neljäs rivit vaihdetaan.

Jokainen totuustaulukon rivi ja jokainen Karnaugh-kartan solu vastaa yhtä DNF:n termiä, joten muuttujien (suorat ja käänteiset) esiintymiset voidaan ilmoittaa kartan otsikossa ja vasemmassa sarakkeessa, kuten ne näyttävät SDNF:ssä ( b). Tästä esitystyylistä on olemassa lyhennetty versio, jossa apurivit ja -sarakkeet osoittavat, missä muodossa, suoraan tai käänteisesti, kukin muuttuja esitetään vastaavalla kartan rivillä tai sarakkeessa (c).

Lopuksi joissakin tapauksissa viivat osoittavat sarakkeita ja rivejä kartan reunoilla, joissa vastaava muuttuja on esitetty suorassa muodossa (d).

a) b) c) d)

Kuinka työskennellä Karnot-kartan kanssa

Alkutieto Karnaugh-kartan kanssa työskentelemistä varten on minimoidun funktion totuustaulukko . Totuustaulukko sisältää täydelliset tiedot loogisesta funktiosta, joka antaa sen arvot kaikille mahdollisille 2 n syöttömuuttujien sarjalle X 1 … X n . Karnaughin kartta sisältää myös 2 n solua, joista jokainen liittyy ainutlaatuiseen syöttömuuttujien joukkoon X 1 … X n . Siten totuustaulukon ja Karnaugh-kartan välillä on yksi yhteen vastaavuus, ja Karnaughin karttaa voidaan pitää sopivasti muotoiltuna totuustaulukkona.

Tässä osiossa käytetään esimerkkinä kuvan 2 totuustaulukon antamaa neljän muuttujan funktiota. 2a. Carnot-kartta samalle funktiolle on esitetty kuvassa. 2b.

Liimausperiaatteet

Karnaugh-kartan suorakaiteen muotoista aluetta, joka koostuu 2 k :sta identtisestä arvosta (ykkösiä tai nollia, riippuen siitä, minkä muodon haluat saada), kutsutaan liimaukseksi , ryhmäksi tai alueeksi . Kaikkien nollien (ykkösten) jakautumista Carnot-kartassa liimauksille kutsutaan peitoksi . Boolen funktion minimoimiseksi on tarpeen rakentaa Carnot-kartan peitto niin, että liimausten määrä on minimaalinen ja jokaisen liimauksen koko on mahdollisimman suuri. Tätä varten sinun on noudatettava seuraavia sääntöjä.

a) b)

Kortit, joilla on epävarma merkitys

Käytännössä on tapauksia, joissa Boolen funktiota ei ole määritelty joillekin argumenttien arvoille. Esimerkiksi Boolen funktio kuvaa digitaalista laitetta, jolle jotkin tulosignaalien yhdistelmät ovat fyysisesti mahdottomia, tai joillekin tulosignaalien arvoille laitteen reaktiolla ei ole väliä. Tällaisissa tapauksissa puhutaan "epävarmista ehdoista", ja tällaista funktiota kutsutaan "osittain määritellyksi" tai yksinkertaisesti "osittaiseksi" [5] .

Kuvassa on digitaalinen laite F , jossa on neljä binaarituloa . Tulosignaalit voivat olla piirissä toimivien antureiden lukemia ja siksi niillä on vain kaksi arvoa - "on" (1) ja "off" (0). Oletetaan, että laitteen suunnitteluominaisuuksista johtuen 2. ja 4. anturi eivät voi toimia samanaikaisesti, eli signaalien yhdistäminen on fyysisesti mahdotonta. Tässä tapauksessa Karnot-kartan neljän solun funktion arvolla ei ole merkitystä, mikä näkyy ehdollisesti symbolilla "×".

Tällaisia ​​soluja voidaan mielivaltaisesti sisällyttää mihin tahansa liimaukseen, eikä niitä myöskään saa sisällyttää mihinkään liimaukseen, toisin sanoen ne voidaan valinnaisesti määritellä 1:ksi tai 0:ksi [5] .

Kartan muuntaminen kaavaksi

Kun kaikki Karnaugh-kartan liimaukset on määritetty, tuloksena oleva Karnaugh-kartta on muutettava kaavaksi. Näin tehdessään he noudattavat seuraavia periaatteita:

Kuvaus

Karnaugh-kartta voidaan rakentaa mille tahansa määrälle muuttujia, mutta on kätevää työskennellä enintään viiden muuttujan kanssa. Pohjimmiltaan Karnaugh-kartta on totuustaulukko, joka esitetään matriisina 2-ulotteisessa muodossa.

Jokainen tämän kartan solu vastaa yhtä riviä klassisessa totuustaulukossa ja on merkitty rivillä muuttujia inversioiden kanssa ja ilman. Anna esimerkiksi totuustaulukkoon 4 muuttujan funktiolle yksi riveistä näyttää tältä: 0 1 1 0 | 1, niin tätä riviä vastaavalla Karnaugh-kartan solulla on nimi ja tähän soluun laitetaan 1. Karnaugh-kartan solujen nimien ilmaisu suoritetaan yleensä ylimääräisellä rivillä ylhäällä ja lisäsarakkeella vasemmalla .

On oleellista, että Carnot-kartassa naapurisoluilla on välttämättä naapurikoodit Hamming -etäisyyden merkityksessä, eli Hamming-etäisyys naapurisolujen välillä on yhtä suuri kuin 1, ja eroavat vain yhden tilassa - inversiolla tai ilman. ja vain yksi muuttujista. Naapurisolut ovat vierekkäin vierekkäisiä soluja, myös vasemman ja oikeanpuoleisen sarakkeen soluja sekä ensimmäisen ja viimeisen rivin soluja pidetään naapurisoluina. Näin ollen Carnot-kartta tasossa vastaa topologisesti kolmiulotteisen toruksen pintaa tai hypertoruksen pintaa avaruudessa, jonka ulottuvuus 1 on suurempi kuin vastaavan moniulotteisen Karnot-kartan ulottuvuus.

Koska loogisen funktion muuttujien permutaatio ei muuta itse funktiota, eli esimerkiksi tai mikä on sama, totuustaulukon muuttujien sarakkeiden permutaatio ei muuta funktiota, vaihtoehtoja on useita totuustaulukon näyttämiseen Karnaugh-kartalla samalla kun säilytetään solujen "naapuruus". Mutta käytännössä Karnaugh-kartta täytetään useimmiten käyttämällä inkrementaalista Grey-koodia rivien ja sarakkeiden osoittamiseksi. Tämä lähestymistapa takaa Karnot-kartan luomisen välttäen subjektiivisia virheitä.

Kun kartta on täytetty, syötetään rivin ja sarakkeen leikkauskohtaan vastaava arvo totuustaulukosta - 0 tai 1. Kartan täytön jälkeen aloitetaan minimointi.

Jos on tarpeen saada minimi DNF , niin Kartassa otetaan huomioon vain ne solut, jotka sisältävät ykkösiä, jos tarvitaan CNF , otetaan huomioon ne solut, jotka sisältävät nollia. Itse minimointi suoritetaan seuraavien sääntöjen mukaisesti (esimerkiksi DNF).

  1. Yhdistämme vierekkäiset ykköset sisältävät solut alueeksi siten, että yksi alue sisältää ( kokonaisluku = 0 ... ) soluja (muista, että äärimmäiset rivit ja sarakkeet ovat vierekkäin), alueella ei saa olla nollia sisältäviä soluja;
  2. Alueen on oltava symmetrinen akselin (akselien) kanssa (akselit sijaitsevat joka neljäs solu);
  3. Muut kuin vierekkäiset alueet, jotka sijaitsevat symmetrisesti akselin (akselien) suhteen, voidaan yhdistää yhdeksi;
  4. Alueen tulee olla mahdollisimman suuri ja alueiden lukumäärän mahdollisimman pieni;
  5. Alueet voivat olla päällekkäisiä;
  6. Saatavilla on useita peittovaihtoehtoja.

Seuraavaksi otetaan ensimmäinen alue ja katsotaan mitkä muuttujat eivät muutu tällä alueella, kirjoitetaan näiden muuttujien konjunktio ; jos muuttumaton muuttuja on nolla, aseta inversio sen päälle . Otamme seuraavan alueen, teemme samoin kuin ensimmäiselle ja niin edelleen kaikille alueille. Alueiden konjunktiot yhdistetään disjunktiolla .
Esimerkiksi (Mapsissa 2 muuttujalle):

CNF:ssä kaikki on sama, vain tarkastelemme soluja, joissa on nollia, yhdistämme muuttumattomat muuttujat saman alueen sisällä disjunktioiksi (inversiot lasketaan yksikkömuuttujien päälle) ja alueiden disjunktiot yhdistetään konjunktioksi. Tämä täydentää minimoinnin. Joten kuvan Karnot-kartalle. 1, lauseke DNF-muodossa näyttää tältä:

CNF-muodossa:

Voit myös vaihtaa DNF:stä CNF:ään ja takaisin De Morganin lakien avulla .

Esimerkkejä

Esimerkki 1

Poika Kolyalla on äiti, isä, isoisä ja isoäiti. Kolya menee kävelylle kadulle, jos ja vain, jos vähintään kaksi sukulaista sen sallii.

Lyhytyyden vuoksi merkitään Koljan sukulaisia ​​kirjaimin:
äiti - X1
isä - X2
isoisä - X3
isoäiti - X4

Sovitaan, että sukulaisten suostumus on yksi, erimielisyys nolla. Mahdollisuus lähteä kävelylle merkitään kirjaimella f, Kolja lähtee kävelylle - f = 1, Kolya ei mene kävelylle - f = 0.
Tehdään totuustaulukko:

Piirretään totuustaulukko uudelleen 2-ulotteisessa muodossa:

Järjestetään sen rivit ja sarakkeet uudelleen Gray-koodin mukaisesti (viimeinen ja toiseksi viimeinen sarake vaihdetaan). Vastaanotettu Karnot-kortti:

Täytetään se totuustaulukon arvoilla (ensimmäinen rivi ei vastaa totuustaulukkoa, koska f=0 ja kävellä ei ole lupaa):

Minimoimme sääntöjen mukaisesti:

  1. Kaikki alueet sisältävät 2^n solua;
  2. Koska Karnaughin kartta on neljässä muuttujassa, akselit sijaitsevat kartan reunoilla eivätkä ne ole näkyvissä (katso lisätietoja esimerkistä 5 muuttujan kartasta );
  3. Koska Karnaughin kartta on neljässä muuttujassa, kaikki alueet symmetrisesti akseleihin nähden ovat vierekkäin (katso lisätietoja esimerkistä Maps in 5 muuttuja );
  4. Alueet S3, S4, S5, S6 ovat mahdollisimman suuria;
  5. Kaikki alueet leikkaavat (valinnainen);
  6. Tässä tapauksessa on vain yksi järkevä vaihtoehto.

Nyt saadun minimi-DNF:n mukaan on mahdollista rakentaa looginen piiri :

Disjunktiofunktiota toteuttavan kuuden tulon OR-elementin puuttuessa jouduttiin kaskadoimaan viiden ja kahden tulon elementit (D7, D8).


Tehdään min. CNF:



Katso myös

Muistiinpanot

  1. Givone D. Rosser R. (1983), s. 67-76.
  2. Veitch E. W. (toukokuu 1952).
  3. Karnaugh M. (marraskuu 1953).
  4. 1 2 Givone D. Rosser R. (1983), s. 69.
  5. 1 2 Givone D. Rosser R. (1983), s. 75.

Lähteet

Linkit

Ohjelmisto

Video