yacs.parser
Class Expression

java.lang.Object
  extended byyacs.parser.Expression
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable
Direct Known Subclasses:
BinaryOperator, Constant, UnaryOperator, Variable

public abstract class Expression
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable

Abstrakte Klasse für eine rekursive Struktur zur Repräsentation eines algebraischen Constraint-Problems. Anm.: Diese Klasse bzw. die erbenden Klassen arbeiten in Bezug auf die Variablen "stringbasiert" noch (anhand der Variablennamen). Dies sollte dahingehend geändert werden, dass die entsprechenden Objekte der Klasse Variable direkt verwendet werden.

Copyright (C) 2005 Wolfgang Runte

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

Version:
YACS 0.1.1
Author:
Wolfgang Runte (woru@tzi.org)
See Also:
Serialized Form

Constructor Summary
Expression()
           
 
Method Summary
 java.lang.Object clone()
          Liefert eine Kopie dieses Objekts.
 Expression cloneDeep()
          Klont this und rekursiv alle darin referenzierten Objekte mit (die Selbheit indirekt mehrfach referenzierter Objekte bleibt erhalten).
abstract  boolean containsVariable(java.lang.String variableName)
          Liefert true, wenn der Expression die Variable mit dem übergebenen Namen enthält.
abstract  int count(java.lang.String variableName)
          Liefert den "Vernetzungsgrad" einer Variablen innerhalb des Constraint-Problems, d.h. dem Grad ihres Vorkommens in den Constraints.
abstract  DomainElement evaluate()
          Wertet den Constraint-Ausdruck aus.
abstract  DomainElement get(java.lang.String variableName)
          Liefert die Wertebelegung der übergebenen Variable.
abstract  Domain getDomain(java.lang.String variableName)
          Liefert die Domäne der übergebenen Variable.
abstract  java.util.List getPrimitiveExpressions()
          Liefert die einzelnen "Primärausdrücke" des Constraint-Problems innerhalb einer Liste (enthält Instanzen des Interface Expression).
abstract  java.util.List getUnsetVariables()
          Liefert eine Liste mit den Namen der noch unbelegten Variablen.
abstract  Variable getVariableReference(java.lang.String variableName)
          Liefert die Referenz auf die Variable mit dem übergebenen Namen.
abstract  java.util.List getVariables()
          Liefert eine Liste der Variablennamen des Constraint-Problems.
abstract  boolean hasFalseDomain()
          Liefert true, wenn die Domäne einer Variable leer ist.
abstract  boolean hasValuationDomain()
          Liefert true, wenn eine "valuation domain" vorliegt, d.h. in den Domänen aller Variablen ist jeweils genau ein Wert enthalten.
abstract  void init()
          Initialisiert die Constraint-Variablen.
abstract  boolean satisfiable()
          Prüft die Erfüllbarkeit des Constraint-Ausdrucks bzgl. der aktuellen Wertebelegung.
abstract  boolean set(java.lang.String variableName, DomainElement element)
          Belegt die übergebene Variable mit einem Wert.
abstract  boolean setDomain(java.lang.String variableName, Domain domain)
          Belegt den Wertebereich der angegebenen Variable und gibt zurück, ob dies erfolgreich war (true) oder nicht (false).
abstract  boolean setValuationDomain()
          Wenn eine "valuation domain" vorliegt, werden die Variablen mit dem in der jeweiligen Domäne einzig vorhandenen Wert belegt.
abstract  void singletons()
          Entfernt bei allen Variablen, die mit einem Wert belegt sind, sämtliche anderen Elemente aus deren Domäne.
abstract  java.lang.String toString()
          Konvertiert das Objekt in einen String.
abstract  boolean unsetVariablesLeft()
          Gibt zurück ob unbelegte Variablen existieren (true) oder nicht (false).
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Expression

public Expression()
Method Detail

setDomain

public abstract boolean setDomain(java.lang.String variableName,
                                  Domain domain)
Belegt den Wertebereich der angegebenen Variable und gibt zurück, ob dies erfolgreich war (true) oder nicht (false).

Parameters:
variableName - String
domain - Domain
Returns:
boolean

getDomain

public abstract Domain getDomain(java.lang.String variableName)
Liefert die Domäne der übergebenen Variable.

