KV-Diagramm vereinfachen

Javaman91

Bekanntes Mitglied
Hallo zusammen,

ich bin gerade dabei eine Klasse zu schreiben, mit der durch ein KV-Diagramm die boolsche Funktion vereinfacht wird.
Nun habe ich gelesen, das sich in der programmierung das Verfahren von Quine-McCluskey gut anwenden lässt.

Jetzt weiß ich aber nicht, ob ich mit diesem Verfahren auch das ganze Grafisch im KV-Diagramm anzeigen lassen kann?
Das Verfahren basiert ja auf Tabellen.

Ich würde gerne die zusammengefassten Blöcke anzeigen lassen, so wie man es am Papier macht, indem man nach der minterm Methode die "1" mit 2, 4, 8er Blöcken zusammenfasst. Einfach nur die zusammengefassten Blöcke in Farbe anzeigen lassen, mehr brauch ich nicht.

Ist das mit dem Verfahren möglich?

Schöne Grüße
 

White_Fox

Top Contributor
Dein Plan wird so nicht funktionieren.

Zuerst einmal: Graphische Lösungsverfahren beruhen vor allem darauf, die Lösung am Ende zu sehen und abzulesen. Und nicht auf Berechnung. Du sitzt aber an einer Maschine, die vornehmlich rechnen kann. Sehen und Ablesen kann sie dagegen nicht so ohne weiteres.

Ich will es mal an einem anderen Beispiel klarmachen: Nimm ein xy-Koordinatensystem, und trage zwei beliebige Punkte ein. Und nun suche die eine lineare Funktion (f(x) = mx + n), die durch beide Punkte geht.

Das graphische Lösungsverfahren ist einfach: Lege ein Lineal an die zwei Punkte an an, ziehe eine Gerade durch, und lese m und n einfach ab.

Das graphische Lösungsverfahren am Rechner zu implementieren ist grober Unfug: Um die Gerade zu zeichnen müßtest die Gleichung bereits vorher lösen, schließlich brauchst du die Parameter ja zur Berechnung wo die Linie verlaufen soll.
Selbst wenn du die Linie ohne vorherige Berechnung eintragen kannst: Danach müßtest du Pixel zählen. Das wird ungenau, und mal ehrlich: Etwas Subtraktion und Division ist da doch deutlich schneller und einfacher.

Mit deinem KV-Diagramm ist es prinzipiell ähnlich: Das ist nur ein Verfahren, um eine bereits gegebene boolsche Gleichung zu vereinfachen. Da kommt zwar oft, aber auch nicht immer die einfachste Form heraus. Das KV-Diagramm erstellst du ja (normalerweise) aus einer Zustandstabelle, die die ursprüngliche Gleichung liefert.
Insofern ist es sehr sinnvoll, direkt ein rechnerisches Verfahren zu verwenden.

Aber gut, lassen wir mal die graphische Darstellung eines KV-Diagramms außer Acht. Das ist sowieso nur optischer Zucker. Wie würdest du denn ein KV-Diagramm in einem Programm modellieren?
Normalerweise würde ich von Arrays absehen, aber hier würde ich es tatsächlich mal mit einem zweidimensionalen Array versuchen (eine ImmutableList, die wiederum ImmutableLists enthält, würde wohl auch gehen).

Und jetzt überleg dir mal, wie du die Indizes einer boolschen Variable zuordnen willst, daß du
a) eine allgemeine Form, d.h. unterschiedlich große KV-Diagramme bekommst
b) dabei nicht durcheinander kommst.

Zeichne dir z.B. mal ein 2x2-KV-Diagramm auf ein Blatt Papier auf, stelle einen allgemeinen Algorythmus auf und spiele ihn dann mal an einem 2x4 und 4x4-Diagramm durch. Du wirst sehen: Das wird nicht einfach.

Und nehmen wir mal an, es gelingt dir. Dann mußt du das Diagramm immer noch auswerten. Jetzt hast du z.B. so etwas:
Code:
[T][T][F][F]
[F][F][T][F]
[T][F][T][F]
[T][F][F][T]
Jetzt überlege dir mal einen Algorythmus um an deinen Indizees entlangzukrauchen und rauszufinden, welche T mit welchen anderen benachbart sind. Das wird bestimmt schon irgendwie gehen, ist aber sackig kompliziert und aufwändig.

Und das um ein Verfahren zu implementieren, daß noch nichteinmal so ohne weiteres beliebig nach oben hin aufgeblasen werden kann, sondern recht bald an Grenzen stößt an denen es noch sinnvoll angewandt werden kann.
 

Javaman91

Bekanntes Mitglied
Eine Frage habe ich noch.

Da ich die Idee mit dem grafischen KV-Diagramm verworfen habe, bin ich jetzt zum Quine-McCluskey-Verfahren gewechselt.
Der Code funktioniert schon sehr gut, aber eine Frage habe ich noch zur Quineschen Tabelle i-ter Ordnung.

