![]() |
Wahrheitstabelle zu bool'schen Ausdruck
So, mal was für die Theoretiker unter uns :)
Ich hab hier eine Tabelle mit 6 Konditionen, und darin sämtliche Verknüpfungen dieser die "wahr" ergeben sollen. Alle anderen sollen "falsch" liefern. Da ich diese 16 Kombis die "wahr" sein sollen ungern alle einzeln abtesten will, suche ich nun nach einem Verfahren wie ich diese Tabelle in einen möglichst kurzen logischen Term überführe, der nur "and", "or", "not" und "xor" beinhaltet. Meine Tabelle schaut so aus: (blank = 0)
Code:
Da bekomm ich eindeutig nen :drunken: von :)
A | | |1|1| | |1|1| |1| |1| |1| |1|
B | | |1| |1| |1|1| |1| |1|1|1| | | C | | | |1| |1|1|1| |1| |1| | |1|1| D |1| | | |1|1|1| |1| |1| |1|1| | | E | |1| | |1|1| |1|1| |1| | | |1|1| F | |1| |1| |1| |1| | |1|1| | |1|1| --+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| = |1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1| |
Re: Wahrheitstabelle zu bool'schen Ausdruck
Du könntest dir den
![]() greetz Mike |
Re: Wahrheitstabelle zu bool'schen Ausdruck
Da ich das nur für diesen einen speziellen Fall brauche, würd' ich es lieber von Hand machen statt gleich ein ganzes Programm dafür zu bauen :) Allerdings nicht uninteressant!
|
Re: Wahrheitstabelle zu bool'schen Ausdruck
Den kürzesten Algo bekommt man so zwar nicht, ber du kannst ja einfach erstmal nah gemeinsamkeiten schauen und diese dann zusammenfassen.
|
Re: Wahrheitstabelle zu bool'schen Ausdruck
Im Wikipedia-Artikel unten sind ein paar Implementierungen verlinkt, unter anderem auch ein
![]() Allerdings sind das lediglich die minimalen CNF-/DNF-Formeln. Beliebige Kombinationen aus and, or, xor und not könnten evt. noch zu kleineren Formeln führen. greetz Mike |
Re: Wahrheitstabelle zu bool'schen Ausdruck
Hey das Applet ist cool :) Für meine Tabelle hat es den vergleichsweise handlichen Term:
(!x5*!x3*x2*!x0)+(!x5*!x4*x1*x0)+(x5*x4*!x1*!x0)+( x5*x3*!x2*x0) ausgespuckt. Nur wie war das noch, * ist 'oder' und + ist 'und', oder war's umgekehrt? :gruebel: |
Re: Wahrheitstabelle zu bool'schen Ausdruck
+ oder
* und
Code:
per Hand und nach einfachen Gemeinsamkeiten suchend:
Result := (not a and not b and e and f)
or (a and b and not e and not f) or (a and c and not d and f) or (not a and b and not c and d and not e);
Code:
aber hier sind erstmal nur 4 der 16 Möglichkeiten drinnen, also kleiner als das Apllet bekommt man es so schonmal nicht.
(A = B) and (E = F) and (A <> F) and (C = D) // 2 3 6 7
Aber hattest du alle Möglichkeiten eingegeben? Also auch die 0-Ergebnisse ... nicht daß dann was anderes rauskommt. |
Re: Wahrheitstabelle zu bool'schen Ausdruck
Danke für die Aufklärung!
Bei dem Applet steht bei, dass es reicht die 1-er Fälle einzutragen, und dass Beliebigkeiten auch eingegeben werden müssen. Das hab ich so verstanden, dass der Ergebnisterm wirklich 1:1 zu o.g. Tabelle passt. Von Hand hatte ich mich auch ein wenig versucht, sogar mit Baum aufstellen und so Krams, hab aber nach ~1h aufgegeben. Ich konnte mich nur noch zu dunkel an meine Theo.-Inf. Vorlesung erinnern: Es reichte nur noch für "da gab es was" :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz