Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Boolsche Funktion vereinfachen

Frage Entwicklung

Mitglied: inspire

inspire (Level 1) - Jetzt verbinden

10.08.2009, aktualisiert 20:44 Uhr, 3452 Aufrufe, 10 Kommentare

Hallo,

ich suche eine Möglichkeit, mit der man große boolsche Terme vereinfachen kann. Per Hand würde es viel zu lange dauern, da die Terme dafür viel zu groß sind.

Sowas wie
( R09 * R014 )
+ ( R09 * R010 * R011 * R07 * R06 * R018 * R02 * R01 * R013 * R014 )
+ ( R09 * R010 * R011 * R07 * R06 * R05 * R017 * R02 * R01 * R013 * R014 )
...

oder

( R009 AND R014 ) OR ( R009 AND R010 AND R011 AND R007 AND R006 AND Pp1 AND R002 AND R001 AND R013 AND R014 )
...

möchte ich vereinfachen. Ob mit * und + oder AND und OR ist egal.

Hat jemand 'ne Idee?

Gruß
Martin
Mitglied: Biber
10.08.2009 um 21:47 Uhr
Moin inspire,

vielleicht verstehe ich ja das Beispiel nicht, aber es reduziert sich doch darauf, dass immer (R09 und R014) gegeben sein muss. Demnach kannst Du doch zumindest umformen

( R09 AND R014) AND (
( R010 * R011 * R07 * R06 * R018 * R02 * R01 * R013 ) OR ( R010 * R011 * R07 * R06 * R05 * R017 * R02 * R01 * R013 )
)

-oder konsequent weitergesponnen.
( R09 AND R014 AND R010 AND R011 AND R07 AND R06 AND R01 AND R013) AND ( R018 OR R017 )

Oder verstehe ich die Frage miss?

Grüße
Biber
Bitte warten ..
Mitglied: inspire
10.08.2009 um 21:57 Uhr
Du verstehst meine Frage richtig, nur habe ich hier einen kleinen Termausschnitt reinkopiert. Es stimmt, dass man hier R09 und R014 ausklammern kann, doch bei dem gesamten Term würde ich das gerne automatisiert haben., da der Term so aussieht:

