1 van 1

Booleaanse vereenvoudiging

Geplaatst: do 12 feb 2009, 14:31
door Vladimir Lenin
Ik ben bezig met een programma waarbij ik af en toe booleaanse functies gebruik, nu had ik een functie die er als volgt uitzag:
\(\left(\neg T_1\wedge\neg T_2\wedge I_2\right)\\\vee\left(\neg T_1\wedge T_2\wedge\neg I_1\wedge I_2\right)\vee\left(\neg T_1\wedge T_2\wedge I_1\wedge\neg I_2\right)\vee\left(T_1\wedge\neg T_2\wedge\neg I_2\right)\vee\left(T_1\wedge T_2\wedge\neg I_1\wedge\neg I_2\right)\vee\left(T_1\wedge T_2\wedge I_1\wedge I_2\right)\)
Nu wil ik natuurlijk die functie drastisch vereenvoudigen, omdat een computers anders veel werk aan zo'n functie heeft, terwijl die met een eenvoudiger vorm uiteraard sneller berekent wordt. Ik probeer dus een functie te zoeken die het equivalent is met deze functie, maar met (veel) minder operatoren.

Zelf heb ik ze denk ik al wat vereenvoudigt, maar ik ben niet heel zeker of dat nu op de goede manier gebeurt is.

hier mijn vereenvoudiging:
\(=\left(\neg T_2 \wedge\neg\left(T_1\Leftrightarrow I_2\right)\right)\vee\left(\neg I_1\wedge\left(\left(\neg T_1\wedge T_2\wedge I_2\right)\vee\left(T_1\wedge T_2\wedge\neg I_2\right)\right)\right)\vee\left(I_1\wedge\left(\left(\neg T_1\wedge T_2\wedge\neg I_2\right)\vee\left(T_1\wedge T_2 \wedge I_2\right)\right)\right)\)
en verder:
\(=\left(\neg T_2 \wedge\neg\left(T_1\Leftrightarrow I_2\right)\right)\vee\left(\neg I_1\wedge T_2 \wedge \neg\left(T_1\Leftrightarrow I_2\right)\right)\vee\left(I_1\wedge T_2\wedge\left(T_1\Leftrightarrow I_2\right)\right)\)
vervolgens:
\(=\left(\neg T_2 \wedge\neg\left(T_1\Leftrightarrow I_2\right)\right)\vee\left(T_2\wedge\left(I_1\Leftrightarrow\left(T_1\Leftrightarrow I_2\right)\right)\right)\)
Weet iemand of die vereenvoudiging nog klopt en zo ja, of je nog een stapje verder kan gaan. Volgens mij wel, daar je in de 2 leden hetzelfde schrijft, maar hoe vereenvoudig je dat, als er links geen
\(I_1\)
staat en rechts wel.

Re: Booleaanse vereenvoudiging

Geplaatst: do 12 feb 2009, 14:54
door meijuh
Als je wil weten of de vergelijking klopt met de eerste kun je een waarheidstabel maken.

http://en.wikipedia.org/wiki/Truth_table

Ik zal zo proberen of ik de vergelijking kan vereenvoudigen, vind ik wel leuk om te doen.

Misschien wil het mooi als je direct al de formule in de vorm (p v q v s) ^ ( t v -s v q) schrijft want dan kun je de rules of inference gebruiken, ik weet niet of dit echt handig is.

Re: Booleaanse vereenvoudiging

Geplaatst: do 12 feb 2009, 15:09
door Vladimir Lenin
Ik heb zonet een waarheidstabel opgesteld, en hij klopt, de vereenvoudiging klopt dus, maar ik zoek dus naar de grootste vereenvoudiging met de minste operatoren en oproepen van variabelen, voor mijn part mag de formule in kwestie zeer onleesbaar zijn.

Re: Booleaanse vereenvoudiging

Geplaatst: do 12 feb 2009, 18:15
door Cycloon
Mss nog deze vereenvoudiging waarmee je 1 not operator bespaard:
\(=\neg\left(T_2 \vee\left(T_1\Leftrightarrow I_2\right)\right)\vee\left(T_2\wedge\left(I_1\Leftrightarrow\left(T_1\Leftrightarrow I_2\right)\right)\right)\)

Re: Booleaanse vereenvoudiging

Geplaatst: do 12 feb 2009, 18:29
door Vladimir Lenin
idd, had ik nog niet gezien, bedankt.

Re: Booleaanse vereenvoudiging

Geplaatst: vr 13 feb 2009, 20:37
door EvilBro
Misschien kun je iets met Karnaugh-diagrammen.