Algoritmus Quine – McCluskey - Quine–McCluskey algorithm

The Algoritmus Quine – McCluskey (QMC), také známý jako metoda hlavních implikantů, je metoda používaná pro minimalizace z Booleovské funkce který vyvinul Willard V. Quine v roce 1952[1][2] a prodlouženo o Edward J. McCluskey v roce 1956.[3] Obecně tento přístup logik již prokázal Hugh McColl v roce 1878,[4][5][6] bylo prokázáno Archiem Blakem v roce 1937,[7][8][9][6] a byl znovuobjeven Edwardem W. Samsonem a Burtonem E. Millsem v roce 1954[10][6] a Raymond J. Nelson v roce 1955.[11][6] Také v roce 1955 Paul W. Abrahams a John G. Nordahl[12] stejně jako Albert A. Mullin a Wayne G. Kellner[13][14][15][16] navrhl desítkovou variantu metody.[17][14][15][16][18][19][20][21]
Algoritmus Quine – McCluskey je funkčně shodný s Karnaughovo mapování, ale tabulkový tvar umožňuje jeho efektivnější použití v počítačových algoritmech a také poskytuje deterministický způsob kontroly, zda bylo dosaženo minimální formy booleovské funkce. Někdy se jí říká tabelační metoda.
Metoda zahrnuje dva kroky:
- Nalezení všech hlavní implikanti funkce.
- Použijte tyto hlavní implikanty v a primární implicitní graf najít základní primární implikátory funkce, stejně jako další primární implikanty, které jsou nezbytné k pokrytí funkce.
Složitost
Ačkoli praktičtější než Karnaughovo mapování při práci s více než čtyřmi proměnnými má algoritmus Quine – McCluskey také omezený rozsah použití, protože problém řeší to NP-kompletní.[22][23][24] The provozní doba algoritmu Quine – McCluskey roste exponenciálně s počtem proměnných. Pro funkci n proměnných může být počet hlavních implikantů až 3nln (n), např. pro 32 proměnných může být více než 534 × 1012 hlavní implikanti. Funkce s velkým počtem proměnných musí být minimalizovány s potenciálně neoptimálními heuristický metody, z nichž Minimalizátor heuristické logiky espressa byl de facto standardem v roce 1995.[potřebuje aktualizaci ][25]
Druhý krok algoritmu představuje řešení nastavit problém s krytem;[26] NP-tvrdé instance tohoto problému mohou nastat v tomto kroku algoritmu.[27][28]
Příklad
Vstup
V tomto příkladu je vstup booleovská funkce ve čtyřech proměnných, který se hodnotí na na hodnotách a , vyhodnotí neznámou hodnotu dne a a do všude jinde (kde jsou tato celá čísla pro vstup interpretována v binární formě pro stručnost notace). Vstupy, které se vyhodnotí se nazývají „mintermy“. Všechny tyto informace zakódujeme písemně
Tento výraz říká, že výstupní funkce f bude 1 pro mintermy a (označeno výrazem „m“) a že nás nezajímá výstup pro a kombinace (označené výrazem „d“).
Krok 1: Hledání hlavních implikantů
Nejprve napíšeme funkci jako tabulku (kde 'x' znamená nestarám se):
A B C D F m0 0 0 0 0 0 m1 0 0 0 1 0 m2 0 0 1 0 0 m3 0 0 1 1 0 m4 0 1 0 0 1 m5 0 1 0 1 0 m6 0 1 1 0 0 m7 0 1 1 1 0 m8 1 0 0 0 1 m9 1 0 0 1 X m10 1 0 1 0 1 m11 1 0 1 1 1 m12 1 1 0 0 1 m13 1 1 0 1 0 m14 1 1 1 0 X m15 1 1 1 1 1
Jeden může snadno vytvořit kanonický součet produktů výraz z této tabulky, jednoduše sečtením mintermy (vynechat nezáleží na tom ) kde se funkce vyhodnotí jako jedna:
- FABECEDA = A'BC'D '+ AB'C'D' + AB'CD '+ AB'CD + ABC'D' + ABCD.
což není minimální. Abychom to optimalizovali, všechny mintermy, které se vyhodnotí jako jedna, jsou nejprve umístěny v minterm tabulce. Do této tabulky jsou také přidány termíny, které se nestarají (názvy v závorkách), takže je lze kombinovat s mintermy:
Číslo
1 sMinterm Binární
Zastoupení1 m4 0100 m8 1000 2 (m9) 1001 m10 1010 m12 1100 3 m11 1011 (m14) 1110 4 m15 1111
V tomto okamžiku lze začít kombinovat mintermy s jinými mintermy. Pokud se dva výrazy liší pouze o jednu číslici, lze tuto číslici nahradit pomlčkou, která označuje, že na číslici nezáleží. Výrazy, které již nelze kombinovat, jsou označeny hvězdičkou (*). Například 1000
a 1001
lze kombinovat dát 100-
, což znamená, že obě mintermy znamenají, že první číslice je 1
a další dva jsou 0
.
Číslo
1 sMinterm 0-kostka Implikátoři velikosti 2 1 m4 0100 m (4,12) -100* m8 1000 m (8,9) 100- — — m (8,10) 10-0 — — m (8,12) 1-00 2 m9 1001 m (9,11) 10-1 m10 1010 m (10,11) 101- — — m (10,14) 1-10 m12 1100 m (12,14) 11-0 3 m11 1011 m (11,15) 1-11 m14 1110 m (14,15) 111- 4 m15 1111 —
Při přechodu z velikosti 2 na velikost 4 zacházejte -
jako třetí bitová hodnota. Například, -110
a -100
lze kombinovat dát -1-0
, jak může -110
a -11-
dát -11-
, ale -110
a 011-
nemůže, protože -110
je naznačeno 1110
zatímco 011-
není. (Trik: Spojte se -
za prvé.)
Číslo
1 sMinterm 0-kostka Implikátoři velikosti 2 Implikátoři velikosti 4 1 m4 0100 m (4,12) -100* m (8,9,10,11) 10--* m8 1000 m (8,9) 100- m (8,10,12,14) 1--0* — — m (8,10) 10-0 — — — m (8,12) 1-00 — 2 m9 1001 m (9,11) 10-1 m (10,11,14,15) 1-1-* m10 1010 m (10,11) 101- — — — m (10,14) 1-10 — m12 1100 m (12,14) 11-0 — 3 m11 1011 m (11,15) 1-11 — m14 1110 m (14,15) 111- — 4 m15 1111 — —
Poznámka: V tomto příkladu nelze dále kombinovat žádný z výrazů v tabulce implikantů velikosti 4. Obecně by tento proces měl pokračovat (velikosti 8, 16 atd.), Dokud nebude možné kombinovat další výrazy.
Krok 2: Připravte implicitní graf
Žádný z těchto výrazů nelze kombinovat dále, takže v tomto okamžiku vytvoříme základní primární implikativní tabulku. Podél strany jsou hlavní implikátoři, kteří byli právě vygenerováni, a podél horní části mintermy specifikované dříve. Termíny, které se nestarají, nejsou umístěny nahoře - jsou z této části vynechány, protože nejsou nezbytnými vstupy.
4 8 10 11 12 15 ⇒ A B C D m (4,12) * ⇒ — 1 0 0 m (8,9,10,11) ⇒ 1 0 — — m (8,10,12,14) ⇒ 1 — — 0 m (10,11,14,15) * ⇒ 1 — 1 —
Abychom našli základní primární implikanty, běžíme podél horní řady. Musíme hledat sloupce pouze s jedním „✓“. Pokud má sloupec pouze jeden znak „✓“, znamená to, že minterm lze pokrýt pouze jedním hlavním implikantem. Tento hlavní implikant je nezbytný.
Například: v prvním sloupci s minterm 4 je pouze jedno „✓“. To znamená, že m (4,12) je zásadní. Vedle toho tedy umístíme hvězdu. Minterm 15 má také pouze jedno „✓“, takže m (10,11,14,15) je také nezbytné. Nyní jsou pokryty všechny sloupce s jedním „✓“.
Druhý hlavní implikant může být „krytý“ třetím a čtvrtým a třetí primární implikant může být „pokrytý“ druhým a prvním, a žádný z nich tedy není nezbytný. Pokud je primární implikant zásadní, pak je podle očekávání nutné jej zahrnout do minimalizované booleovské rovnice. V některých případech základní hlavní implikátoři nepokrývají všechny mintermy, v takovém případě lze použít další postupy pro redukci grafů. Nejjednodušší „další postup“ je pokus a omyl, ale je to systematičtější Petrickova metoda. V aktuálním příkladu základní prvočíselné implikanty nezpracovávají všechny mintermy, takže v tomto případě lze základní implikáty kombinovat s jedním ze dvou nepodstatných, čímž se získá jedna rovnice:
- FABECEDA = BC'D '+ AB' + AC[29]
nebo
- FABECEDA = BC'D '+ AD' + AC
Obě tyto konečné rovnice jsou funkčně ekvivalentní původní, podrobné rovnici:
- FABECEDA = A'BC'D '+ AB'C'D' + AB'C'D + AB'CD '+ AB'CD + ABC'D' + ABCD '+ ABCD.
Viz také
- Blake kanonická forma[7][6]
- Buchbergerův algoritmus - analogický algoritmus pro algebraickou geometrii
- Petrickova metoda
- Kvalitativní srovnávací analýza (QCA)
Reference
- ^ Quine, Willard Van Orman (Říjen 1952). "Problém zjednodušení funkcí pravdy". Americký matematický měsíčník. 59 (8): 521–531. doi:10.2307/2308219. JSTOR 2308219.
- ^ Quine, Willard Van Orman (Listopad 1955). "Způsob zjednodušení funkcí pravdy". Americký matematický měsíčník. 62 (9): 627–631. doi:10.2307/2307285. hdl:10338.dmlcz / 142789. JSTOR 2307285.
- ^ McCluskey Jr., Edward Joseph (Listopad 1956). „Minimalizace booleovských funkcí“. Technický deník Bell System. 35 (6): 1417–1444. doi:10.1002 / j.1538-7305.1956.tb03835.x. hdl:10338.dmlcz / 102933. Citováno 2014-08-24.
- ^ McColl, Hugh (1878-11-14). „Počet ekvivalentních výpisů (třetí příspěvek)“. Proceedings of the London Mathematical Society. s1-10 (1): 16–28. doi:10.1112 / plms / s1-10.1.16.
- ^ Ladd, Christine (1883). "Na algebře logiky". v Peirce, Charles Sanders (vyd.). Studie v logice. Boston, USA: Little, Brown & Company. s. 17–71, 23.
[…] Pokud redukce [výrazu na nejjednodušší formu] není zřejmá, může mi to pomoci tím, že vezmeme negativ výrazu, zredukujeme ho a poté jej vrátíme do pozitivní formy. […]
- ^ A b C d E Brown, Frank Markham (listopad 2010) [2010-10-27]. „McColl a minimalizace“. Dějiny a filozofie logiky. Taylor & Francis. 31 (4): 337–348. doi:10.1080/01445340.2010.517387. ISSN 1464-5149. Archivováno od původního dne 2020-04-15. Citováno 2020-04-15.
- ^ A b Blake, Archie (1938) [1937]. Kanonické výrazy v booleovské algebře (Dizertační práce) (Litograficky vydáno). Chicago, Illinois, USA: Knihovny University of Chicago. str. 36.
[…] Tato metoda byla známa Peirce a jeho studenti […] Je zmíněn na několika místech ve studiích v logice, členy Univerzita Johna Hopkinse, 1883 […]
(ii + 60 stránek) - ^ Blake, Archie (listopad 1932). "Kanonické výrazy v booleovské algebře". Bulletin of the American Mathematical Society. Abstrakty příspěvků: 805.
- ^ Blake, Archie (červen 1938). "Opravy Kanonické výrazy v booleovské algebře". The Journal of Symbolic Logic. Sdružení pro symbolickou logiku. 3 (2): 112–113. doi:10.2307/2267595. ISSN 0022-4812. JSTOR 2267595.
- ^ Samson, Edward Walter; Mills, Burton E. (duben 1954). Minimalizace obvodu: Algebra a algoritmy pro nové booleovské kanonické výrazy. Bedford, Massachusetts, USA: Air Force Cambridge Research Center. Technická zpráva AFCRC TR 54-21.
- ^ Nelson, Raymond J. (červen 1955). "Nejjednodušší normální funkce pravdy". The Journal of Symbolic Logic. Sdružení pro symbolickou logiku. 20 (2): 105–108. doi:10.2307/2266893. JSTOR 2266893. (4 stránky)
- ^ „Vítejte na pamětní stránce Johna„ Jacka “G Nordahla 14. června 1933 ~ 20. listopadu 2017 (věk 84)“. Pohřební ústav Jellison a kremační služby. Archivováno z původního dne 2020-05-05. Citováno 2020-05-05.
- ^ Mullin, Albert Alkins; Kellner, Wayne G. (1958). Napsáno na University of Illinois, Urbana, USA a oddělení elektrotechniky, Massachusetts Institute of Technology, Massachusetts, USA. „Test zbytků pro booleovské funkce“ (PDF). Transakce Illinois State Academy of Science (Výukové memorandum). Springfield, Illinois, USA. 51 (3–4): 14–19. S2CID 125171479. Archivováno (PDF) z původního dne 2020-05-05. Citováno 2020-05-05. [1] (6 stránek) (Pozn. V jeho kniha, Caldwell to datuje do listopadu 1955 jako učební memorandum. Vzhledem k tomu, Mullin datuje svou práci do roku 1958 v jiné dílo a Abrahams / Nordahl's třídní memorandum je také datováno listopad 1955, může to být chyba kopírování.)
- ^ A b Caldwell, Samuel Hawks (01.12.1958) [únor 1958]. "5.8. Operace používající desetinná místa". Napsáno ve Watertownu, Massachusetts, USA. Spínací obvody a logický design. 5. tisk, září 1963 (1. vyd.). New York, USA: John Wiley & Sons Inc. s. 162–169 [166]. ISBN 0-47112969-0. LCCN 58-7896.
[…] Je potěšením zaznamenat, že tato léčba je založena na práci dvou studentů během období, které studovali na Switching Circuits na Massachusetts Institute of Technology. Samostatně diskutovali o metodě a poté spolupracovali na přípravě memoranda o třídě: P. W. Abraham a J. G. Nordahl […]
(xviii + 686 stran) (Pozn. První hlavní pojednání o desítkové metodě v této knize je někdy zavádějícím způsobem označováno jako „Caldwellova desetinná tabulka“.) - ^ A b Mullin, Albert Alkins (1960-03-15) [1959-09-19]. Napsáno na University of Illinois, Urbana, USA. Fisher, Harvey I .; Ekblaw, George E .; Green, F. O .; Jones, Reece; Kruidenier, Francis; McGregor, John; Silva, Paul; Thompson, Milton (eds.). „Dvě aplikace teorie základních čísel“ (PDF). Transakce Illinois State Academy of Science. Springfield, Illinois, USA. 52 (3–4): 102–103. Archivováno (PDF) z původního dne 2020-05-05. Citováno 2020-05-05. [2][3][4] (2 stránky)
- ^ A b McCluskey Jr., Edward Joseph (Červen 1960). „Albert A. Mullin a Wayne G. Kellner. Test reziduí pro booleovské funkce. Transaction of Illinois State Academy of Science, sv. 51, č. 3 a 4, (1958), str. 14–19“. The Journal of Symbolic Logic (Posouzení). 25 (2): 185. doi:10.2307/2964263. JSTOR 2964263.
[…] Výsledky tohoto příspěvku jsou uvedeny v dostupnějších dokumentech rezervovat autor: S. H. Caldwell […]. V této knize autor připisuje zásluhy Mullin a Kellner pro vývoj manipulací s desetinnými čísly.
(1 stránka) - ^ Abrahams, Paul William; Nordahl, John „Jack“ G. (listopad 1955). Upravená procedura redukce quine – McCluskey (Memorandum o třídě). Oddělení elektrotechniky, Massachusetts Institute of Technology, Massachusetts, USA. (4 stránky) (Pozn. Některé zdroje uvádějí autory jako „P. W. Abraham " a "I. G. Nordahl „, název je také citován jako“Upravený postup redukce McCluskey – Quine ".)
- ^ Fielder, Daniel C. (prosinec 1966). "Snížení logických funkcí ve třídě". Transakce IEEE ve vzdělávání. IEEE. 9 (4): 202–205. Bibcode:1966ITEdu ... 9..202F. doi:10.1109 / TE.1966.4321989. eISSN 1557-9638. ISSN 0018-9359.
- ^ Kämmerer, Wilhelm (Květen 1969). „I.12. Minimierung Boolescher Funktionen“. Napsáno v Jeně v Německu. v Frühauf, Hans; Kämmerer, Wilhelm; Schröder, Kurz; Winkler, Helmut (eds.). Digitale Automaten - Theorie, Struktur, Technik, Programmieren. Elektronisches Rechnen und Regeln (v němčině). 5 (1. vyd.). Berlín, Německo: Akademie-Verlag GmbH. 98, 103–104. Licence č. 202-100 / 416/69. Objednávka číslo. 4666 ES 20 K 3. str. 98:
[…] 1955 wurde das Verfahren auf die bequemere dezimale Schreibweise umgestellt (P. W. Abraham a I. G. Nordahl v [Caldwell ]). […]
(Pozn. Existuje také druhé vydání z roku 1973.) - ^ Holdsworth, Brian; Woods, Clive (2002). „3.17 Desetinný přístup ke zjednodušení logické algebry Quine – McCluskey“. Návrh digitální logiky (4. vyd.). Knihy pro nováčky / Elsevierova věda. str. 65–67. ISBN 0-7506-4588-2. Citováno 2020-04-19.CS1 maint: ignorované chyby ISBN (odkaz) (519 stránek) [5]
- ^ Majumder, Alak; Chowdhury, Barnali; Mondal, Abir J .; Jain, Kunj (2015-01-30) [2015-01-09]. Vyšetřování metody Quine McCluskey: Nový přístup založený na desítkové manipulaci založený na minimalizaci booleovské funkce. 2015 Mezinárodní konference o elektronickém designu, počítačových sítích a automatickém ověřování (EDCAV), Shillong, Indie (konferenční příspěvek). Department of Electronics & Communication, Engineering National Institute of Technology, Arunachal Pradesh Yupia, India. str. 18–22. doi:10.1109 / EDCAV.2015.7060531. Archivováno z původního dne 2020-05-08. Citováno 2020-05-08. [6] (Pozn. Tato práce necituje dosavadní stav techniky o desítkových metodách.) (5 stran)
- ^ Masek, William J. (1979). Některé NP-kompletní sada pokrývající problémy. nepublikovaný.
- ^ Czort, Sebastian Lukas Arne (1999). Složitost minimalizace disjunktních vzorců normální formy (Diplomová práce). University of Aarhus.
- ^ Umans, Christopher; Villa, Tiziano; Sangiovanni-Vincentelli, Alberto Luigi (2006-06-05). "Složitost dvouúrovňové logické minimalizace". Transakce IEEE na počítačově podporovaném návrhu integrovaných obvodů a systémů. 25 (7): 1230–1246. doi:10.1109 / TCAD.2005.855944. S2CID 10187481.
- ^ Nelson, Victor P .; Nagle, H. Troy; Carroll, Bill D .; Irwin, J. David (1995). Analýza a návrh digitálního logického obvodu (2. vyd.). Prentice Hall. str. 234. ISBN 978-0-13463894-2. Citováno 2014-08-26.
- ^ Feldman, Vitaly (2009). „Tvrdost přibližné minimalizace dvoustupňové logiky a učení PAC s dotazy na členství“. Journal of Computer and System Sciences. 75: 13–25 (13–14). doi:10.1016 / j.jcss.2008.07.007.
- ^ Gimpel, James F. (1965). "Metoda pro výrobu booleovské funkce s libovolně předepsanou tabulkou implicitních implicitních hodnot". Transakce IEEE na počítačích. 14: 485–488. doi:10.1109 / PGEC.1965.264175.
- ^ Paul, Wolfgang Jakob (1974). „Boolesche Minimalpolynome und Überdeckungsprobleme“. Acta Informatica (v němčině). 4 (4): 321–336. doi:10.1007 / BF00289615. S2CID 35973949.
- ^ Logický pátek program
Další čtení
- Curtis, H. Allen (1962). „Kapitola 2.3. McCluskeyova metoda“. Nový přístup k návrhu spínacích obvodů. Série Bell Laboratories. Princeton, New Jersey, USA: D. van Nostrand Company, Inc. str. 90–160.
- Coudert, Olivier (říjen 1994). „Minimalizace logiky na dvou úrovních: přehled“ (PDF). Integrace, deník VLSI. 17–2 (2): 97–140. doi:10.1016/0167-9260(94)00007-7. ISSN 0167-9260. Archivováno (PDF) od původního dne 2020-05-10. Citováno 2020-05-10. (47 stránek)
- Jadhav, Vitthal; Buchade, Amar (08.03.2012). "Modifikovaná metoda Quine-McCluskey". arXiv:1203.2289 [cs.OH ]. (4 stránky)
- Crenshaw, Jack (2004-08-19). „Vše o Quine-McClusky“. embedded.com. Archivováno od původního dne 2020-05-10. Citováno 2020-05-10.
- Tomaszewski, Sebastian P .; Celik, Ilgaz U .; Antoniou, George E. (prosinec 2003) [2003-03-05, 2002-04-09]. ""Minimalizace booleovských funkcí na základě WWW " (PDF). International Journal of Applied Mathematics and Computer Science. 13 (4): 577–584. Archivováno (PDF) od původního dne 2020-05-10. Citováno 2020-05-10. [7][8] (7 stránek)
- Duşa, Adrian (01.10.2008) [září 2007]. "Matematický přístup k booleovskému problému minimalizace". Kvalita kvantita. 44: 99–113. doi:10.1007 / s11135-008-9183-x. S2CID 123042755. Číslo článku: 99 (2010). [9] (22 stránek)
- Duşa, Adrian (2007). „Enhancing Quine-McCluskey“ (PDF). Univerzita v Bukurešti. Archivováno (PDF) od původního dne 2020-05-12. Citováno 2020-05-12. (16 stránek) (pozn. QCA, otevřený zdroj, implementace založená na R používaná ve společenských vědách.)
externí odkazy
- Implementace algoritmu Quine-McCluskey s hledáním všech řešení autor: Frédéric Carpon.
- Karċma 3 Sada nástrojů logické syntézy včetně Karnaughových map, minimalizace Quine-McCluskey, BDD, pravděpodobností, výukového modulu a dalších. Laboratoře syntézy logických obvodů (LogiCS) - UFRGS, Brazílie.
- BFunc, Logické zjednodušovače logické logiky založené na QMC podporující až 64 vstupů / 64 výstupů (samostatně) nebo 32 výstupů (současně), António Costa
- Krajta Implementace Robert Dick, s optimalizovaná verze.
- Krajta Implementace pro symbolické snížení logických výrazů.
- Quinessence, implementace open source napsaná ve Free Pascal Marco Caminati.
- minBool implementace Andrey Popov.
- Applet QMC, applet pro podrobnou analýzu algoritmu QMC od Christiana Rotha
- C ++ implementace Program SourceForge.net C ++ implementující algoritmus.
- Perl modul autor: Darren M. Kulp.
- Tutorial Výukový program o Quine-McCluskey a Petrickově metodě.
- Petrick Implementace C ++ (včetně Petricka) na základě výše uvedeného tutoriálu.
- Program C. Program C založený na veřejné doméně na SourceForge.net.
- Úplně propracovaný příklad naleznete na adrese: http://www.cs.ualberta.ca/~amaral/courses/329/webslides/Topic5-QuineMcCluskey/sld024.htm
- Boolean Bot: Implementace JavaScriptu pro web: http://booleanbot.com/
- open source gui QMC minimalizátor
- Kódy počítačové simulace pro metodu Quine-McCluskey autor: Sourangsu Banerji.