So wie ich das gelesen habe, hängt die Anzahl der Quineschen Tabellen von der Anzahl der Eingangsvariablen ab.

Beispiel:

Ich habe in meiner Wahrheitstabelle 4 Eingangsvariablen: A, B, C, D
Dann habe ich (i−1) Ordnungen, also sind das dann: 4 (Eingangsvariablen) - 1 = 3 Quinesche Tabellen.
Bei 5 Eingangsvariablen wären es: 5 - 1 = 4 Quinesche Tabellen.

usw...

Hab ich das so richtig verstanden?

VG
 

White_Fox

Top Contributor
...erstmal nachlesen was Quine-McCluskey ist...aha.

Ehrlich gesagt höre ich von dem Verfahren gerade zum ersten Mal (ich bin aber auch kein Informatiker). Es gibt aber auf Wikipedia ein schönes Beispiel dazu, an dem du deinen Plan durchexerzieren kannst. Und zumindest in diesem Fall ist es so, wie du sagst: Eine Tabelle weniger als Eingangsvariablen.
 

grrr

Mitglied
Ähnliche Java Themen
  Titel Forum Antworten Datum
W UML Diagramm implementieren Java Basics - Anfänger-Themen 2
X MainClass im UML Diagramm Java Basics - Anfänger-Themen 2
lilrack UML Diagramm für Parkplatzverwaltung Java Basics - Anfänger-Themen 8
S UML Diagramm Java Basics - Anfänger-Themen 73
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
M Erste Schritte von UML Diagramm zum Code Java Basics - Anfänger-Themen 29
C UML Diagramm in Java implementieren-Korrektur Java Basics - Anfänger-Themen 8
J OOP Probleme mit UML-Diagramm Java Basics - Anfänger-Themen 6
T X-Y-Diagramm Analyse Java Basics - Anfänger-Themen 2
E OOP UML Diagramm Java Basics - Anfänger-Themen 4
V SVG Diagramm erstellen Java Basics - Anfänger-Themen 2
B Erste Schritte Brauche Hilfe für ein UML Diagramm Java Basics - Anfänger-Themen 7
D Werte aus Excel in Diagramm einfügen Java Basics - Anfänger-Themen 6
D Array in Diagramm ausgeben Java Basics - Anfänger-Themen 7
M Uml Diagramm->Java Java Basics - Anfänger-Themen 1
F Aus UML Diagramm Quelltext Java Basics - Anfänger-Themen 7
F uml diagramm! Java Basics - Anfänger-Themen 4
S UML Diagramm in Eclipse Java Basics - Anfänger-Themen 1
M CSV in Diagramm Java Basics - Anfänger-Themen 3
S UML-Diagramm und Java Java Basics - Anfänger-Themen 5
D Diagramm in der Konsole erstellen Java Basics - Anfänger-Themen 13
K Erste Schritte Stream-Aufruf vereinfachen Java Basics - Anfänger-Themen 3
josfe1234 code vereinfachen Java Basics - Anfänger-Themen 15
N Kann man den Code vereinfachen? Java Basics - Anfänger-Themen 25
J Programm vereinfachen Java Basics - Anfänger-Themen 5
A Erste Schritte for-Schleifen vereinfachen Java Basics - Anfänger-Themen 5
S Java robot Tastenschläge vereinfachen Java Basics - Anfänger-Themen 4
S Java Robot Tasteneingaben vereinfachen Java Basics - Anfänger-Themen 1
J Vereinfachen einer Schleife Java Basics - Anfänger-Themen 2
H Kann ich mein Programm vereinfachen? Java Basics - Anfänger-Themen 3
D Textzeile einlesen und vereinfachen? Java Basics - Anfänger-Themen 9
K Code vereinfachen mit Schleife, aber wie genau? Java Basics - Anfänger-Themen 3
B Abfrage mittels Variable vereinfachen Java Basics - Anfänger-Themen 6
M OOP Ähnliche Methoden vereinfachen? Java Basics - Anfänger-Themen 2
W Unübersichtliches Anfänger-"Programm" überarbeiten/vereinfachen? Java Basics - Anfänger-Themen 13
H Ausdruck vereinfachen Java Basics - Anfänger-Themen 8
G Java substring vereinfachen Java Basics - Anfänger-Themen 19
O Elemente zu einer List adden - vereinfachen Java Basics - Anfänger-Themen 14
D Quelltext zu vereinfachen? Java Basics - Anfänger-Themen 4
D java -cp vereinfachen ? Java Basics - Anfänger-Themen 15
D Klassenaufruf mit mehreren Parametern vereinfachen Java Basics - Anfänger-Themen 10

Ähnliche Java Themen


Oben