RL1 = ( R09 * R014 )
+ ( R09 * R010 * R011 * R07 * R06 * R018 * R02 * R01 * R013 * R014 )
+ ( R09 * R010 * R011 * R07 * R06 * R05 * R017 * R02 * R01 * R013 * R014 )
+ ( R09 * R010 * R011 * R07 * R06 * R05 * R04 * R016 * R02 * R01 * R013 * R014 )
+ ( R09 * R010 * R011 * R07 * R06 * R05 * R04 * R03 * R01 * R013 * R014 )
+ ( R09 * R010 * R011 * R02 * R01 * R013 * R014 )
+ ( R09 * R010 * R012 * R05 * R06 * R07 * R02 * R01 * R013 * R014 )
+ ( R09 * R010 * R012 * R05 * R018 * R02 * R01 * R013 * R014 )
+ ( R09 * R010 * R012 * R017 * R02 * R01 * R013 * R014 )
+ ( R09 * R010 * R012 * R04 * R016 * R02 * R01 * R013 * R014 )
+ ( R09 * R010 * R012 * R04 * R03 * R01 * R013 * R014 )
+ ( R08 * R07 * R011 * R010 * R014 )
+ ( R08 * R07 * R011 * R012 * R05 * R018 * R02 * R01 * R013 * R014 )
+ ( R08 * R07 * R011 * R012 * R017 * R02 * R01 * R013 * R014 )
+ ( R08 * R07 * R011 * R012 * R04 * R016 * R02 * R01 * R013 * R014 )
+ ( R08 * R07 * R011 * R012 * R04 * R03 * R01 * R013 * R014 )
+ ( R08 * R07 * R02 * R03 * R04 * R012 * R010 * R014 )
+ ( R08 * R07 * R02 * R01 * R013 * R014 )
+ ( R08 * R06 * R018 * R011 * R010 * R014 )
+ ( R08 * R06 * R018 * R011 * R012 * R017 * R02 * R01 * R013 * R014 )
+ ( R08 * R06 * R018 * R011 * R012 * R04 * R016 * R02 * R01 * R013 * R014 )
+ ( R08 * R06 * R018 * R011 * R012 * R04 * R03 * R01 * R013 * R014 )
+ ( R08 * R06 * R018 * R02 * R03 * R04 * R012 * R010 * R014 )
+ ( R08 * R06 * R018 * R02 * R01 * R013 * R014 )
+ ( R08 * R06 * R05 * R017 * R011 * R010 * R014 )
+ ( R08 * R06 * R05 * R017 * R011 * R012 * R04 * R016 * R02 * R01 * R013 * R014 )
+ ( R08 * R06 * R05 * R017 * R011 * R012 * R04 * R03 * R01 * R013 * R014 )
+ ( R08 * R06 * R05 * R017 * R02 * R03 * R04 * R012 * R010 * R014 )
+ ( R08 * R06 * R05 * R017 * R02 * R01 * R013 * R014 )
+ ( R08 * R06 * R05 * R012 * R010 * R014 )
+ ( R08 * R06 * R05 * R012 * R011 * R02 * R01 * R013 * R014 )
+ ( R08 * R06 * R05 * R04 * R016 * R011 * R010 * R014 )
+ ( R08 * R06 * R05 * R04 * R016 * R02 * R01 * R013 * R014 )
+ ( R08 * R06 * R05 * R04 * R03 * R02 * R011 * R010 * R014 )
+ ( R08 * R06 * R05 * R04 * R03 * R01 * R013 * R014 )
+ ( R013 * R014 )
+ ( R01 * R02 * R011 * R010 * R014 )
+ ( R01 * R02 * R011 * R012 * R05 * R06 * R08 * R09 * R014 )
+ ( R01 * R02 * R07 * R08 * R09 * R014 )
+ ( R01 * R02 * R07 * R06 * R05 * R012 * R010 * R014 )
+ ( R01 * R03 * R04 * R012 * R010 * R014 )
+ ( R01 * R03 * R04 * R012 * R011 * R07 * R08 * R09 * R014 )
+ ( R01 * R03 * R04 * R05 * R06 * R08 * R09 * R014 )
+ ( R01 * R03 * R04 * R05 * R06 * R07 * R011 * R010 * R014 )
+ ( R01 * R03 * R04 * R05 * R018 * R011 * R010 * R014 )
+ ( R01 * R03 * R04 * R05 * R018 * R07 * R08 * R09 * R014 )
+ ( R01 * R03 * R04 * R017 * R011 * R010 * R014 )
+ ( R01 * R03 * R04 * R017 * R07 * R08 * R09 * R014 )
+ ( R01 * R03 * R016 * R011 * R010 * R014 )
+ ( R01 * R03 * R016 * R011 * R012 * R05 * R06 * R08 * R09 * R014 )
+ ( R01 * R03 * R016 * R07 * R08 * R09 * R014 )
+ ( R01 * R03 * R016 * R07 * R06 * R05 * R012 * R010 * R014 )
+ ( R014 * R09 * R08 * R07 * R011 * R012 * R05 * R018 * R02 * R01 )
+ ( R014 * R09 * R08 * R07 * R011 * R012 * R017 * R02 * R01 )
+ ( R014 * R09 * R08 * R07 * R011 * R012 * R04 * R016 * R02 * R01 )
+ ( R014 * R09 * R08 * R06 * R018 * R011 * R012 * R017 * R02 * R01 )
+ ( R014 * R09 * R08 * R06 * R018 * R011 * R012 * R04 * R016 * R02 * R01 )
+ ( R014 * R09 * R08 * R06 * R018 * R011 * R012 * R04 * R03 * R01 )
+ ( R014 * R09 * R08 * R06 * R018 * R02 * R01 )
+ ( R014 * R09 * R08 * R06 * R05 * R017 * R011 * R012 * R04 * R016 * R02 * R01 )
+ ( R014 * R09 * R08 * R06 * R05 * R017 * R011 * R012 * R04 * R03 * R01 )
+ ( R014 * R09 * R08 * R06 * R05 * R017 * R02 * R01 )
+ ( R014 * R09 * R08 * R06 * R05 * R04 * R016 * R02 * R01 )
+ ( R014 * R010 * R011 * R07 * R06 * R018 * R02 * R01 )
+ ( R014 * R010 * R011 * R07 * R06 * R05 * R017 * R02 * R01 )
+ ( R014 * R010 * R011 * R07 * R06 * R05 * R04 * R016 * R02 * R01 )
+ ( R014 * R010 * R012 * R05 * R018 * R07 * R08 )
+ ( R014 * R010 * R012 * R05 * R018 * R02 * R01 )
+ ( R014 * R010 * R012 * R017 * R07 * R08 )
+ ( R014 * R010 * R012 * R017 * R02 * R01 )
+ ( R014 * R010 * R012 * R04 * R016 * R07 * R08 )
+ ( R014 * R010 * R012 * R04 * R016 * R02 * R01 )
+ ( R014 * R013 * R01 * R03 * R04 * R05 * R018 * R011 * R010 * R09 )
+ ( R014 * R013 * R01 * R03 * R04 * R05 * R018 * R07 * R08 )
+ ( R014 * R013 * R01 * R03 * R04 * R017 * R011 * R010 * R09 )
+ ( R014 * R013 * R01 * R03 * R04 * R017 * R07 * R08 )
+ ( R014 * R013 * R01 * R03 * R016 * R011 * R010 * R09 )
+ ( R014 * R013 * R01 * R03 * R016 * R011 * R012 * R05 * R06 * R08 )
+ ( R014 * R013 * R01 * R03 * R016 * R07 * R08 )
+ ( R014 * R013 * R01 * R03 * R016 * R07 * R06 * R05 * R012 * R010 * R09 )
+ ( R014 * R015 )


