Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Booleaanse vereenvoudiging

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.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
meijuh
Artikelen: 0
Berichten: 202
Lid geworden op: ma 20 nov 2006, 21:11

Re: Booleaanse vereenvoudiging

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.
Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Re: Booleaanse vereenvoudiging

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.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
Gebruikersavatar
Cycloon
Artikelen: 0
Berichten: 4.810
Lid geworden op: ma 24 jan 2005, 20:56

Re: Booleaanse vereenvoudiging

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)\)
Gebruikersavatar
Vladimir Lenin
Artikelen: 0
Berichten: 829
Lid geworden op: do 25 sep 2008, 14:15

Re: Booleaanse vereenvoudiging

idd, had ik nog niet gezien, bedankt.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Booleaanse vereenvoudiging

Misschien kun je iets met Karnaugh-diagrammen.

Terug naar “Informatica en programmeren”