k342-Berechnung_eines_Minimalpolynoms_Ueberdeckungsproblem

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

Das Matrix-Überdeckungsproblem

Wir haben nun durch das Verfahren von Quine-McCluskey alle Primimplikanten von bestimmt.

Die Disjunktion aller Primimplikanten ist ein Polynom, das implementiert. Es ist aber im Allgemeinen kein Minimalpolynom von .

Für das Minimalpolynom benötigen wir eine kostenminimale Teilmenge von , so dass die Monome von überdecken.

Diese Art von Problemen wird Matrix-Überdeckungsproblem genannt.

Page 3

page-03.png

Das Matrix-Überdeckungsproblem: Einfaches Beispiel

Für eine Expedition wird ein Fahrer, ein Messtechniker und ein Kameramann benötigt. Es stehen fünf Kandidaten mit unterschiedlichen Fähigkeiten und Gehaltsvorstellungen zur Auswahl. Welches ist das kostengünstigste Team?

Kandidat Fahrer? Messtechniker? Kameramann? Gehalt
Alice Ja Nein Ja 4000
Dilbert Ja Ja Nein 2000
Dogbert Ja Ja Ja 5000
Ted Nein Nein Ja 1000
Wally Nein Ja Ja 1500

Page 4

page-04.png

Primimplikantentafel

Definiere eine Boolesche Matrix , die Primimplikantentafel von :

  • Die Zeilen entsprechen eindeutig den Primimplikanten von .
  • Die Spalten entsprechen eindeutig den Mintermen von .

Sei ein beliebiger Minterm von . Dann gilt für Primimplikant :

Der Eintrag an der Stelle ist also genau dann 1, wenn eine Ecke des Würfels beschreibt.

Gesucht:
Eine kostenminimale Teilmenge von , so dass jede Spalte von überdeckt ist, d.h.

Page 5

page-05.png

Primimplikantentafel: Beispiel (1/2)

Primimplikantentafel :

Primimplikant
1 1 1 1
1 1 1 1 1
1 1 1 1 1 1 1 1

Page 6

page-06.png

Primimplikantentafel: Beispiel (2/2)

Gesucht:
Eine kostenminimale Teilmenge von , so dass jede Spalte von überdeckt ist, d.h.

Primimplikantentafel :

Primimplikant
1 1 1 1
1 1 1 1 1
1 1 1 1 1 1 1 1

Page 7

page-07.png

Erste Reduktionsregel – Wesentlicher Implikant

Definition:
Ein Primimplikant von heißt wesentlich, wenn es einen Minterm von gibt, der nur von diesem Primimplikanten überdeckt wird, also:

für jeden anderen Primimplikanten von .

Lemma:
Jedes Minimalpolynom von enthält alle wesentlichen Primimplikanten von .

1. Reduktionsregel: Entferne aus der Primimplikantentafel alle wesentlichen Primimplikanten und alle Minterme, die von diesen überdeckt werden.

Page 8

page-08.png

Erste Reduktionsregel: Beispiel (1/2)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
A 1 1 1 1
B 1 1 1 1
C 1 1 1 1
D 1 1 1 1
E 1 1 1 1
F 1 1 1 1
G 1 1 1 1
H 1 1 1 1
I 1 1 1 1
J 1 1 1 1
K 1 1 1 1
L 1 1 1 1
M 1 1 1 1 1 1 1 1 1

Page 9

page-09.png

Erste Reduktionsregel: Beispiel (2/2)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
A 1 1 1 1
B 1 1 1 1
C 1 1 1 1
D 1 1 1 1
E 1 1 1 1
F 1 1 1 1
G 1 1 1 1
H 1 1 1 1
I 1 1 1 1
J 1 1 1 1
K 1 1 1 1
L 1 1 1 1
M 1 1 1 1 1 1 1 1 1

A, B, C, D sind wesentlich!

Page 10

page-10.png

Nach Anwendung der 1. Reduktionsregel

9 10 11 12 13 14 15 16 17
E 1 1
F 1 1
G 1 1
H 1 1
I 1 1 1
J 1 1 1
K 1 1 1
L 1 1 1
M 1

Die Matrix enthält keine wesentlichen Zeilen mehr!

Page 11

page-11.png

Zweite Reduktionsregel – Spaltendominanz

Definition:
Sei eine Boolesche Matrix. Spalte von dominiert Spalte von , wenn für jede Zeile gilt: .

Nutzen für unser Problem: Dominiert ein Minterm von einen anderen Minterm von , so braucht man nicht weiter zu betrachten, da auf jeden Fall überdeckt werden muss und hierdurch auch Minterm überdeckt wird.

Jeder in vorhandene Primimplikant , der überdeckt, überdeckt auch .

2. Reduktionsregel: Entferne aus der Primimplikantentafel alle Minterme, die einen anderen Minterm in dominieren.

Page 12

page-12.png

Zweite Reduktionsregel: Beispiel

9 10 11 12 13 14 15 16 17
E 1 1
F 1 1
G 1 1
H 1 1
I 1 1 1
J 1 1 1
K 1 1 1
L 1 1 1
M 1