...und davon müssen noch 35 weitere Terme umgeformt werden :D
Bitte warten ..
Mitglied: Biber
10.08.2009 um 22:10 Uhr
Na ja,

dennoch ist doch -auf den ersten Blick offensichtlich- ein immenser Anteil an Redundanz in den einzelnen Tupeln.
So enthält doch jede Zeile/Teilbedingung die "R014".

Und natürlich lässt es sich, vielleicht vergleichbar mit der Suche nach dem größten gemeinsamen Teiler, automatisiert umformen.

Aber dazu müssten wir doch wissen:
  • wer oder was generiert denn diese Terme?
  • welche Skript/Programmiersprache steht Dir denn zur Verfügung?

Denn vermutlich wolltest Du es nicht mit einem Texteditor neu sortieren.

Grüße
Biber
Bitte warten ..
Mitglied: miniversum
10.08.2009 um 22:58 Uhr
Dein drei kürzesten terme sind
( R09 * R014 )
( R014 * R015 )
( R013 * R014 )
verodert mit anderen. das bedeutet doch das alle andern terme indenen "R09 * R014", "R014 * R015 " und "R013 * R014" vorkommen schonmal wegfallen.
Somit reduziert sich das ganze hierauf:
01.
RL1 = ( R09 * R014 ) 
02.
+ ( R013 * R014 ) 
03.
+ ( R014 * R015 ) 
04.
+ ( R08 * R07 * R011 * R010 * R014 ) 
05.
+ ( R08 * R07 * R02 * R03 * R04 * R012 * R010 * R014 ) 
06.
+ ( R08 * R06 * R018 * R011 * R010 * R014 ) 
07.
+ ( R08 * R06 * R018 * R02 * R03 * R04 * R012 * R010 * R014 ) 
08.
+ ( R08 * R06 * R05 * R017 * R011 * R010 * R014 ) 
09.
+ ( R08 * R06 * R05 * R017 * R02 * R03 * R04 * R012 * R010 * R014 ) 
10.
+ ( R08 * R06 * R05 * R012 * R010 * R014 ) 
11.
+ ( R08 * R06 * R05 * R04 * R016 * R011 * R010 * R014 ) 
12.
+ ( R08 * R06 * R05 * R04 * R03 * R02 * R011 * R010 * R014 ) 
13.
+ ( R01 * R02 * R011 * R010 * R014 ) 
14.
+ ( R01 * R02 * R07 * R06 * R05 * R012 * R010 * R014 ) 
15.
+ ( R01 * R03 * R04 * R012 * R010 * R014 ) 
16.
+ ( R01 * R03 * R04 * R05 * R06 * R07 * R011 * R010 * R014 ) 
17.
+ ( R01 * R03 * R04 * R05 * R018 * R011 * R010 * R014 ) 
18.
+ ( R01 * R03 * R04 * R017 * R011 * R010 * R014 ) 
19.
+ ( R01 * R03 * R016 * R011 * R010 * R014 ) 
20.
+ ( R01 * R03 * R016 * R07 * R06 * R05 * R012 * R010 * R014 ) 
21.
+ ( R014 * R010 * R011 * R07 * R06 * R018 * R02 * R01 ) 
22.
+ ( R014 * R010 * R011 * R07 * R06 * R05 * R017 * R02 * R01 ) 
23.
+ ( R014 * R010 * R011 * R07 * R06 * R05 * R04 * R016 * R02 * R01 ) 
24.
+ ( R014 * R010 * R012 * R05 * R018 * R07 * R08 ) 
25.
+ ( R014 * R010 * R012 * R05 * R018 * R02 * R01 ) 
26.
+ ( R014 * R010 * R012 * R017 * R07 * R08 ) 
27.
+ ( R014 * R010 * R012 * R017 * R02 * R01 ) 
28.
+ ( R014 * R010 * R012 * R04 * R016 * R07 * R08 ) 
29.
+ ( R014 * R010 * R012 * R04 * R016 * R02 * R01 )
jetzt noch ein paar sachen vorklammernudn fertig.
Dann das ganze wiederholen.

