Thread Ein Constraint System
(25 answers)
Opened by kabel at 2005-04-14 11:33
ziel: modellierung des satzes von pythagoras als Constraint System (CS).
was ist ein CS? jeder hat doch schonmal ne tabellenkalkulation benutzt :) dahinter steht ein CS. wenn die zelle A4 den constraint "=A2+A3" enthält, dann wird bei jeder änderung einer der beiden zellen A2 oder A3 die zelle A4 mitgeändert, und zwar so, dass A4=A2+A3 gilt. wikipedia.org sagt zu constraint: Quote also ist "=A2+A3" ein constraint, denn die zelle A4 kann nun mitnichten alle möglichen werte annehmen, sondern ist immer gleich dem wert von A2+A3. wie funktioniert das ganze? $tabellenkalkulation stellt fest, dass der eingegebene wert mit "=" anfängt. - falls nun hinter dem "=" ein ausdruck anfängt, der ohne referenzen auf andere zellen berechnet werden kann (z.b. "=1+2+3"), dann wird der wert direkt berechnet und eingetragen, wobei die formel erhalten bleibt. diesen fall lass ich unter den tisch fallen. - der interessantere fall ist einer mit referenzen auf andere zellen. sagen wir z.b. zelle A4 mit dem constraint "=A2+A3". zelle A4 muss nun lauschen, ob sich A2 oder A3 geändert hat, denn bei jeder änderung müssen wir den constraint einhalten (klingeling an die pattern fraktion). nun weg von den tabellenkalkulationen hin zu einer implementierung: die zellen in der tabellenkalkulation entsprechen den variablen in der gleichung. die constraints geben eine rechenbedingung an. eine mögliche modellierung ist also ein Addierer objekt "a", das referenzen zu drei Variablen objekte "v1", "v2", "summe" hält. ebenso enthalten alle variablen referenzen auf die constraints. http://wwwcip.informatik.uni-erlangen.de/~sisthank... wenn sich nun v1 ändert, dann teilt "v1" die änderung dem adder mit. der weiss nun, dass sich die variable "v1" geändert hat. also wird er den wert von summe neu berechnen und dann den wert von "summe" neu setzen. (weitergedacht: jetzt hat sich summe geändert, also wird summe wiederum eine änderung propagieren usw. das geht durch das ganze system durch, bis sich wieder ein stabiler zustand einpendelt) bei binären operatoren gibts dann noch eine schwierigkeit, die ich verschweige :) die anderen operatoren die wir für den pythagoras brauchen sind (fast) genauso aufgebaut. die wurzel operation und das quadrieren können mit objekten des typs "Exponierer" modelliert werden, der den exponenten als parameter bekommt. das endgültige system sieht so aus: http://wwwcip.informatik.uni-erlangen.de/~sisthank... bei meiner lösung dürfen operatoren nur mit variablen und andersrum verbunden werden, deswegen habe ich noch temporäre variablen ti eingefügt. have fun 8) -- stefan
|