k341-Berechnung_eines_Minimalpolynoms_Quine_McCluskey

Page 1

page-01.png

Kapitel 3 – Kombinatorische Logik

  1. Kombinatorische Schaltkreise
  2. Boolesche Algebren
  3. Boolesche Ausdrücke, Normalformen, zweistufige Synthese
  4. Berechnung eines Minimalpolynoms
    • 4.1 Karnaugh / Quine-McCluskey
    • 4.2 Überdeckungsproblem
  5. Arithmetische Schaltungen
  6. Anwendung: ALU von ReTI

Albert-Ludwigs-Universität Freiburg
Prof. Dr. Armin Biere
Institut für Informatik

Page 2

page-02.png

Billigste Überdeckung der markierten Ecken

Wir suchen ein sogenanntes Minimalpolynom, das heißt ein Polynom mit minimalen Kosten.

Definition:
Ein Minimalpolynom einer Booleschen Funktion ist ein Polynom von mit minimalen Kosten, das heißt mit der Eigenschaft für alle Polynome von .

Page 3

page-03.png

Quine's Primimplikantensatz

Satz:
Jedes Minimalpolynom einer Booleschen Funktion besteht ausschließlich aus Primimplikanten von .

Beweis:
Nehme an, dass einen nicht primen Implikanten von enthält.

wird durch zumindest einen echten Primimplikanten von überdeckt, ist also in enthalten.

Es gilt demnach .

Ersetzt man in den Implikanten durch den Primimplikanten , so erhält man ein Polynom , das ein Polynom von ist mit

(also mit strikt besseren Kosten).

Widerspruch dazu, dass ein Minimalpolynom ist.

Page 4

page-04.png

Berechnung von Implikanten

Lemma 1:
Ist ein Implikant von , so auch und für jede Variable , die in weder als positives, noch als negatives Literal vorkommt.

Beweis:
und sind Teilwürfel des Würfels . Wenn Ecken von markiert, dann auch Ecken von und .

Lemma 2:
Sind und Implikanten von , so auch .

Beweis:

Page 5

page-05.png

Charakterisierung von Implikanten

Satz:
Ein Monom ist genau dann ein Implikant von , wenn entweder

  • ein Minterm von ist, oder
  • und Implikanten von sind für eine Variable , die nicht in vorkommt.

Äquivalente Schreibweise:

Beweis folgt unmittelbar aus Lemma 1 und Lemma 2.

Page 6

page-06.png

Berechnung eines Minimalpolynoms

Verfahren von Quine-McCluskey zur Berechnung aller Primimplikanten.

Idee: Berechne sogar alle Implikanten. Dann ist auch klar, welche Primimplikanten sind.

Verfahren zur Lösung des „Überdeckungsproblems": Treffe unter den Primimplikanten eine geeignete Auswahl, so dass die Disjunktion der ausgewählten Primimplikanten ein Polynom für ist und minimale Kosten hat.

Page 7

page-07.png

Quine vs Karnaugh-Veitch

Die zwei Verfahren berechnen dasselbe, aber anders: Quine ist besser für den Computer und Karnaugh-Veitch funktioniert, weil Menschen Motive erkennen.

Page 8

page-08.png

4 Variablen

Funktion wird als Tabelle dargestellt. Gray-Code für die Einträge: nur eine Unterscheidung von einer Zeile zur nächsten.

00 01 11 10
00
01
11
10

Page 9

page-09.png

4 Variablen

Eigentlich Torus (Wikipedia-Bild). Für mehr als 4 Variablen: Schwer sich das Vorzustellen.

Page 10

page-10.png

Bedeutung der Tabelle

Jede Bedeckung ist eine Konjunktion von mehreren Boxen. Hier nur die positiven Literale:

00 01 11 10
00
01
11
10

Page 11

page-11.png

Bedeutung der Tabelle

Jede Bedeckung ist eine Konjunktion von mehreren Boxen. Hier nur die positiven Literale:

00 01 11 10
00
01
11
10

Page 12

page-12.png

Bedeutung der Tabelle

Jede Bedeckung ist eine Konjunktion von mehreren Boxen. Hier nur die positiven Literale:

00 01 11 10
00
01
11
10

Page 13

page-13.png

Bedeutung der Tabelle

Jede Bedeckung ist eine Konjunktion von mehreren Boxen. Hier nur die positiven Literale:

00 01 11 10
00
01
11
10

Page 14

page-14.png

Bedeutung der Tabelle

Jede Bedeckung ist eine Konjunktion von mehreren Boxen. Hier nur die positiven Literale:

00 01 11 10
00
01
11
10

Page 15

page-15.png

Ziel: Maximale Bedeckung finden

Gibt eine Bedeckung die nicht vollständig bedeckt ist:

Bedeckung Monom
0 Literale
oder 1 Literal
2 Literale
oder 3 Literale
4 Literale

(nicht vergessen: es ist ein Torus!)