Es hilft sehr wen du die Reihenfolge sortiert udn bstände läst, so das di werte imem ran der gleichen position unter einande stehen. dan sirehs du was kurz ist udn was andere kombinationen überbrückt.
Programmiertechnisch gibt das eine Tabelle die immer wieder sortiert udn durchsucht wird und bei der imemr wieder gleich vorkommende strukturen vorgeklammert oder gleich ganz gelöscht werden.
Aber wenns nur ein paar Formeln sind wirds woll manuell schneller gehen als bis du was zusammenprogrammiert hast.
Bitte warten ..
Mitglied: inspire
11.08.2009 um 12:38 Uhr
Ihr habt Recht, soweit kann man das im Kopf machen. Doch damit habe ich ewig verbracht, da ich verdammt viele dieser Terme habe...und noch viel größere, bei denen man etliches ausklammern könnte...doch damit würde ich wieder Stunden verbringen, deshalb habe ich gefragt ;)
Bitte warten ..
Mitglied: inspire
11.08.2009 um 19:33 Uhr
Ich habe rausgefunden, dass das Programm Maple mir helfen könnte. Es gibt die Funktion "BooleanSimplify", die so eine lange Gleichung kürzt.

Doch was mich wundert ist, wenn ich das Ergebnis hinterher mittels "Equivalent" prüfe, ob die Funktion mit der Ausgangsfunktion gleichwertig ist, kommt immer false raus :/