Parameters:
variableName - String
Returns:
Domain

getVariables

public abstract java.util.List getVariables()
Liefert eine Liste der Variablennamen des Constraint-Problems.

Returns:
List

getUnsetVariables

public abstract java.util.List getUnsetVariables()
Liefert eine Liste mit den Namen der noch unbelegten Variablen.

Returns:
List

unsetVariablesLeft

public abstract boolean unsetVariablesLeft()
Gibt zurück ob unbelegte Variablen existieren (true) oder nicht (false).

Returns:
boolean

set

public abstract boolean set(java.lang.String variableName,
                            DomainElement element)
Belegt die übergebene Variable mit einem Wert. War die Wertebelegung erfolgreich, wird true zurückgegeben, ansonsten false.

Parameters:
variableName - String
element - DomainElement
Returns:
boolean

get

public abstract DomainElement get(java.lang.String variableName)
Liefert die Wertebelegung der übergebenen Variable.

Parameters:
variableName - String
Returns:
DomainElement

satisfiable

public abstract boolean satisfiable()
Prüft die Erfüllbarkeit des Constraint-Ausdrucks bzgl. der aktuellen Wertebelegung.

Returns:
boolean

evaluate

public abstract DomainElement evaluate()
Wertet den Constraint-Ausdruck aus. Liefert als Ergebnis die Belegung einer Variable, den Wert einer Konstante oder das Ergebnis einer Berechnung.

Returns:
DomainElement

getPrimitiveExpressions

public abstract java.util.List getPrimitiveExpressions()
Liefert die einzelnen "Primärausdrücke" des Constraint-Problems innerhalb einer Liste (enthält Instanzen des Interface Expression).

Returns:
List

getVariableReference

public abstract Variable getVariableReference(java.lang.String variableName)
Liefert die Referenz auf die Variable mit dem übergebenen Namen.

Parameters:
variableName - String
Returns:
Variable

containsVariable

public abstract boolean containsVariable(java.lang.String variableName)
Liefert true, wenn der Expression die Variable mit dem übergebenen Namen enthält. Ansonsten wird false zurückgegeben.

Parameters:
variableName - String
Returns:
boolean

hasFalseDomain

public abstract boolean hasFalseDomain()
Liefert true, wenn die Domäne einer Variable leer ist. In diesem Fall ist keine Konsistenz bzw. Lösung herstellbar. Ansonsten wird false zurückgegeben.

Returns:
boolean

hasValuationDomain

public abstract boolean hasValuationDomain()
Liefert true, wenn eine "valuation domain" vorliegt, d.h. in den Domänen aller Variablen ist jeweils genau ein Wert enthalten. Ansonsten wird false zurückgegeben.

Returns:
boolean

setValuationDomain

public abstract boolean setValuationDomain()
Wenn eine "valuation domain" vorliegt, werden die Variablen mit dem in der jeweiligen Domäne einzig vorhandenen Wert belegt. Liefert true, wenn das Ergebnis positiv ist, d.h. die Werte einer "valuation domain" konnten alle gesetzt werden. Ansonsten wird false zurückgegeben.

Returns:
boolean

singletons

public abstract void singletons()
Entfernt bei allen Variablen, die mit einem Wert belegt sind, sämtliche anderen Elemente aus deren Domäne. Variablen, die nicht mit einem Wert belegt sind, bleiben unverändert.


count

public abstract int count(java.lang.String variableName)
Liefert den "Vernetzungsgrad" einer Variablen innerhalb des Constraint-Problems, d.h. dem Grad ihres Vorkommens in den Constraints.

Parameters:
variableName - String
Returns:
int

init

public abstract void init()
Initialisiert die Constraint-Variablen. Es werden alle vorhandenen Belegungen entfernt.


toString

public abstract java.lang.String toString()
Konvertiert das Objekt in einen String.

Returns:
String

clone

public java.lang.Object clone()
Liefert eine Kopie dieses Objekts. Allerdings nur eine "shallow copy", d.h. die Felder des Objektes werden nicht geklont.

Returns:
Object

cloneDeep

public Expression cloneDeep()
Klont this und rekursiv alle darin referenzierten Objekte mit (die Selbheit indirekt mehrfach referenzierter Objekte bleibt erhalten).

Returns:
Expression