Für jedes: Monom schreiben!

Page 16

page-16.png

Bedeckung

00 01 11 10
00
01
11
10

Page 17

page-17.png

Bedeckung

00 01 11 10
00
01
11
10

Page 18

page-18.png

Bedeckung

Es ist viel leichter zu erkennen als alle zu zeichnen:

00 01 11 10
00 =00 =01
01 =10 =11
11
10

Page 19

page-19.png

Ziel: Maximale Bedeckung finden

00 01 11 10
00 1 1 1 0
01 1 1 1 0
11 1 1 0 1
10 1 1 0 1

Page 20

page-20.png

Ziel: Maximale Bedeckung finden

00 01 11 10
00 1 1 1 0
01 1 1 1 0
11 1 1 0 1
10 1 1 0 1

Page 21

page-21.png

Ziel: Maximale Bedeckung finden

00 01 11 10
00 1 1 1 0
01 1 1 1 0
11 1 1 0 1
10 1 1 0 1

Page 22

page-22.png

Ziel: Maximale Bedeckung finden

00 01 11 10
00 1 1 1 0
01 1 1 1 0
11 1 1 0 1
10 1 1 0 1

Page 23

page-23.png

Ziel: Maximale Bedeckung finden

00 01 11 10
00 1 1 1 0
01 1 1 1 0
11 1 1 0 1
10 1 1 0 1

Also:

Page 24

page-24.png

Verfahren von Quine: Der Algorithmus