Spalte 17 dominiert Spalte 10 ⇒ Spalte 17 kann gelöscht werden!

Page 13

page-13.png

Dritte Reduktionsregel – Zeilendominanz

Definition:
Sei eine Boolesche Matrix. Zeile von dominiert Zeile von , wenn für jede Spalte gilt: .

Nutzen für unser Problem: Dominiert ein Primimplikant einen Primimplikanten , so braucht man nicht weiter zu betrachten, wenn gilt.

Der Primimplikant überdeckt jeden noch nicht überdeckten Minterm von , der von überdeckt wird, obwohl er nicht teurer ist.

3. Reduktionsregel: Entferne aus der Primimplikantentafel alle Primimplikanten, die durch einen anderen, nicht teureren Primimplikanten dominiert werden.

Page 14

page-14.png

Dritte Reduktionsregel: Beispiel

Nehme an, dass die Zeilen 5 bis 12 gleiche Kosten haben.

9 10 11 12 13 14 15 16
E 1 1
F 1 1
G 1 1
H 1 1
I 1 1
J 1 1
K 1 1
L 1 1
M

E, F, G, H werden dominiert (von L, J, K, L bzw. L).

Page 15

page-15.png

Dritte Reduktionsregel: Beispiel

Nehme an, dass die Zeilen 5 bis 12 gleiche Kosten haben.

9 10 11 12 13 14 15 16
E 1 1
F 1 1
G 1 1
H 1 1
I 1 1
J 1 1
K 1 1
L 1 1
M

E, F, G, H werden dominiert (von L, J, K, L bzw. L).

Page 16

page-16.png

Nach Anwendung der 3. Reduktionsregel

9 10 11 12 13 14 15 16
I 1 1
J 1 1
K 1 1
L 1 1
M

Offensichtlich kann nun wieder die erste Reduktionsregel angewendet werden, da die Zeilen I, J, K, L wesentlich sind.

Die resultierende Matrix ist leer.

Das gefundene Minimalpolynom ist:

Page 17

page-17.png

Ein weiteres Beispiel

Welche Reduktionsregel(n) können in dem Beispiel angewendet werden?

Primimplikantentafel :

Primimplikant
1 1
1 1
1 1
1 1
1 1
1 1

Page 18

page-18.png

Ein weiteres Beispiel

Welche Reduktionsregel(n) können in dem Beispiel angewendet werden?

Primimplikantentafel :

Primimplikant
1 1
1 1
1 1
1 1
1 1
1 1

Kein Primimplikant ist wesentlich!

Page 19

page-19.png

Zyklische Überdeckungsprobleme

Definition:
Eine Primimplikantentafel heißt reduziert, wenn keine der drei Reduktionsregeln anwendbar ist. Ist eine reduzierte Tafel nicht-leer, spricht man von einem zyklischen Überdeckungsproblem.

In der Praxis werden solche Probleme heuristisch gelöst. Es gibt auch exakte Methoden (Petrick, Branch-and-Bound).

Primimplikantentafel :

Primimplikant
1 1
1 1
1 1
1 1
1 1
1 1

Page 20

page-20.png

Petrick's Methode

Verfahren:

  1. Übersetze die PIT in ein Produkt von Summen, d.h. in ein (OR, AND)-Polynom, das alle Möglichkeiten der Überdeckung enthält.
  2. Multipliziere das (OR, AND)-Polynom aus, so dass ein (AND-OR)-Polynom entsteht.
  3. Die gesuchte minimale Überdeckung ist gegeben durch das Monom, das einer PI-Auswahl mit minimalen Kosten entspricht.

Primimplikantentafel :

1 1
1 1
1 1
1 1
1 1
1 1

wird übersetzt in:

Bei gleichen Kosten für alle PIs sind und minimal.

Page 21

page-21.png

„Greedy-Heuristik" zur Lösung von Überdeckungsproblemen

  1. Wende alle möglichen Reduktionsregeln an.
  2. Ist die Matrix leer, ist man fertig.
  3. Sonst wähle die Zeile , die die meisten Spalten überdeckt. Lösche diese Zeile und alle von ihr überdeckten Spalten und gehe zu 1.

Dieser Algorithmus liefert nicht immer die optimale Lösung!

Hinweis: Bei der Ausgangs-Matrix aus unserem Beispiel überdeckt die M-Zeile die meisten Spalten. Diese ist nicht Teil der gefundenen Lösung!

Page 22

page-22.png

Vergleich Schaltkreise, Boolesche Polynome

Sowohl Schaltkreise als auch Boolesche Polynome stellen Boolesche Funktionen dar.

Optimale Boolesche Polynome können sehr viel größer sein als entsprechende Schaltkreise.

  • exponentielle Unterschiede möglich
  • Rechtfertigung für Einsatz von Schaltkreisen statt PLAs

Es gibt auch Algorithmen zur Berechnung optimaler (mehrstufiger) Schaltkreise.

  • anspruchsvoller als Optimierung von Booleschen Polynomen
  • meist heuristisch (Näherungsverfahren)
  • nicht Gegenstand dieser Vorlesung

Hier: Schaltkreise für spezielle Funktionen, insbesondere Arithmetik.