Woran liegt das?
Bitte warten ..
Mitglied: miniversum
11.08.2009 um 19:57 Uhr
Rechne doch mal eine gleichung per hand nach ob das ergebniss stimmt. dan weist du ja woran es liegt. Aber es macht schon sinn das die Gleichungen nach der Vereinfachung eben nicht mehr gleich sind, da ja im Gegensatz zu mathematischen Formeln hier auch so einfach ganze Terme wegfallen können und dadurch ja keine wirkliche Umrechnung stattfindet sondern eben erkannt wird das bestimmte Ausdrücke überflüssig werden.
Aus dienem geposteten Beispiel nehme ich einfach mal die ersten paar Zeilen:
01.
RL1 =  
02.
( R09 * R014 ) 
03.
+ ( R09 * R010 * R011 * R07 * R06 * R018 * R02 * R01 * R013 * R014 ) 
04.
+ ( R09 * R010 * R011 * R07 * R06 * R05 * R017 * R02 * R01 * R013 * R014 ) 
05.
+ ( R09 * R010 * R011 * R07 * R06 * R05 * R04 * R016 * R02 * R01 * R013 * R014 ) 
06.
+ ( R09 * R010 * R011 * R07 * R06 * R05 * R04 * R03 * R01 * R013 * R014 ) 
07.
+ ( R09 * R010 * R011 * R02 * R01 * R013 * R014 ) 
08.
+ ( R09 * R010 * R012 * R05 * R06 * R07 * R02 * R01 * R013 * R014 ) 
09.
+ ( R09 * R010 * R012 * R05 * R018 * R02 * R01 * R013 * R014 ) 
10.
+ ( R09 * R010 * R012 * R017 * R02 * R01 * R013 * R014 ) 
11.
+ ( R09 * R010 * R012 * R04 * R016 * R02 * R01 * R013 * R014 ) 
12.
+ ( R09 * R010 * R012 * R04 * R03 * R01 * R013 * R014 )
In den Zeilen 3-12 kommen jeweils die Kombination "R09 * R014" vor. Das kannst du also vorlammern wodurch folgender Ausdruck entsteht:
01.
RL1 = ( R09 * R014 ) * (1 + (der Rest))
Es ist also egal was sosnt noch kommt (im Rest), durch die 1 reicht:
01.
RL1 = ( R09 * R014 )
Und alles andere kann wegfallen. Dadurch sind die Gleichungen eben nicht mehr gleich, aber dennoch korrekt umgeformt.
Bitte warten ..
Mitglied: inspire
11.08.2009 um 20:16 Uhr
Also ist es völlig egal, ob ich die vereinfachte oder die lange Form nehme? Danke, das erleichtert mir vieles!

Achso, mir ist noch aufgefallen, dass Maple die ganzen Klammern entfernt. Ist es denn egal, ob man
(a * b) + (c * d)
oder
a * b + c * d
schreibt?

Eine letzte Frage hab ich dann nebenbei noch, undzwar: Wie kopiert man Text aus Maple raus? Bei mir macht er in z. B. Word immer ein Bild draus :/

Vielen Dank!
Martin
Bitte warten ..
Mitglied: miniversum
11.08.2009 um 20:30 Uhr
Es ist nicht immer egal. Es kommt drauf an ob es logisch ist.
(a * b) + (c * d) zu a * b + c * d geht
(a + b) * (c + d) zu a + b * c + d nicht (so wie ich es kenne zumindest)
Die Zeichen mit Mal und Plus kommen ja nicht ohne Grund. Normalerweiße kommt UND vor ODER, wie eben Punkt vor Strich Rechnung.
Mit Mapel kenne ich mich nicht aus, sorry.
Bitte warten ..
Mitglied: inspire
11.08.2009 um 20:41 Uhr
Ok, da meine Formeln ausschließlich in der Form (a * b) + (c * d) sind, kann ich das wohl so übernehmen, das ist gut

EDIT: Wäre nett, wenn mir jetzt noch jemand sagen könnte, wie ich Text aus Maple raus kopieren kann
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
LAN, WAN, Wireless
Hat On Networks PL500PS WLAN-Funktion? (4)

Frage von Andy1987 zum Thema LAN, WAN, Wireless ...

iOS
IOS 10.2 bringt SOS-Funktion aufs iPhone

Link von sabines zum Thema iOS ...

JavaScript
If Funktion mit wildcards in google sheets script (3)

Frage von Stoffn zum Thema JavaScript ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...