Prime implicants function Quine (f : B^n → B)
begin
    L₀ := Minterm(f);
    i := 0;
    Prim(f) := ∅
    while (Lᵢ ≠ ∅) and (i < n) do
        // Lᵢ enthält alle Implikanten von f der Länge n−i.
        Lᵢ₊₁ := {m | m·x und m·x' sind in Lᵢ für ein x};
        Prim(f) := Prim(f) ∪
            {m' | m' ∈ Lᵢ und m' wird von keinem q ∈ Lᵢ₊₁ überdeckt};
        i := i + 1;
    end while;
    return Prim(f) ∪ Lᵢ;
end;

Page 25

page-25.png

Verbesserung durch McCluskey

Vergleiche nur Monome untereinander,

  • welche die gleichen Variablen enthalten und
  • bei denen sich die Anzahl der positiven Literale nur um 1 unterscheidet.

Dies wird erreicht durch:

  • Partitionierung von in Klassen , mit und .
  • enthält die Implikanten aus , deren Literale alle aus sind.
  • Anordnung der Monome in gemäß der Anzahl der positiven Literale.

Page 26

page-26.png

Beispiel Quine-McCluskey

:

Minterm
0 0 0 0
0 0 0 1
0 1 0 0
1 0 0 0
0 0 1 1
0 1 0 1
1 0 0 1
1 0 1 0
1 1 0 0
0 1 1 1
1 1 0 1
1 1 1 0

Vergleiche im Folgenden nur Monome aus benachbarten Blöcken!

0 0 0 0 steht für

1 0 0 1 steht für

Page 27

page-27.png

Beispiel Quine-McCluskey: Bestimmung von (1/4)

:

Minterm
0 0 0 0
0 0 0 1
0 1 0 0
1 0 0 0
0 0 1 1
0 1 0 1
1 0 0 1
1 0 1 0
1 1 0 0
0 1 1 1
1 1 0 1
1 1 1 0

:

Implikant
0 0 0 -

Page 28

page-28.png

Beispiel Quine-McCluskey: Bestimmung von (2/4)

:

Minterm
0 0 0 0
0 0 0 1
0 1 0 0
1 0 0 0
0 0 1 1
0 1 0 1
1 0 0 1
1 0 1 0
1 1 0 0
0 1 1 1
1 1 0 1
1 1 1 0

:

Implikant
0 0 0 -

:

Implikant
0 - 0 0

Page 29

page-29.png

Beispiel Quine-McCluskey: Bestimmung von (3/4)

:

Minterm
0 0 0 0
0 0 0 1
0 1 0 0
1 0 0 0
0 0 1 1
0 1 0 1
1 0 0 1
1 0 1 0
1 1 0 0
0 1 1 1
1 1 0 1
1 1 1 0

:

Implikant
0 0 0 -

:

Implikant
0 - 0 0
0 - 1 1

Page 30

page-30.png

Beispiel Quine-McCluskey: Bestimmung von (4/4)

:

Minterm
0 0 0 0
0 0 0 1
0 1 0 0
1 0 0 0
0 0 1 1
0 1 0 1
1 0 0 1
1 0 1 0
1 1 0 0
0 1 1 1
1 1 0 1
1 1 1 0

:

Implikant
0 0 0 -

:

Implikant
0 - 0 0
0 - 1 1

Nicht kürzbar, da nicht Ecken der gleichen Kante.

Page 31

page-31.png

Beispiel Quine-McCluskey: Alle bestimmten Mengen

:

0 0 - 1
1 0 - 0
0 1 - 1
1 1 - 0

:

- 0 0 0
- 0 0 1
- 1 0 0
- 1 0 1

:

0 0 0 -
0 1 0 -
1 0 0 -
1 1 0 -

:

0 - 0 0
0 - 0 1
1 - 0 0
0 - 1 1
1 - 0 1
1 - 1 0

Alle Minterme von sind Eckpunkte von Kanten, die Implikanten sind:

Page 32

page-32.png

Beispiel Quine-McCluskey: Bestimmung von (1/2)

:

0 0 - 1
1 0 - 0
0 1 - 1
1 1 - 0

:

- 0 0 0
- 0 0 1
- 1 0 0
- 1 0 1

:

0 0 0 -
0 1 0 -
1 0 0 -
1 1 0 -

:

0 - 0 0
0 - 0 1
1 - 0 0
0 - 1 1
1 - 0 1
1 - 1 0

Alle Implikanten aus sind Kanten von Flächen, die Implikanten sind:

Page 33

page-33.png

Beispiel Quine-McCluskey: Bestimmung von (2/2)

:

0 0 - 1
1 0 - 0
0 1 - 1
1 1 - 0

:

- 0 0 0
- 0 0 1
- 1 0 0
- 1 0 1

:

0 0 0 -
0 1 0 -
1 0 0 -
1 1 0 -

:

0 - 0 0
0 - 0 1
1 - 0 0
0 - 1 1
1 - 0 1
1 - 1 0

Alle Implikanten aus sind Kanten von Flächen, die Implikanten sind:

Page 34

page-34.png

Beispiel Quine-McCluskey: Bestimmung von (1/2)

: (leer)

:

0 - - 1
1 - - 0

: (leer)

:

0 - 0 -
1 - 0 -

:

- 0 0 -
- 1 0 -

:

- - 0 0
- - 0 1

Die markierten Implikanten-Flächen sind nicht Rand eines 3-dim. Implikanten. Sie sind also prim!

Page 35

page-35.png

Beispiel Quine-McCluskey: Bestimmung von (2/2)

: (leer)

:

0 - - 1
1 - - 0

: (leer)

:

0 - 0 -
1 - 0 -

:

- 0 0 -
- 1 0 -

:

- - 0 0
- - 0 1

Die markierten Implikanten-Flächen sind Rand eines 3-dimensionalen Implikanten. Sie sind also nicht prim!

Page 36

page-36.png

Beispiel Quine-McCluskey: Ende

: (leer)

: (leer)

:

- - 0 -

: (leer)

ß

Page 37

page-37.png

Korrektheit von Quine-McCluskey (1/2)

Prime implicants function Quine (f : B^n → B)
begin
    L₀ := Minterm(f);
    i := 0;
    Prim(f) := ∅
    while (Lᵢ ≠ ∅) and (i < n) do
        // Lᵢ enthält alle Implikanten von f der Länge n−i.
        Lᵢ₊₁ := {m | m·x und m·x' sind in Lᵢ für ein x};
        Prim(f) := Prim(f) ∪
            {m' | m' ∈ Lᵢ und m' wird von keinem q ∈ Lᵢ₊₁ überdeckt};
        i := i + 1;
    end while;
    return Prim(f) ∪ Lᵢ;
end;

Page 38

page-38.png

Korrektheit von Quine-McCluskey (2/2)

Satz:
Für alle gilt:

  • enthält nur Monome mit Literalen.
  • enthält genau die Implikanten von mit Literalen.
  • Nach Iteration enthält genau die Primimplikanten von mit mindestens Literalen.

Beweis:
Induktion über .

Abbruchbedingung () oder ():

  • bedeutet, dass keine Implikanten bei der „Partnersuche" entstanden sind, d.h. ist vollständig in aufgegangen.
  • bedeutet, dass berechnet wurde, es gilt dann oder , letzteres bedeutet ist die Eins-Funktion und .

Page 39

page-39.png

Kosten des Verfahrens

Lemma:
Es gibt verschiedene Monome in Variablen.

Beweis:
Für jedes Monom und jede der Variablen liegt genau eine der drei folgenden Situationen vor:

  • enthält weder das positive noch das negative Literal von .
  • enthält das positive Literal .
  • enthält das negative Literal .

Jedes Monom ist durch diese Beschreibung auch eindeutig bestimmt.

Page 40

page-40.png

Komplexität des Verfahrens von Quine-McCluskey

Satz:
Die Laufzeit des Verfahrens liegt in beziehungsweise in , wobei die Größe der Funktionstabelle ist.

Beweisidee:
Jedes der Monome wird im Verlauf des Verfahrens mit höchstens anderen Monomen verglichen.

Gegeben sei ein Monom . Die Erzeugung von und die Suche nach in ist bei Verwendung geeigneter Datenstrukturen in durchführbar.

durch Nachrechnen: