www.wikidata.de-de.nina.az
Das Verfahren nach Quine und McCluskey QMCV nach Willard Van Orman Quine und Edward J McCluskey ist eine Methode um Boolesche Funktionen zu minimieren Der Kern des Verfahrens wurde bereits von Quine vollstandig beschrieben Die Verfeinerungen von McCluskey betreffen im Wesentlichen die praktische algorithmische Durchfuhrbarkeit Die Minimierung ist u a deshalb wichtig weil dadurch die hardwaretechnische Realisierung einfacher und daher kostengunstiger wird Der Vorteil dieses Verfahrens ist dass es sich verhaltnismassig leicht in ein Computerprogramm fassen und so mittels eines Computers ausfuhren lasst Das Verfahren benotigt im schlechtesten Fall exponentielle Laufzeit um eine minimale Losung zu finden Das Verfahren findet immer eine minimale Losung es ist jedoch moglich dass es noch andere gleichwertige Losungen gibt die nicht gefunden werden Da das zugrunde liegende Problem NP vollstandig ist gibt es unter der Annahme dass P NP gilt kein in diesem Sinne effizientes Verfahren Das Verfahren bezieht sich zunachst nur auf Funktionsdarstellungen in kanonischer disjunktiver Normalform KDNF Ausdrucke in konjunktiver Normalform KNF lassen sich jedoch ohne weiteres uber die Verneinung der betrachteten Funktion zunachst in eine DNF umwandeln dann wie unten beschrieben minimieren und schliesslich durch erneute Verneinung in eine KNF zurucktransformieren Inhaltsverzeichnis 1 Beschreibung des Verfahrens 1 1 Prinzip 1 2 Erstellen der kanonischen disjunktiven Normalform 1 3 Ermitteln der Primterme 1 4 Erstellen der Primtermtabelle 1 5 Dominanzprufung 1 5 1 Spaltendominanzprufung 1 5 2 Zeilendominanzprufung 1 6 Auswahl der Primterme 2 Beispiel 2 1 Darstellung als kanonische disjunktive Normalform 2 2 Ermitteln der Primterme 2 3 Erstellen der Primtermtabelle 2 4 Dominanzprufung 2 5 Auswahl der Primterme 2 6 Verknupfung der gewahlten Primterme 3 Anmerkung 4 Siehe auch 5 WeblinksBeschreibung des Verfahrens BearbeitenPrinzip Bearbeiten Das Grundprinzip des Quine McCluskey Verfahrens beruht auf der folgenden Eigenschaft von Konjunktionstermen Unterscheiden sich zwei durch Disjunktion verknupfte Konjunktionsterme nur durch die Negation einer einzigen Variablen so kann man diese beiden Terme verschmelzen und dabei die betreffende Variable entfernen Diese Eigenschaft erklart sich aus folgendem booleschen Zusammenhang x 1 x i x n x 1 x i x n displaystyle x 1 cdot ldots cdot x i cdot ldots cdot x n x 1 cdot ldots cdot overline x i cdot ldots cdot x n nbsp x 1 x i x i x n displaystyle x 1 cdot ldots cdot x i overline x i cdot ldots cdot x n nbsp x 1 x i 1 1 x i 1 x n displaystyle x 1 cdot ldots cdot x i 1 cdot 1 cdot x i 1 cdot ldots cdot x n nbsp x 1 x i 1 x i 1 x n displaystyle x 1 cdot ldots cdot x i 1 cdot x i 1 cdot ldots cdot x n nbsp In diesem Zusammenhang ist es zweckmassig eine Boolesche Funktion unter dem Aspekt der Mengenlehre zu betrachten Es werden hier nur vollstandig definierte Funktionen berucksichtigt Eine Boolesche Funktion ist als Menge von Konjunktionen aller unabhangigen Variablen darstellbar Dies entspricht den Funktionswerten der Wahrheitstabelle und ist die Gesamtmenge Fur n unabhangige Variablen betragt ihre Machtigkeit 2 n displaystyle 2 n nbsp Elemente Die Elemente werden hierbei auch Elementarkonjunktionen genannt Dies ist also ein einzelner Funktionswert Diese Menge teilt sich in zwei Teilmengen auf Ein Teil welcher die Funktion zur wahren Aussage macht und ein Teil welcher die Funktion nicht erfullt Bei Verwendung von 0 und 1 also die Teilmenge der 1 und die Teilmenge der 0 in der Wahrheitstabelle Eine Konjunktion ist eine Teilmenge dieser Gesamtmenge Es gibt 3 n displaystyle 3 n nbsp mogliche Konjunktionen inkl der Gesamtmenge selbst Ein Element der Gesamtmenge ist Element einer Konjunktion wenn die Belegung der in der Konjunktion enthaltenen Variablen mit den entsprechenden Werten des Elements Elementarkonjunktion die Konjunktion zur wahren Aussage macht Beispiel x 0 x 1 x 2 x 0 x 1 displaystyle x 0 cdot x 1 cdot overline x 2 in x 0 cdot x 1 nbsp x 0 x 1 x 2 x 0 x 1 displaystyle overline x 0 cdot x 1 cdot overline x 2 in x 0 cdot x 1 nbsp Erstellen der kanonischen disjunktiven Normalform Bearbeiten Das Quine McCluskey Verfahren geht nun von einer algebraischen Darstellung der Formel in kanonischer disjunktiver Normalform KDNF aus Eine solche KDNF besteht aus einer Disjunktion von Mintermen Eine andere Darstellung muss also zuerst in diese Form gebracht werden Da in diesem Schritt unter Umstanden bis zu 2 n displaystyle 2 n nbsp Terme erzeugt werden gibt es auch Varianten des Verfahrens die nur eine DNF statt einer KDNF benotigen wie z B die Resolventenmethode Ermitteln der Primterme Bearbeiten Alle Minterme werden jetzt nach aufsteigender Klasse sortiert in einer Tabelle aufgelistet Die Klasse einer Konjunktion ist die Anzahl der darin vorkommenden nicht negierten Variablen Man vergleicht nun alle Minterme benachbarter Klassen daraufhin ob sie sich paarweise um eine einzige Negation unterscheiden Ist dies der Fall so verschmilzt man die beiden Terme zu einem neuen Term der dann naturlich kein Minterm mehr ist und tragt ihn in eine zweite Tabelle ein Die beiden verwendeten Terme werden z B durch Abhaken gekennzeichnet sind aber auch weiterhin fur Vergleiche heranzuziehen Auf die verschmolzenen Terme wendet man das Verfahren rekursiv in mehreren Stufen so lange an bis keine weiteren Verschmelzungen mehr moglich sind Es ist darauf zu achten dass beide Terme Tabellenzeilen die gleichen Variablen enthalten Wahrend dieses Vorganges verbleiben einige Terme die nicht verschmolzen werden konnten Diese Terme bezeichnet man als Primterme bzw Primkonjunktionen Hierbei treten ab der zweiten Minimierungsstufe die gleichen Konjunktionen mehrfach auf sie sind jedoch nur einmal in die neue Tabelle einzutragen Erstellen der Primtermtabelle Bearbeiten Es ist durchaus moglich dass nicht alle Primterme benotigt werden Um herauszufinden welche Primterme man unbedingt benotigt erstellt man eine sogenannte Primtermtabelle Als Spaltenkopfe der Tabelle werden die Minterme verwendet Als Zeilenkopfe tragt man die Primterme ein Die einzelnen Zellen der Tabelle sind also Kreuzungspunkte bestimmter Minterme mit bestimmten Primtermen Man tragt nun immer dann eine Markierung in der jeweiligen Zelle ein wenn der Minterm Element des Primterms ist s u Dominanzprufung Bearbeiten Bei der Dominanzprufung werden obsolete Zeilen und Spalten ermittelt Spaltendominanzprufung Bearbeiten Die Spalten werden paarweise darauf verglichen ob nicht eine Spalte existiert in der die markierten Primterme eine Teilmenge der markierten Primterme der anderen Spalte sind Ist dies der Fall so kann die Spalte mit der Obermenge gestrichen werden denn es mussen alle Konjunktionen erfasst werden und daher ist die Konjunktion mit der Obermenge durch Auswahl der Konjunktion mit der Teilmenge ebenfalls erfasst Beispiel In einer Tabelle stehen u A die beiden Spalten K a P 1 P 2 P 4 displaystyle K a P 1 P 2 P 4 nbsp K b P 1 P 4 displaystyle K b P 1 P 4 nbsp Hier kann K a displaystyle K a nbsp gestrichen werden weil er K b displaystyle K b nbsp vollstandig dominiert K a displaystyle K a nbsp ist daher obsolet und wird ab jetzt nicht mehr berucksichtigt Zeilendominanzprufung Bearbeiten Jetzt vergleicht man die Zeilen Primterme der Tabelle paarweise ob nicht eine Zeile existiert in denen die markierten Minterme eine Teilmenge der markierten Minterme der anderen Zeile sind Ist dies der Fall so kann der Primterm mit der Teilmenge gestrichen werden denn man kann fur jede Markierung des gestrichenen Primterms den anderen Primterm als Ersatz nehmen Die Relation ist hier also genau umgekehrt als bei der Spaltendominanz Beispiel In einer Tabelle stehen u A die beiden Zeilen P a K 1 K 2 K 6 K 7 displaystyle P a K 1 K 2 K 6 K 7 nbsp P b K 1 K 2 displaystyle P b K 1 K 2 nbsp Hier kann P b displaystyle P b nbsp gestrichen werden weil er von P a displaystyle P a nbsp vollstandig dominiert wird P b displaystyle P b nbsp ist daher obsolet und wird ab jetzt nicht mehr berucksichtigt Diese beiden Prufungen werden solange abwechselnd wiederholt bis bei einer Prufung keine Zeile Spalte mehr gestrichen werden kann mindestens jedoch je einmal Auswahl der Primterme Bearbeiten Die verbleibenden Primterme muss man jetzt so auswahlen dass alle Minterme abgedeckt werden Hierfur kann es mehrere ggf gleichwertige Moglichkeiten geben Man wahlt dabei moglichst wenige und kleine Primterme da man ja eine optimierte Funktion erreichen mochte die schliesslich mit moglichst wenigen Schaltgattern technisch realisiert werden kann Beispiel BearbeitenEs folgt ein Beispiel um die Methode zu erklaren Darstellung als kanonische disjunktive Normalform Bearbeiten Wir gehen von einer Booleschen Funktion f displaystyle f nbsp mit vier Eingangsvariablen x 0 x 3 displaystyle x 0 dots x 3 nbsp aus deren kanonische disjunktive Normalform so aussieht f x 0 x 1 x 2 x 3 Y displaystyle f x 0 x 1 x 2 x 3 Y nbsp x 0 x 1 x 2 x 3 x 0 x 1 x 2 x 3 x 0 x 1 x 2 x 3 x 0 x 1 x 2 x 3 x 0 x 1 x 2 x 3 x 0 x 1 x 2 x 3 x 0 x 1 x 2 x 3 x 0 x 1 x 2 x 3 x 0 x 1 x 2 x 3 x 0 x 1 x 2 x 3 displaystyle begin matrix overline x 0 overline x 1 overline x 2 overline x 3 x 0 overline x 1 overline x 2 overline x 3 overline x 0 overline x 1 x 2 overline x 3 x 0 overline x 1 x 2 overline x 3 overline x 0 x 1 x 2 overline x 3 x 0 x 1 x 2 overline x 3 overline x 0 overline x 1 overline x 2 x 3 x 0 overline x 1 overline x 2 x 3 x 0 x 1 overline x 2 x 3 x 0 x 1 x 2 x 3 end matrix nbsp Die Variable m k displaystyle m k nbsp steht fur folgenden Konjunktionsterm wobei 0 k 2 4 1 displaystyle 0 leq k leq 2 4 1 nbsp ist Die Zahl k displaystyle k nbsp wird als Binarzahl z 0 z 1 z 2 z 3 displaystyle z 0 z 1 z 2 z 3 nbsp geschrieben Wenn z i 0 displaystyle z i 0 nbsp dann wird die negierte Variable x i displaystyle overline x i nbsp verwendet Wenn z i 1 displaystyle z i 1 nbsp dann wird die nicht negierte Variable x i displaystyle x i nbsp verwendet Daraus wird ein Konjunktionsterm gebildet Fur k 5 0101 2 displaystyle k 5 0101 2 nbsp zum Beispiel ist m 5 x 0 x 1 x 2 x 3 displaystyle m 5 x 0 land overline x 1 land x 2 land overline x 3 nbsp Daraus ergibt sich die Schreibweise Y m 0 m 1 m 4 m 5 m 6 m 7 m 8 m 9 m 11 m 15 displaystyle Y m 0 m 1 m 4 m 5 m 6 m 7 m 8 m 9 m 11 m 15 nbsp Ermitteln der Primterme Bearbeiten Die Auswahltabellen Die Ausgangstabelle Die erste Zusammenfassung ergibt Es durfen nur Zeilen zusammengefasst werden die die an den gleichen Positionen haben Ausserdem tauchen ab der zweiten Zusammenfassung also in der dritten Tabelle Konjunktionen doppelt auf welche aber nur einmal notiert werden Dritte ZusammenfassungTabelle 1 m x displaystyle m x nbsp x 3 displaystyle x 3 nbsp x 2 displaystyle x 2 nbsp x 1 displaystyle x 1 nbsp x 0 displaystyle x 0 nbsp OKm 0 displaystyle m 0 nbsp 0 0 0 0 m 1 displaystyle m 1 nbsp 0 0 0 1 m 4 displaystyle m 4 nbsp 0 1 0 0 m 8 displaystyle m 8 nbsp 1 0 0 0 m 5 displaystyle m 5 nbsp 0 1 0 1 m 6 displaystyle m 6 nbsp 0 1 1 0 m 9 displaystyle m 9 nbsp 1 0 0 1 m 7 displaystyle m 7 nbsp 0 1 1 1 m 11 displaystyle m 11 nbsp 1 0 1 1 m 15 displaystyle m 15 nbsp 1 1 1 1 Tabelle 2 m x m y displaystyle m x m y nbsp x 3 displaystyle x 3 nbsp x 2 displaystyle x 2 nbsp x 1 displaystyle x 1 nbsp x 0 displaystyle x 0 nbsp OKm 0 m 1 displaystyle m 0 m 1 nbsp 0 0 0 m 0 m 4 displaystyle m 0 m 4 nbsp 0 0 0 m 0 m 8 displaystyle m 0 m 8 nbsp 0 0 0 m 1 m 5 displaystyle m 1 m 5 nbsp 0 0 1 m 1 m 9 displaystyle m 1 m 9 nbsp 0 0 1 m 4 m 6 displaystyle m 4 m 6 nbsp 0 1 0 m 4 m 5 displaystyle m 4 m 5 nbsp 0 1 0 m 8 m 9 displaystyle m 8 m 9 nbsp 1 0 0 m 5 m 7 displaystyle m 5 m 7 nbsp 0 1 1 m 6 m 7 displaystyle m 6 m 7 nbsp 0 1 1 m 9 m 11 displaystyle m 9 m 11 nbsp 1 0 1 P1m 7 m 15 displaystyle m 7 m 15 nbsp 1 1 1 P2m 11 m 15 displaystyle m 11 m 15 nbsp 1 1 1 P3 Tabelle 3 m w m x m y m z displaystyle m w m x m y m z nbsp x 3 displaystyle x 3 nbsp x 2 displaystyle x 2 nbsp x 1 displaystyle x 1 nbsp x 0 displaystyle x 0 nbsp OKm 0 m 1 m 4 m 5 displaystyle m 0 m 1 m 4 m 5 nbsp 0 0 P4m 0 m 1 m 8 m 9 displaystyle m 0 m 1 m 8 m 9 nbsp 0 0 P5m 4 m 6 m 5 m 7 displaystyle m 4 m 6 m 5 m 7 nbsp 0 1 P6 Keine weiteren Zusammenfassungen moglich Dabei wird jede Zeile einer Klasse mit allen Zeilen der benachbarten Klasse auf Verschmelzbarkeit gepruft Falls eine Verschmelzung moglich ist werden die zu verschmelzenden Terme in die nachste Tabelle bzw in die nachste Zusammenfassung eingetragen Das genaue Vorgehen um von der Ausgangstabelle zur ersten Zusammenfassung zu gelangen kann der folgenden Tabelle entnommen werden x x3 x2 x1 x0 Klasse0 0 0 0 0 0 0 1 0 4 0 8 0 mit 1 4 und 8 vergleichen 1 0 0 0 1 1 0 1 1 5 1 9 1 mit 5 6 und 9 vergleichen 4 0 1 0 0 0 4 4 5 4 6 4 mit 5 6 und 9 vergleichen 8 1 0 0 0 0 8 8 9 8 mit 5 6 und 9 vergleichen 5 0 1 0 1 2 1 5 4 5 5 7 5 mit 7 und 11 vergleichen 6 0 1 1 0 4 6 6 7 6 mit 7 und 11 vergleichen 9 1 0 0 1 1 9 8 9 9 11 9 mit 7 und 11 vergleichen 7 0 1 1 1 3 5 7 6 7 7 15 7 mit 15 vergleichen 11 1 0 1 1 9 11 11 15 11 mit 15 vergleichen 15 1 1 1 1 4 7 15 11 15 Dieses Verfahren wird solange wiederholt bis keine Verschmelzungen mehr moglich sind Es ergeben sich im vorliegenden Fall sechs Primterme die sich im Zuge des Verfahrens nicht verschmelzen lassen Diese Terme konnen in verschiedenen Tabellen stehen Im vorliegenden Fall ergeben sich die Terme die sich nicht verschmelzen lassen bzw die Primimplikanten in den letzten drei Zeilen der Tabellen 2 und 3 P 1 x 0 x 2 x 3 m 9 m 11 displaystyle P 1 x 0 overline x 2 x 3 m 9 m 11 nbsp P 2 x 0 x 1 x 2 m 7 m 15 displaystyle P 2 x 0 x 1 x 2 m 7 m 15 nbsp P 3 x 0 x 1 x 3 m 11 m 15 displaystyle P 3 x 0 x 1 x 3 m 11 m 15 nbsp P 4 x 1 x 3 m 0 m 1 m 4 m 5 displaystyle P 4 overline x 1 overline x 3 m 0 m 1 m 4 m 5 nbsp P 5 x 1 x 2 m 0 m 1 m 8 m 9 displaystyle P 5 overline x 1 overline x 2 m 0 m 1 m 8 m 9 nbsp P 6 x 2 x 3 m 4 m 5 m 6 m 7 displaystyle P 6 x 2 overline x 3 m 4 m 5 m 6 m 7 nbsp Erstellen der Primtermtabelle Bearbeiten Die Primtermtabelle sieht so aus m 0 displaystyle m 0 nbsp m 1 displaystyle m 1 nbsp m 4 displaystyle m 4 nbsp m 5 displaystyle m 5 nbsp m 6 displaystyle m 6 nbsp m 7 displaystyle m 7 nbsp m 8 displaystyle m 8 nbsp m 9 displaystyle m 9 nbsp m 11 displaystyle m 11 nbsp m 15 displaystyle m 15 nbsp P 1 displaystyle P 1 nbsp P 2 displaystyle P 2 nbsp P 3 displaystyle P 3 nbsp P 4 displaystyle P 4 nbsp P 5 displaystyle P 5 nbsp P 6 displaystyle P 6 nbsp Dominanzprufung Bearbeiten Die erste Spaltendominanzprufung ergibt Streichen von m 0 displaystyle m 0 nbsp m 1 displaystyle m 1 nbsp und m 9 displaystyle m 9 nbsp wegen Spalte m 8 displaystyle m 8 nbsp Streichen von m 4 displaystyle m 4 nbsp m 5 displaystyle m 5 nbsp und m 7 displaystyle m 7 nbsp wegen Spalte m 6 displaystyle m 6 nbsp Danach sieht die Tabelle so aus m 6 displaystyle m 6 nbsp m 8 displaystyle m 8 nbsp m 11 displaystyle m 11 nbsp m 15 displaystyle m 15 nbsp P 1 displaystyle P 1 nbsp P 2 displaystyle P 2 nbsp P 3 displaystyle P 3 nbsp P 4 displaystyle P 4 nbsp P 5 displaystyle P 5 nbsp P 6 displaystyle P 6 nbsp Die Zeilendominanzprufung ergibt Streichen von P 4 displaystyle P 4 nbsp leer Streichen von P 2 displaystyle P 2 nbsp wegen P 3 displaystyle P 3 nbsp Streichen von P 1 displaystyle P 1 nbsp wegen P 3 displaystyle P 3 nbsp Somit erhalt man m 6 displaystyle m 6 nbsp m 8 displaystyle m 8 nbsp m 11 displaystyle m 11 nbsp m 15 displaystyle m 15 nbsp P 3 displaystyle P 3 nbsp P 5 displaystyle P 5 nbsp P 6 displaystyle P 6 nbsp Eine Zweite Spaltendominanzprufung ergibt Streichen von m 15 displaystyle m 15 nbsp wegen m 11 displaystyle m 11 nbsp Ergebnis m 6 displaystyle m 6 nbsp m 8 displaystyle m 8 nbsp m 11 displaystyle m 11 nbsp P 3 displaystyle P 3 nbsp P 5 displaystyle P 5 nbsp P 6 displaystyle P 6 nbsp Eine zweite Zeilendominanzprufung ergibt keine Streichungen mehr Damit ist die Dominanzprufung beendet Auswahl der Primterme Bearbeiten Die Auswahl geeigneter Primterme ist hier jetzt sehr einfach da es nur eine Moglichkeit gibt Benotigt werden die Primterme P 3 displaystyle P 3 nbsp P 5 displaystyle P 5 nbsp und P 6 displaystyle P 6 nbsp Verknupfung der gewahlten Primterme Bearbeiten Jetzt mussen die ausgewahlten Primterme mittels Disjunktion zur Losungsgleichung verknupft werden Y P 3 P 5 P 6 displaystyle Y P 3 P 5 P 6 nbsp Y x 0 x 1 x 3 x 1 x 2 x 2 x 3 displaystyle Y x 0 x 1 x 3 quad quad overline x 1 overline x 2 quad quad x 2 overline x 3 nbsp Anmerkung BearbeitenDas Problem eine minimale Anzahl von Primtermen aus der Primtermtabelle auszuwahlen ist NP vollstandig d h fur viele Falle ist kein wesentlich besseres Verfahren bekannt als alle moglichen Auswahlen auszuprobieren Deshalb bietet es sich an das Minimum nur naherungsweise zu bestimmen Beispielsweise wahlt man zuerst die Spalten mit nur einer Markierung aus diese sind zwingend notwendig danach sucht man in den Spalten mit wenig Markierungen oder in Zeilen mit vielen Markierungen nach geeigneten Termen Das Verfahren hat insbesondere bei hoherer Variablenzahl Vorteile gegenuber dem Karnaugh Veitch Diagramm KVD Als Faustregel gilt Bis funf Variablen ist das KVD besser ab sechs Variablen das QMCV Siehe auch BearbeitenKarnaugh Veitch Diagramm Buchberger Algorithmus Disjunktive Normalform Konjunktive NormalformWeblinks BearbeitenWolfgang Kastner Institut fur Rechnergestutzte Automation TU Wien Grundzuge der Informatik Philipps Universitat Marburg Technische Informatik Minimierung mit Quine McCluskey Christian Gottschall Der Quine McCluskey Optimierer Technische Universitat Ilmenau Ein Applet das die einzelnen Schritte des Verfahrens demonstriert JavaScript Programm der Universitat Marburg Abgerufen von https de wikipedia org w index php title Verfahren nach Quine und McCluskey amp oldid 226615341