Seite 1 von 1

Normalisierung

Verfasst: 22. Mär 2010 18:47
von levitin
wie wird so was normalisiert?

if{if{if{a,b,c},d,e},f,g}

Wenn man hier auch diese Regel anwendet if{if{a,b,c},d,e} = if{a, if{b,c,d}, if{c,d,e}} fängt man von Ihnen oder von außen an?

Re: Normalisierung

Verfasst: 22. Mär 2010 20:16
von jonas
Hi,

ohne mich lange damit beschäftigt zu haben frage ich mich wo du auf Unterschiede kommst in Bezug auf "von innen" oder "von außen" ?


Ich würde es intuituv so machen:

if{if{if{a,b,c},d,e},f,g} => if{a, if{if{b,d,e},f,g}, if{if{c,d,e},f,g} }

if{if{b,d,e},f,g}} => if{b, if{d,f,g}, if{e,f,g}}
if{if{c,d,e},f,g}} => if{c, if{d,f,g}, if{e,f,g}}

also zusammengefasst:
if{if{if{a,b,c},d,e},f,g} => if{a, if{b, if{d,f,g}, if{e,f,g}}, if{c, if{d,f,g}, if{e,f,g}} }

Einwände? Bzw andere Varianten?

Re: Normalisierung

Verfasst: 22. Mär 2010 20:17
von oren78
levitin hat geschrieben:wie wird so was normalisiert?

if{if{if{a,b,c},d,e},f,g}

Wenn man hier auch diese Regel anwendet if{if{a,b,c},d,e} = if{a, if{b,c,d}, if{c,d,e}} fängt man von Ihnen oder von außen an?
hey gleb ;-)
also, du musst dich von innen nach außen durchkämpfen, mein ansatz wäre....
----------------------------------------------------------------------------------------------------
if{if{if{a,b,c},d,e},f,g} \(=\) if{a,if{b,if{d,f,g}, if{e,f,g}}, if{c,if{d,f,g}, if{e,f,g}}}

kann das jemand bitte bestätigen..? ;-)

Re: Normalisierung

Verfasst: 22. Mär 2010 20:38
von Blub
oren78 hat geschrieben:
levitin hat geschrieben:----------------------------------------------------------------------------------------------------
if{if{if{a,b,c},d,e},f,g} \(=\) if{a,if{b,if{d,f,g}, if{e,f,g}}, if{c,if{d,f,g}, if{e,f,g}}}

kann das jemand bitte bestätigen..? ;-)
ist bestätigt. Hab die gleiche raus.

Re: Normalisierung

Verfasst: 22. Mär 2010 20:42
von oren78
Blub hat geschrieben:ist bestätigt. Hab die gleiche raus.
Yessssssssss !!! 8) :)

Re: Normalisierung

Verfasst: 23. Mär 2010 01:33
von brotkasten
oren78 hat geschrieben:
Blub hat geschrieben:ist bestätigt. Hab die gleiche raus.
Yessssssssss !!! 8) :)
Für alle die üben und ihre Lösungen überprüfen wollen, sofern ihr kein Java scheut :)

Code: Alles auswählen

public class Verifun {
	public static boolean iff(boolean a, boolean b, boolean c) {
		return (a) ? b : c;
	}

	public static void main(String[] args) {
		//Anzahl der Variablen festlegen...
		boolean[] b = new boolean[7];

		for (int i = 0; i < (1 << b.length); i++) {
			for (int j = 0; j < b.length; j++) {
				b[j] = (i & (1 << j)) != 0;
			}
			
			//hier die zu vergleichenden if-Terme einfügen
			boolean iff_1 = iff(iff(iff(b[0], b[1], b[2]), b[3], b[4]), b[5], b[6]);
			boolean iff_2 = iff(b[0], iff(b[1], iff(b[3], b[5], b[6]), iff(b[4], b[5], b[6])), iff(b[2],
					iff(b[3], b[5], b[6]), iff(b[4], b[5], b[6])));

			if (iff_1 != iff_2) {
				System.out.print("Gegenbeispiel: ");
				for (int j = 0; j < b.length; j++) {
					if (j != 0) {
						System.out.print(", ");
					}
					System.out.print(b[j] ? "T" : "F");
				}
				System.out.println();
			}
		}
	}
}

Re: Normalisierung

Verfasst: 23. Mär 2010 01:37
von oren78
brotkasten hat geschrieben: Für alle die üben und ihre Lösungen überprüfen wollen, sofern ihr kein Java scheut....
für die jenigen die lieber verifun bevorzugen:

Code: Alles auswählen

structure Cond.Expr <=
   T,
   F,
   PROP(index : N),
   IF(test : Cond.Expr, left : Cond.Expr, right : Cond.Expr)

function normalize(x : Cond.Expr) : Cond.Expr <=
   if ?IF(x) then
       if ?IF(test(x)) then normalize(IF(test(test(x)), IF(left(test(x)), left(x), right(x)), IF(right(test(x)), left(x), right(x))))
       else IF(test(x), normalize(left(x)), normalize(right(x)))
   fi
   else x
fi