Constraint Logical Programming
|
|
- Clara Weiss
- vor 8 Jahren
- Abrufe
Transkript
1 Constraint Logical Programming Betreuer: Thomas Ströder Proseminar: Fortgeschrittene Programmierkonzepte in Java, Haskell und Prolog Rene Niewianda, Martin Breuer 15. Juni Einleitung: Das Ziel dieses Vortrags ist, grundlegende Strukturen der Constraint Programmierung am Beispiel der Constraint-Theorie für finite Domains kennen zu lernen. Dabei betrachten wir die Auswertung der Constraints und vergleichen Programmieraufwand sowie die Laufzeit von normalen, uns bekannten Logikprogrammen und Logikprogrammen mit Constraints unter Verwendung der Prolog Implementierung SWI-Prolog. Inhaltlich orientieren wir uns an den Vorlesungsnotizen der Vorlesung Logikprogrammierung [Gie13]. 1.1 Was ist ein Constraint? Ein Constraint ist eine Einschränkung, Bedingung oder Relation zwischen Termen. Diese Terme sind einfache logische Formeln, z. B. X #= Y+1 oder {X*X=Y}, wobei das # und die geschweiften Klammern der Notation in Prolog entsprechen. Wie genau diese Ausdrücke ausgewertet werden bzw. wann sie wahr sein sollen, wird in einer so genannten Constraint-Theorie festgelegt. 1.2 Constraint-Theorie Eine Constraint-Theorie ist eine Erweiterung der in einem Logikprogramm vorhandenen Prädikate. Würde man eine leere Constraint-Theorie verwenden, so würde das Programm einem normalen, uns bekannten Logikprogramm entsprechen. In Prolog gibt es mehrere Constraint-Theorien, u. a. eine für reelle Zahlen ( CLPR ) und eine für ganze Zahlen ( CLP(FD) ), wobei CLP für Constraint Logical Programming, R für Real und FD für Finite Domain steht. In der Constraint-Theorie CLPR werden reelle Zahlen durch Fließkommazahlen repräsentiert. Eine genaue Darstellung aller reeller Zahlen ist folglich nicht möglich. Diese Erweiterungen sind als Module in Prolog verfügbar. Sie lassen sich einfach über :-use module(library(clpr)). 1
2 oder :- use module(library(clpfd)). in ein Logikprogramm einbinden. Bei den hier aufgeführten Beispielen sei die jeweilige Constraint-Theorie stets konsultiert. Weitere Beispiele für Constraints sind: CLP(FD) CLPR X #= Y+1 {X = Y + 1} X #>= Y*10 {X >= Y*10} X #\= Y {X =\= Y} X*X #\= Y + 1 {X*X =\= Y+1} 2 Die Constraint-Theorie CLP(FD) 2.1 Die Auswertung mit Finite Domains in SWI-Prolog Bei einem Logikprogramm mit Constraints, werden die Relationen zwischen den Variablen oder Termen gesammelt und vereinfacht. Die gesammelten Constraints bzw. Relationen werden daraufhin durch den Constraint-Solver ausgewertet. Wir betrachten nun anhand eines Beispiels, wie der Constraint-Solver eine Konjunktion von Constraints auswertet, wobei das Sammeln der Constraints in diesem Beispiel trivial ist (ein komplexeres Beispiel zum Sammeln der Constraints ist in 3.3 zu finden):? X1 #> X2, X2 #> 5, X1 #< 8. Für jede Variable (X 1,..., X n ) der Constraints werden Domains (D 1,..., D n ), wobei n die Anzahl der Variablen der Constraints ist, angelegt, die zuerst alle auf Z gesetzt werden. Normale Prädikate werden hierbei insofern umgeschrieben, dass ihre Variablen nicht, wie bei der normalen Logikprogrammierung, direkt unifiziert, sondern durch Constraints ersetzt werden. Vereinfachend gesagt wird für eine Variable eines normalen Prädikats eine Domain angelegt. Wir durchlaufen die Constraints solange, bis sich die Domains nicht mehr ändern, wobei wir die Domains an die Bedingungen anpassen: Zuerst setzen wir die Domains D 1 = Z und D 2 = Z. Wenn wir nun den ersten Constraint X1 #> X2 betrachten, fällt auf, dass die Domains nicht verändert werden müssen, da wir nur den ersten Constraint isoliert betrachten. Betrachten wir hingegen den zweiten Constraint, so ändern sich die Domains auf D 1 = Z und D 2 = {6, 7,.., }. Beim dritten Constraint X1 #< 8 werden wiederum die Domains eingeschränkt: D 1 = {,.., 7} und D 2 = {6, 7,.., }. Nun beginnen wir bei den Constraints von vorne und prüfen, ob die Domains verändert werden müssen. Wir durchlaufen die Constraints mehrmals, um die Zusammenhänge zwischen den Variablen zu erfassen. Mit dem ersten Constraint X1 #> X2 folgt nun: D 1 = {7} und D 2 = {6}. Falls keine Änderungen beim wiederholten isolierten Betrachten der einzelnen Constraints stattfinden und alle Domains nicht leer sind, nennt 2
3 man die Konjunktion der Constraints pfadkonsistent. Als letztes wird also die Pfadkonsistenz geprüft und somit folgt (da die Domains nicht leer sind), dass die Lösungen der Anfrage X1 = 7 und X2 = 6 sind.? X1 #> X2, X2 #> 5, X1 #< 8. X1 = 7, X2 = 6. Falls die Auswertung leere Domains als Ergebnis haben sollte, so wird die Anfrage mit false. beantwortet. Als Notation für unendlich große und kleine Werte werden die Schlüsselwörter sup und inf als Ergebnis ausgegeben. Einen Vorteil, den wir hier sehen, ist die Bidirektionalität der Constraints, d. h. wir müssen während der Implementierung der Prädikate nicht wissen, welche Werte wir gegeben haben bzw. berechnen wollen, da wir lediglich Zusammenhänge bzw. Relationen zwischen den Variablen festlegen. Bei der Logikprogrammierung ohne Constraints muss z. B. beim infix Prädikat is/2 die rechte Seite komplett ausgewertet sein. Hierzu betrachten wir ein Beispiel, welches sowohl in Standard-Prolog als auch mit Constraints implementiert wurde: Ohne Constraints: minuszehn (X, Y) : Y i s X 1 0. Stellen wir nun eine Anfrage an das Programm, bei der uns die Variable Y bekannt und X unbekannt ist, erhalten wir einen Instanziierungsfehler:? minuszehn (X, 1 0 ). ERROR: i s / 2 : Arguments are not s u f f i c i e n t l y i n s t a n t i a t e d Betrachten wir nun das bidirektionale Programm mit Constraints: : use module ( l i b r a r y ( c l p f d ) ). minuszehnc (X, Y) : Y #= X 10. So können wir ohne weiteres die gleiche Anfrage stellen und erhalten ein sinnvolles Ergebnis:? minuszehnc (X, 1 0 ). X = 2 0. Ein dadurch entstandener Vorteil ist, dass sich die Constraint Programme universeller einsetzen und wiederverwenden lassen. Ist die Berechnung einer Variable X, die nur von Y abhängig ist, deutlich schwerer zu implementieren, als die Berechnung von Y, so können wir mithilfe von Constraints die andere Richtung implementieren. Dadurch könnte z. B. vermieden werden komplexe arithmetische Operationen zu verwenden. Dies führt zu einer deutlichen Verbesserung des Programmierkomforts bzw. einer Vereinfachung der Problemlösung. Siehe hierzu auch das Beispiel in
4 2.2 Nützliche Prädikate von CLP(FD) In der Constraint-Theorie CLP(FD) sind verschiedene Prädikate implementiert, die einem das Lösen von kombinatorischen Problemen ermöglichen bzw. deutlich erleichtern. Wir wollen nun ein paar der nützlichsten Prädikate der CLP(FD) Constraint-Theorie betrachten. Ein besonderes Augenmerk soll auf Prädikate gelegt werden, die Eigenschaften bzw. Bedingungen an Listen stellen. Um eine Liste XS von Zahlen zwischen 1 und 30 zu erzeugen, benutzen wir den Constraint XS ins 1..30, der besagt, dass jedes Element von XS einen Wert zwischen 1 und 30 besitzt. Wollen wir nun die Anzahl der Elemente auf einen Beispielwert von 9 festlegen, so können wir das vordefinierte Prolog Prädikat length(xs, 9) verwenden. An dieser Stelle soll betont werden, dass length/2 kein Prädikat von CLP(FD) ist und es lediglich zum Instanziieren der Liste benötigt wird. Wenn wir die Anfrage length(xs,9), XS ins stellen, so erhalten wir eine Liste, wobei für jedes Element lediglich in angegeben wird. Möchten wir jedoch konkrete Werte für jedes Element haben, so können wir dies mit label/1 lösen, sodass Prolog nun statt Wertebereichen konkrete Werte liefert:? length (XS, 9 ), XS i n s , l a b e l (XS ). XS = [ 1, 1, 1, 1, 1, 1, 1, 1, 1 ] Zu beachten ist bei der Nutzung von label/1, dass die Menge der möglichen Werte für eine Variable endlich sein muss. Falls die Menge unendlich ist, so liefert die Anfrage einen Fehler. Ein solcher Fehler könnte wie folgt aussehen:? X1 #> 3, X1 i n i n f.. sup, l a b e l ( [ X1 ] ). ERROR: Arguments are not s u f f i c i e n t l y i n s t a n t i a t e d Wenn für X1 jedoch eine feste obere Schranke gewählt wird, könnte folgende Ausgabe erfolgen:? X1 #> 3, X1 i n i n f.. 6, l a b e l ( [ X1 ] ). X1 = 4 ; X1 = 5 ; X1 = 6. Nun wollen wir jedoch paarweise unterschiedliche Werte in unserer Liste vorfinden. Um dies zu realisieren, gibt es das Prädikat all different/1, welches angewandt auf unsere Liste dafür sorgt, dass alle Werte paarweise unterschiedlich sind:? length (XS, 9 ), XS i n s , a l l d i f f e r e n t (XS), l a b e l (XS ). XS = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]. Angenommen uns wäre wichtig, dass die Summe der Elemente größer als 100 sein sollte, so ließe sich dies mit dem Prädikat sum/3 realisieren, wobei der erste Parameter die Liste, der Zweite eine Relation (#=, #>, #<, usw.) und 4
5 der Letzte ein Ausdruck ist, zu dem die Summe der Elemente in Relation stehen soll:? length (XS, 9 ), XS i n s , a l l d i f f e r e n t (XS), sum(xs,# >,100), l a b e l (XS ). XS = [ 1, 2, 3, 4, 5, 6, 21, 29, 3 0 ]. Wir haben nun den Gedanken gefasst, dass wir an sechster Stelle in der Liste unbedingt eine 13 haben möchten, so können wir dies mit dem Prädikat element(6,xs,13) festlegen:? length (XS, 9 ), XS i n s , element ( 6, XS, 13), a l l d i f f e r e n t (XS), sum(xs, #=, 100), l a b e l (XS ). XS = [ 1, 2, 3, 4, 5, 13, 14, 28, 3 0 ]. Weitere Prädikate für fortgeschrittenere Anwendungsgebiete (z. B. endliche Automaten) sind in dem SWI-Prolog Manual [Tri12] 1 zu finden, welches auch als Quelle für diesen Abschnitt verwendet wurde. 2.3 Mechanismen zur Verbesserung der Laufzeit Um die Performance der CLP(FD) Auswertung zu verbessern, werden arithmetische Constraints zur Kompilezeit überschrieben, sodass lower-level Prädikate wann immer möglich benutzt werden (Übersetzung aus [Tri]). Somit wird die Performance des Constraint solvers mithilfe von Low-Level-Code automatisch verbessert. Da der SWI-Prolog Finite Domain Constraint Solver in Prolog implementiert ist, steht die Performance der Auswertung in Relation zur Performance des unterliegenden Prolog Systems. Dies hat den Nachteil, dass sich ein ineffizientes Grundsystem auf die endgültige Performance des Constraint-Solvers auswirkt. Es existieren effizientere Systeme als SWI-Prolog, der Vorteil dieses Systems ist jedoch, dass es mit großen ganzzahligen Werten rechnen kann [Tri12]. 3 Vergleich von Prolog mit und ohne Constraints Im Folgendem wollen wir durch den Vergleich an einem konkreten Beispiel die Unterschiede zwischen Prolog mit und ohne Constraints untersuchen. Dazu betrachten wir das N-Damen Problem. 3.1 Das N-Damen Problem Kern dieses Problems ist es, n Damen auf einem n*n großen Schachfeld zu platzieren, ohne dass sie sich gegenseitig schlagen können. Das heißt, dass in den Spalten und Zeilen des Feldes jeweils nur eine Dame stehen darf. Zusätzlich dürfen auch keine Damen auf der gleichen Diagonalen stehen
6 Abbildung 1: Zugrichtungen Wir betrachten zunächst die trivialen Fälle: 1,2,3 Damen. Bei einer Dame ist die Lösung offensichtlich, da es nur ein Feld und eine Dame gibt. Die Fälle mit zwei bzw. drei Damen sind nicht lösbar, da es keine Möglichkeit gibt, die Damen mit Berücksichtigung der oben beschriebenen Regeln zu platzieren. (a) 1-Dame (b) 2-Damen (c) 3-Damen(1) (d) 3-Damen(2) Abbildung 2: Triviale Fälle Im Folgenden werden wir das Schachfeld mit den platzierten Damen als Liste auffassen, sodass der Platz einer Zahl in der Liste die jeweilige Spalte auf dem Feld angibt und die Zahl selbst die Zeile. Hier ein Beispiel zur Liste [5,2,4,1,3] : Abbildung 3: 6
7 3.2 Lösung des Problems mit Constraints : use module ( l i b r a r y ( c l p f d ) ). queens (N, L) : length (L,N), L i n s 1.. N, a l l d i f f e r e n t (L) s a f e (L), l a b e l (L ). s a f e ( [ ] ). s a f e ( [X Xs ] ) : s a f e b e t w e e n (X, Xs, 1 ), s a f e ( Xs ). s a f e b e t w e e n (X, [ ],M). s a f e b e t w e e n (X, [ Y Ys ],M) : n o a t t a c k (X,Y,M), M1 #= M + 1, s a f e b e t w e e n (X, Ys,M1). n o a t t a c k (X,Y,N) : X+N #\= Y, X N #\= Y. Programmcode siehe [Gie13]. Die folgenden Erklärungen orientieren sich an [Gie13]. Die Eingabe für dieses Programm ist queens(n,l), wobei N die Größe des Feldes bzw. die Anzahl der Damen angibt und L die Liste mit deren Positionen. Wir überprüfen mit dem vordefinierten Prädikat lenght/2, ob L die korrekte Länge, also N hat. Die drei Prädikate +Vars ins +Domains, all different() und label/1 sind in der clpfd-bibliothek vordefiniert. Mit ins wird überprüft, ob die Zahlen in L im Bereich 1 bis N liegen, sodass zusammen mit length/2 sichergestellt wird, dass die Höhe und Breite des Feldes eingehalten wird. Mit dem Prädikat all different/1 wird sichergestellt, dass keine zwei Damen in derselben Zeile stehen. Zusammen mit dem allgemeinen Aufbau der Liste L ist so sichergestellt, dass sich keine Damen auf Geraden schlagen können. Durch das Prädikat safe/1 wird die letzte Anforderung an L geprüft, dass keine zwei Damen auf der selben Diagonalen stehen. Dazu werden alle Spalten rechts einer Dame überprüft. Hier werden die beiden Hilfsprädikate safe between/3 und no attack/3 verwendet. safe between(x,l,m) wird wahr, wenn die Dame in der Zeile X die Dame in der Zeile L, welche M Spalten entfernt ist, nicht schlagen kann. Dazu wird zusätzlich das Prädikat no attack/3 verwendet, um dies sicherzustellen. no attack(x,y,n) wird wahr, wenn die Dame X nicht auf der Diagonalen der Dame Y steht, welche N Spalten entfernt ist. Dieses Programm ist bidirektional, d.h. es kann sowohl zu einer Liste das entsprechende N bestimmen (wobei die Liste auf Richtigkeit geprüft wird) 7
8 als auch aus einem N die entsprechenden Ergebnislisten bestimmen. Für N=4 ist die Ein- und Ausgabe :? queens ( 4,L ). L = [ 2, 4, 1, 3 ] ; L = [ 3, 1, 4, 2 ] ; f a l s e. 3.3 Auswertung am Beispiel von N = 4 In Prolog werden die Prädikate der Reihe nach von links nach rechts und von oben nach unten abgearbeitet, sodass bei der Anfrage?-queens(4,L). folgende Schritte durchgeführt werden: Als ersten Schritt erzeugen wir mithilfe von length/2 eine Liste der Länge vier, die als Elemente Variablen enthält und später die Position einer Dame in der jeweiligen Spalte repräsentiert. Damit wir die folgenden Ausgaben von SWI-Prolog besser lesen können, wurden die ausgegebenen Variablennamen (z. B. G4888) durch besser lesbare (z. B. X1) ersetzt:? length (L, 4 ). L = [ X1, X2, X3, X4 ]. Da die Nummer der Zeile, in der sich eine Dame befinden kann, zwischen 1 und 4 bewegt, reduzieren wir den Wertebereich der Variablen auf 1 bis 4:? length (L, 4 ), L i n s L = [ X1, X2, X3, X4 ], X1 i n 1.. 4, X2 i n 1.. 4, X3 i n 1.. 4, X4 i n Nun stellen wir sicher, dass sich keine Dame in der gleichen Zeile befindet, indem wir mit all different/1 die paarweise Unterschiedlichkeit der Einträge sichern:? length (L, 4 ), L i n s 1.. 4, a l l d i f f e r e n t (L ). L = [ X1, X2, X3, X4 ], X1 i n 1.. 4, a l l d i f f e r e n t ( [ X1, X2, X3, X4 ] ), X2 i n 1.. 4, X3 i n 1.. 4, X4 i n Wir sehen nun, dass Prolog für den ersten Listeneintrag Werte von eins bis vier zulässt und von dort ausgehend mit all different/1 gleiche Werte ausschließt. Im nächsten Schritt stellen wir sicher, dass sich in einer Diagonalen nur eine Dame befindet, wobei hier wiederum Ungleichungen gesammelt werden: 8
9 ? length (L, 4 ), L i n s 1.. 4, a l l d i f f e r e n t (L), s a f e (L ). L = [ X1, X2, X3, X4 ], X1 i n 1.. 4, X1#\=X4+3, X4#\=X1+3, X1#\=X3+2, X3#\=X1+2, X1#\=X2+1, X2#\=X1+1, a l l d i f f e r e n t ( [ X1, X2, X3, X4 ] ), X4 i n 1.. 4, X3#\=X4+1, X4#\=X3+1, X2#\=X4+2, X4#\=X2+2, X3 i n 1.. 4, X2#\=X3+1, X3#\=X2+1, X2 i n Im letzten Schritt, nachdem wir alle Relationen zwischen den Variablen aufgestellt haben, lassen wir uns mithilfe von label/1 konkrete Werte ausgeben. Für die Berechnung der jeweiligen Werte ist der Constraint-Solver 2 zuständig, der, wenn wir mit einem Semikolon erzwingen, dass weitere Werte gesucht werden, diese unter Zuhilfenahme von Backtracking findet:? length (L, 4 ), L i n s 1.. 4, a l l d i f f e r e n t (L), s a f e (L), l a b e l (L ). L = [ 2, 4, 1, 3 ] ; L = [ 3, 1, 4, 2 ] ; f a l s e. 3.4 Vergleich mit einer constraintfreien Lösung Um die Unterschiede des gerade vorgestellten Programms zu dem Programm mit Constraints zu verdeutlichen, werden wir es mit dem folgendem constraintfreien Programm vergleichen. e r z l i s t e n ( [ 1 ], 1 ). e r z l i s t e n ( [N XS ],N) : NMO i s N 1, e r z l i s t e n (XS,NMO),!. queens (N, L) : length (L,N), e r z l i s t e n (R,N), permutation (L,R), s a f e (L ). s a f e ( [ ] ). s a f e ( [X Xs ] ) : s a f e b e t w e e n (X, Xs, 1 ), s a f e ( Xs ). s a f e b e t w e e n (X, [ ], M). s a f e b e t w e e n (X, [ Y Ys ],M) : n o a t t a c k (X,Y,M), M1 i s M + 1, s a f e b e t w e e n (X, Ys,M1). n o a t t a c k (X,Y,N) : R i s (X+N), Y \== R,Q i s X N, Y \== Q. Zuerst werden wir die Funktionsweise grob umreißen und danach die Vorteile der Constraint-Lösung hervorheben. Dieses Programm ist, wie das Constraint-Programm, bidirektional. Dies kann nicht bei allen constraintfreien Programmen sichergestellt werden, da 2 Wie der Solver im Einzelnen funktioniert, wurde bereits im Abschnitt 2.1 beispielhaft erklärt. 9
10 es darauf ankommt, wie die einzelnen Prädikate konstruiert sind bzw. verwendet werden. Hier wurden Constraints wie #= in is Prädikate umgewandelt. is ist jedoch unidirektional, was hier aber keinen Unterschied macht, da das Prädikat safe/1 in beiden Fällen nur in eine Richtung aufgerufen wird. Die Constraints +Vars ins +Domains, all different/1 und label/1 wurden durch eine Kombination der Prädikate erzlisten/2 und permutation/2 ersetzt. erzlisten(l,n) wird wahr, wenn die Liste L die Elemente von 1 bis N in absteigender Reihenfolge enthält.? e r z l i s t e n (L, 4 ) L = [ 4, 3, 2, 1 ] Der Cut am Ende der Funktion verhindert lediglich das Auftreten von Fehlern. Da es nur ein mögliches richtiges Ergebnis gibt, würde eine Fortsetzung der Suche nicht mehr terminieren. Das vordefinierte Prädikat permutation(r,l) ist wahr, wenn R eine Permutation von L ist. Diese beiden Prädikate zusammen erzeugen nacheinander alle Listen der Länge N mit den Elementen von 1 bis N. Diese sind wichtig für den Schritt von einem N zu einer Liste. Um von einer Liste zu einem N zu kommen, wird mit dem Prädikat length/2 sichergestellt, welches zuerst die Länge der Liste misst, dass erzlisten/2 ausreichend instanziiert ist (was unerlässlich für Bidirektionalität ist). Im Rest des Codes sind lediglich die Rechnungen ersetzt worden, was aber in diesem Fall, wie gerade beschrieben, keinen Unterschied macht. Betrachten wir einen weiteren Unterschied der beiden Programme und zwar die Laufzeiten. Dieser Unterschied zeigt sich deutlich durch Tests mit verschiedenen Eingaben. Wir verwenden time/1, um die Zeit zu messen. Wir betrachten nur die Zeit bis zum ersten Ergebnis: N Mit C. Ohne C s 0.000s s 0.000s s 0.000s s 0.145s s 0.980s s 9.8s s 93s s 1327s 10
11 Hier zeigt sich klar und deutlich, dass durch Constraints die Auswertung bestimmter Prädikate optimiert wird, sodass sie nicht wie in der constraintfreien Lösung wie ein reines Logikprogramm ausgewertet werden. Die schnelle Zunahme der Laufzeit lässt sich dadurch erklären, dass es N! verschiedene Listen gibt und das Programm alle nacheinander überprüft, bis es eine richtige Lösung gefunden hat. Es ist noch anzumerken, dass je nachdem, wie das Programm implementiert ist, die Laufzeit variieren kann, da die Reihenfolge, in der die Listen überprüft werden, eine große Rolle spielt. 4 Fazit Wie wir gesehen haben, haben Constraints viele Vorteile gegenüber normaler Logikprogrammierung. Es ist meistens intuitiver zu programmieren, da man nicht prüfen muss, ob bei jeder Eingabevariation alle Prädikate ausreichend instanziiert sind. Es reicht meist aus, dies für eine Richtung zu tun. Der Rest wird dann durch die Bidirektionalität der Constraints übernommen. Das erhöht die Wiederverwendbarkeit, wie bereits oben erwähnt. Durch diese Vorteile und die Tatsache, dass viele häufig verwendeten Prädikate bereits vordefiniert sind, werden die Programme in sich und Programme, die die Prädikate weiter verwenden, leichter lesbar, da man nicht alle Prädikate erst erschließen muss. Ein weiterer nicht zu vernachlässigender Vorteil ist die Laufzeit, welche vor allem bei komplexen Programmen und Anfragen eine Rolle spielt, da die Programme um ein vielfaches schneller laufen. Abschließend lässt sich also sagen, dass Constraints für die Arithmetik in Prolog eine nötige und sinnvolle Erweiterung darstellen. Da wir bisher nur die Constraint-Theorie CLP(FD) betrachtet haben, wollen wir noch einen kurzen Blick auf eine andere Theorie werfen. 5 Ausblick 5.1 Constraint Logical Programming over Rationals C B Abbildung 4: A Wir betrachten nun ein Anwendungsbeispiel für Constraints mit rationalen bzw. reellen Zahlen, welches wir bereits in dem Kurzvortrag kennen gelernt haben. Wir wollen Seitenlängen eines rechtwinkligen Dreiecks mithilfe des Satzes von Pythagoras (A 2 + B 2 = C 2 ) bestimmen. Dabei sind die Bezeichnungen der jeweiligen Seiten wie in Abbildung 4 gewählt. Die Relation zwischen den Variablen ist hierbei nicht linear. In der Gleichung müssen immer zwei von drei Va- 11
12 riablen gegeben sein, damit wir die Gleichung eindeutig lösen können. In unserem Beispiel betrachten wir nun eine mögliche Implementierung mit Constraints, wobei wir auch negative Werte für Strecken zulassen: : use module ( l i b r a r y ( c l p r ) ). pyt (A, B, C) : { C C = A A + B B}. Hier haben wir zuerst das Modul für die Constraint-Theorie CLPR geladen und das Prädikat pyt/3 definiert, welches den Satz des Pythagoras implementiert, indem eine Relation zwischen den Variablen angegeben wird. Hier sehen wir wiederum, dass im Gegensatz zum Prädikat is/2 die linke Seite des Ausdrucks eine Formel enthalten darf. Wir können nun eine Anfrage an unser Programm stellen:? pyt ( 1,X, 4 ). X = Angenommen wir wollen dieses Problem ohne Constraints lösen, so könnte eine Implementierung wie folgt aussehen: pytn (A, B,C) : C i s s q r t (A A+B B ). Solange wir C berechnen möchten, gibt es kein Problem, wenn wir allerdings B oder A berechnen wollen, erhalten wir Instanziierungsfehler:? pytn ( 1, 2,X). X = ? pytn ( 1,X, 3 ). ERROR: i s / 2 : Arguments are not s u f f i c i e n t l y i n s t a n t i a t e d Um dieses Problem zu lösen, müssten wir für jede Kombination von gegebenen Variablen ein eigenes Prädikat implementieren. Des Weiteren ist hier der Nachteil, dass die Grundrechenarten nicht mehr ausreichen und wir komplexere arithmetische Operationen benötigen. Dies führt zu einem deutlich höheren Entwicklungsaufwand und erschwert die Lösung des Problems. Literatur [Gie13] Jürgen Giesl. Logikprogrammierung, sommersemester 2013, lehrund forschungsgebiet informatik 2, rwth aachen. pages , [Tri] Markus Triska. library(clpfd): Constraint logical programming over finite domains. [Tri12] Markus Triska. The finite domain constraint solver of SWI-Prolog. In FLOPS, volume 7294 of LNCS, pages ,
Primzahlen und RSA-Verschlüsselung
Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also
MehrStellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster
Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.
MehrProfessionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
Mehr1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:
Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:
MehrGrundlagen der Theoretischen Informatik, SoSe 2008
1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)
MehrRepetitionsaufgaben Wurzelgleichungen
Repetitionsaufgaben Wurzelgleichungen Inhaltsverzeichnis A) Vorbemerkungen B) Lernziele C) Theorie mit Aufgaben D) Aufgaben mit Musterlösungen 4 A) Vorbemerkungen Bitte beachten Sie: Bei Wurzelgleichungen
MehrInformationsblatt Induktionsbeweis
Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln
Mehr7 Rechnen mit Polynomen
7 Rechnen mit Polynomen Zu Polynomfunktionen Satz. Zwei Polynomfunktionen und f : R R, x a n x n + a n 1 x n 1 + a 1 x + a 0 g : R R, x b n x n + b n 1 x n 1 + b 1 x + b 0 sind genau dann gleich, wenn
Mehr1 Mathematische Grundlagen
Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
MehrDie Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.
Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,
MehrZeichen bei Zahlen entschlüsseln
Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren
MehrLineare Gleichungssysteme
Lineare Gleichungssysteme 1 Zwei Gleichungen mit zwei Unbekannten Es kommt häufig vor, dass man nicht mit einer Variablen alleine auskommt, um ein Problem zu lösen. Das folgende Beispiel soll dies verdeutlichen
MehrDossier: Rechnungen und Lieferscheine in Word
www.sekretaerinnen-service.de Dossier: Rechnungen und Lieferscheine in Word Es muss nicht immer Excel sein Wenn Sie eine Vorlage für eine Rechnung oder einen Lieferschein erstellen möchten, brauchen Sie
MehrHandbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken
Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen
MehrÜbungen für Woche 10
Übungen für Woche 10 Martin Rubey 12. Januar 2011 Die folgenden Übungen sollen den Umgang mit Backtracking und kombinatorischen Spezies näherbringen. Genaue Hinweise gibt es erst auf Seite 5. Zur Erinnerung:
MehrMusterlösungen zur Linearen Algebra II Blatt 5
Musterlösungen zur Linearen Algebra II Blatt 5 Aufgabe. Man betrachte die Matrix A := über dem Körper R und über dem Körper F und bestimme jeweils die Jordan- Normalform. Beweis. Das charakteristische
Mehr50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte
50. Mathematik-Olympiade. Stufe (Regionalrunde) Klasse 3 Lösungen c 00 Aufgabenausschuss des Mathematik-Olympiaden e.v. www.mathematik-olympiaden.de. Alle Rechte vorbehalten. 503 Lösung 0 Punkte Es seien
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrUnterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis
Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis Das komplette Material finden Sie hier: Download bei School-Scout.de
MehrWürfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.
040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl
MehrAustausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen
Austausch- bzw. Übergangsrozesse und Gleichgewichtsverteilungen Wir betrachten ein System mit verschiedenen Zuständen, zwischen denen ein Austausch stattfinden kann. Etwa soziale Schichten in einer Gesellschaft:
MehrErweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:
VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt
MehrEINFACHES HAUSHALT- KASSABUCH
EINFACHES HAUSHALT- KASSABUCH Arbeiten mit Excel Wir erstellen ein einfaches Kassabuch zur Führung einer Haushalts- oder Portokasse Roland Liebing, im November 2012 Eine einfache Haushalt-Buchhaltung (Kassabuch)
MehrLineare Funktionen. 1 Proportionale Funktionen 3 1.1 Definition... 3 1.2 Eigenschaften... 3. 2 Steigungsdreieck 3
Lineare Funktionen Inhaltsverzeichnis 1 Proportionale Funktionen 3 1.1 Definition............................... 3 1.2 Eigenschaften............................. 3 2 Steigungsdreieck 3 3 Lineare Funktionen
Mehr1 topologisches Sortieren
Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung
MehrTheoretische Grundlagen der Informatik WS 09/10
Theoretische Grundlagen der Informatik WS 09/10 - Tutorium 6 - Michael Kirsten und Kai Wallisch Sitzung 13 02.02.2010 Inhaltsverzeichnis 1 Formeln zur Berechnung Aufgabe 1 2 Hamming-Distanz Aufgabe 2 3
Mehr3. LINEARE GLEICHUNGSSYSTEME
176 3. LINEARE GLEICHUNGSSYSTEME 90 Vitamin-C-Gehalt verschiedener Säfte 18,0 mg 35,0 mg 12,5 mg 1. a) 100 ml + 50 ml + 50 ml = 41,75 mg 100 ml 100 ml 100 ml b) : Menge an Kirschsaft in ml y: Menge an
MehrÜbungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen
Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe
MehrKapitel 3 Frames Seite 1
Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den
MehrGEVITAS Farben-Reaktionstest
GEVITAS Farben-Reaktionstest GEVITAS Farben-Reaktionstest Inhalt 1. Allgemeines... 1 2. Funktionsweise der Tests... 2 3. Die Ruhetaste und die Auslösetaste... 2 4. Starten der App Hauptmenü... 3 5. Auswahl
MehrDie Erstellung eigener Strukturprofile
Die Erstellung eigener Strukturprofile Manchmal ist es nötig, eigene Profile zu Erstellen, die man dann mittels Gestellgenerator verbaut. Diese Strukturprofile werden in einer Benutzerbezogenen Bibliothek
MehrArbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
MehrGrundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen
Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen 1. Quadratische Gleichungen Quadratische Gleichungen lassen sich immer auf die sog. normierte Form x 2 + px + = 0 bringen, in
MehrHANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG
it4sport GmbH HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG Stand 10.07.2014 Version 2.0 1. INHALTSVERZEICHNIS 2. Abbildungsverzeichnis... 3 3. Dokumentenumfang... 4 4. Dokumente anzeigen... 5 4.1 Dokumente
MehrZahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)
Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009) Probleme unseres Alltags E-Mails lesen: Niemand außer mir soll meine Mails lesen! Geld abheben mit der EC-Karte: Niemand außer mir soll
Mehr1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
MehrIm Jahr t = 0 hat eine Stadt 10.000 Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. z(t) = at + b
Aufgabe 1: Im Jahr t = 0 hat eine Stadt 10.000 Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. (a) Nehmen Sie lineares Wachstum gemäß z(t) = at + b an, wobei z die Einwohnerzahl ist und
Mehr1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern
1 Einleitung Lernziele Symbolleiste für den Schnellzugriff anpassen Notizenseiten drucken eine Präsentation abwärtskompatibel speichern eine Präsentation auf CD oder USB-Stick speichern Lerndauer 4 Minuten
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrARCO Software - Anleitung zur Umstellung der MWSt
ARCO Software - Anleitung zur Umstellung der MWSt Wieder einmal beschert uns die Bundesverwaltung auf Ende Jahr mit zusätzlicher Arbeit, statt mit den immer wieder versprochenen Erleichterungen für KMU.
MehrJede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.
Binäres und dezimales Zahlensystem Ziel In diesem ersten Schritt geht es darum, die grundlegende Umrechnung aus dem Dezimalsystem in das Binärsystem zu verstehen. Zusätzlich wird auch die andere Richtung,
MehrLineare Gleichungssysteme
Lineare Gleichungssysteme Eines der am häufigsten auftretenden Standardprobleme der angewandten Mathematik ist das Lösen linearer Gleichungssysteme, etwa zur Netzwerkberechnung in der Elektrotechnik oder
MehrSowohl die Malstreifen als auch die Neperschen Streifen können auch in anderen Stellenwertsystemen verwendet werden.
Multiplikation Die schriftliche Multiplikation ist etwas schwieriger als die Addition. Zum einen setzt sie das kleine Einmaleins voraus, zum anderen sind die Überträge, die zu merken sind und häufig in
MehrProgrammiersprachen 2 (SS 2013)
n Advanced 2 1. Juli 2013 Beispielprogramm pq(x,y) :- p(x,z), q(z,y). p(a,b). p(b,c). p(c,a). 2 q(a,a). q(b,d). Logisch gesehen Die Reihenfolge verändert nicht die logische Aussage p(x,z), q(z,y) äquivalent
MehrIn diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.
Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem
Mehra n + 2 1 auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:
Beispiel: Wir untersuchen die rekursiv definierte Folge a 0 + auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert: ( ) (,, 7, 5,...) Wir können also vermuten, dass die Folge monoton fallend
MehrExcel Pivot-Tabellen 2010 effektiv
7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes
MehrRekursionen. Georg Anegg 25. November 2009. Methoden und Techniken an Beispielen erklärt
Methoden und Techniken an Beispielen erklärt Georg Anegg 5. November 009 Beispiel. Die Folge {a n } sei wie folgt definiert (a, d, q R, q ): a 0 a, a n+ a n q + d (n 0) Man bestimme eine explizite Darstellung
MehrTangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:
Tangentengleichung Wie Sie wissen, gibt die erste Ableitung einer Funktion deren Steigung an. Betrachtet man eine fest vorgegebene Stelle, gibt f ( ) also die Steigung der Kurve und somit auch die Steigung
MehrDieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.
Millennium SMS Service Schnellübersicht Seite 1 von 6 1. Tägliche Arbeiten mit der SMS Bestätigung Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.
MehrLU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.
Zusätze zum Gelben Rechenbuch LU-Zerlegung Peter Furlan Verlag Martina Furlan Inhaltsverzeichnis Definitionen 2 (Allgemeine) LU-Zerlegung 2 3 Vereinfachte LU-Zerlegung 3 4 Lösung eines linearen Gleichungssystems
Mehr14 Schmiegeparabel und Freunde, Taylor-Reihe
14 Schmiegeparabel und Freunde, Taylor-Reihe Jörn Loviscach Versionsstand: 20. März 2012, 16:01 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.j3l7h.de/videos.html
MehrMediator 9 - Lernprogramm
Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop
MehrDas RSA-Verschlüsselungsverfahren 1 Christian Vollmer
Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer Allgemein: Das RSA-Verschlüsselungsverfahren ist ein häufig benutztes Verschlüsselungsverfahren, weil es sehr sicher ist. Es gehört zu der Klasse der
MehrLassen Sie sich dieses sensationelle Projekt Schritt für Schritt erklären:
Lassen Sie sich dieses sensationelle Projekt Schritt für Schritt erklären: Gold Line International Ltd. Seite 1 STELLEN SIE SICH VOR: Jeder Mensch auf der Erde gibt Ihnen 1,- Dollar Das wäre nicht schwer
MehrNovell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme
Novell Client Anleitung zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 8 Mit der Einführung von Windows 7 hat sich die Novell-Anmeldung sehr stark verändert. Der Novell Client
MehrWeb-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter
Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................
MehrGLIEDERUNG UND BASISGLIEDERUNG. 2010/03/09 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!
GLIEDERUNG UND BASISGLIEDERUNG 2010/03/09 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD! INHALT ÜBERSICHT: FUNKTIONSWEISE AUSWERTUNGSGLIEDERUNG OHNE BASISGLIEDERUNG...
MehrVirtueller Seminarordner Anleitung für die Dozentinnen und Dozenten
Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,
MehrBauteilattribute als Sachdaten anzeigen
Mit den speedikon Attributfiltern können Sie die speedikon Attribute eines Bauteils als MicroStation Sachdaten an die Elemente anhängen Inhalte Was ist ein speedikon Attribut?... 3 Eigene Attribute vergeben...
MehrCAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung
Ablauf für die Erfassung der Fehler in der Fertigung Voraussetzung ist die Zuordnung der Erzeugnisse zu Produktgruppen. Wie das funktioniert ist der Anleitung Neue Produktgruppe anlegen und mit Erzeugnissen
MehrOutlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
MehrEinführung in. Logische Schaltungen
Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von
MehrZahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1
Zahlenwinkel: Forscherkarte 1 alleine Tipp 1 Lege die Ziffern von 1 bis 9 so in den Zahlenwinkel, dass jeder Arm des Zahlenwinkels zusammengezählt das gleiche Ergebnis ergibt! Finde möglichst viele verschiedene
MehrAbituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)
Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR) Eine Firma stellt USB-Sticks her. Sie werden in der Fabrik ungeprüft in Packungen zu je 20 Stück verpackt und an Händler ausgeliefert. 1 Ein Händler
MehrEinrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me
Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte
MehrAccess [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten
Berichte bieten die gleichen Möglichkeit zur Berechnung von Werten wie Formulare und noch einige mehr. Im Gegensatz zu Formularen bieten Berichte die Möglichkeit, eine laufende Summe zu bilden oder Berechnungen
MehrOECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland
OECD Programme for International Student Assessment Deutschland PISA 2000 Lösungen der Beispielaufgaben aus dem Mathematiktest Beispielaufgaben PISA-Hauptstudie 2000 Seite 3 UNIT ÄPFEL Beispielaufgaben
MehrErstellen von x-y-diagrammen in OpenOffice.calc
Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei
Mehrgeben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen
geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Vollständigkeit halber aufgeführt. Gehen wir einmal davon aus, dass die von uns angenommenen 70% im Beispiel exakt berechnet sind. Was würde
MehrMicrosoft Excel 2010 Mehrfachoperation
Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft Excel 2010 Mehrfachoperation Mehrfachoperationen in Excel 2010 Seite 1 von 6 Inhaltsverzeichnis Einleitung... 2 Mehrfachoperation mit
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrTECHNISCHE UNIVERSITÄT MÜNCHEN
TECHISCHE UIVERSITÄT MÜCHE Zentrum Mathematik PRF. R.R. JÜRGE RICHTER-GEBERT, VAESSA KRUMMECK, MICHAEL PRÄHFER Höhere Mathematik für Informatiker I (Wintersemester 003/004) Aufgabenblatt 1 (4. ktober 003)
MehrIhr Mandant möchte einen neuen Gesellschafter aufnehmen. In welcher Höhe wäre eine Vergütung inklusive Tantieme steuerrechtlich zulässig?
Ihr Mandant möchte einen neuen Gesellschafter aufnehmen. In welcher Höhe wäre eine Vergütung inklusive Tantieme steuerrechtlich zulässig? Oft wirft die Aufnahme neuer Gesellschafter oder auch die Einstellung
MehrOSD-Branchenprogramm. OSD-Version 7.1.4 Was ist neu? EDV-Power für Holzverarbeiter
OSD-Branchenprogramm OSD-Version 7.1.4 Was ist neu? EDV-Power für Holzverarbeiter Inhalt 1. Allgemeines 3 2. Version 7.1.4 4 2.1 Kundenauftragsabwicklung 4 2.1.1 EU-Überweisungen - Verwendungszweck 4 2.2
MehrV 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x + 400 y = 520 300x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775,
Aufgabenpool für angewandte Mathematik / 1. Jahrgang V B, C, D Drinks Ein gastronomischer Betrieb kauft 300 Dosen Energydrinks (0,3 l) und 400 Liter Flaschen Mineralwasser und zahlt dafür 50, Euro. Einen
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrKapitalerhöhung - Verbuchung
Kapitalerhöhung - Verbuchung Beschreibung Eine Kapitalerhöhung ist eine Erhöhung des Aktienkapitals einer Aktiengesellschaft durch Emission von en Aktien. Es gibt unterschiedliche Formen von Kapitalerhöhung.
MehrIst Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers
Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,
MehrUpdatehinweise für die Version forma 5.5.5
Updatehinweise für die Version forma 5.5.5 Seit der Version forma 5.5.0 aus 2012 gibt es nur noch eine Office-Version und keine StandAlone-Version mehr. Wenn Sie noch mit der alten Version forma 5.0.x
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrHandbuch Fischertechnik-Einzelteiltabelle V3.7.3
Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3
MehrSecond Steps in eport 2.0 So ordern Sie Credits und Berichte
Second Steps in eport 2.0 So ordern Sie Credits und Berichte Schritt 1: Credits kaufen, um Zugangscodes generieren zu können Wählen Sie Credits verwalten und klicken Sie auf Credits kaufen. Geben Sie nun
MehrBinärdarstellung von Fliesskommazahlen
Binärdarstellung von Fliesskommazahlen 1. IEEE 754 Gleitkommazahl im Single-Format So sind in Gleitkommazahlen im IEEE 754-Standard aufgebaut: 31 30 24 23 0 S E E E E E E E E M M M M M M M M M M M M M
MehrInformatik 2 Labor 2 Programmieren in MATLAB Georg Richter
Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrZur drittletzten Zeile scrollen
1 Fragen und Antworten zur Computerbedienung Thema : Zur drittletzten Zeile scrollen Thema Stichwort Programm Letzte Anpassung Zur drittletzten Zeile scrollen Scrollen VBA Excel 1.02.2014 Kurzbeschreibung:
MehrFehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems
Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems Name: Bruno Handler Funktion: Marketing/Vertrieb Organisation: AXAVIA Software GmbH Liebe Leserinnen und liebe Leser,
MehrStundenerfassung Version 1.8
Stundenerfassung Version 1.8 Anleitung Überstunden Ein Modul der Plusversion 2008 netcadservice GmbH netcadservice GmbH Augustinerstraße 3 D-83395 Freilassing Dieses Programm ist urheberrechtlich geschützt.
MehrGüte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über
Güte von s Grundlegendes zum Konzept der Güte Ableitung der Gütefunktion des Gauss im Einstichprobenproblem Grafische Darstellung der Gütefunktionen des Gauss im Einstichprobenproblem Ableitung der Gütefunktion
MehrUrlaubsregel in David
Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5
MehrEinführung in die Algebra
Prof. Dr. H. Brenner Osnabrück SS 2009 Einführung in die Algebra Vorlesung 13 Einheiten Definition 13.1. Ein Element u in einem Ring R heißt Einheit, wenn es ein Element v R gibt mit uv = vu = 1. DasElementv
MehrWas meinen die Leute eigentlich mit: Grexit?
Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?
MehrKlausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007
Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007
MehrAnzeige von eingescannten Rechnungen
Anzeige von eingescannten Rechnungen Wenn Sie sich zu einer Eingangsrechnung die eingescannte Originalrechnung ansehen möchten, wählen Sie als ersten Schritt aus Ihrem Benutzermenü unter dem Kapitel Eingangsrechnung
MehrFAQ Spielvorbereitung Startspieler: Wer ist Startspieler?
FAQ Spielvorbereitung Startspieler: Wer ist Startspieler? In der gedruckten Version der Spielregeln steht: der Startspieler ist der Spieler, dessen Arena unmittelbar links neben dem Kaiser steht [im Uhrzeigersinn].
MehrSkript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!
Mathefritz 5 Terme und Gleichungen Meine Mathe-Seite im Internet kostenlose Matheaufgaben, Skripte, Mathebücher Lernspiele, Lerntipps, Quiz und noch viel mehr http:// www.mathefritz.de Seite 1 Copyright
MehrDer Zwei-Quadrate-Satz von Fermat
Der Zwei-Quadrate-Satz von Fermat Proseminar: Das BUCH der Beweise Fridtjof Schulte Steinberg Institut für Informatik Humboldt-Universität zu Berlin 29.November 2012 1 / 20 Allgemeines Pierre de Fermat
MehrWurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik
Wurzeln als Potenzen mit gebrochenen Exponenten Zur Einstimmung Wir haben die Formel benutzt x m n = x m n nach der eine Exponentialzahl potenziert wird, indem man die Exponenten multipliziert. Dann sollte
Mehr