yacs.parser
Class Variable

java.lang.Object
  extended byyacs.parser.Expression
      extended byyacs.parser.Variable
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable

public class Variable
extends Expression

Klasse zur Repräsentation einer numerischen Variablen innerhalb einer rekursiven Struktur zur Repräsentation eines algebraischen Constraint-Problems (Dokumentation siehe Expression).

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
Variable(java.lang.String variableName)
          Konstruktor -- Instantiiert die Variable mit ihrem Namen.
Variable(java.lang.String variableName, Domain domain)
          Konstruktor -- Instantiiert die Variable mit ihrem Namen und ihrer Domäne.
Variable(java.lang.String variableName, Domain domain, DomainElement element)
          Konstruktor -- Instantiiert die Variable mit ihrem Namen, ihrer Domäne und einer aktuellen Belegung.
 
Method Summary
 boolean containsVariable(java.lang.String variableName)
          Liefert true, wenn der Expression die Variable mit dem übergebenen Namen enthält.
 int count(java.lang.String variableName)
          Liefert den "Vernetzungsgrad" einer Variablen innerhalb des Constraint-Problems, d.h. dem Grad ihres Vorkommens in den Constraints.
 boolean deleteValue(DomainElement element)
          Entfernt das übergebene Element aus der Domäne der Variablen.
 DomainElement evaluate()
          Wertet den Constraint-Ausdruck aus.
 DomainElement get(java.lang.String variableName)
          Liefert die Wertebelegung der übergebenen Variable.
 Domain getDomain()
          Liefert die zugehörige Domäne der Variablen.
 Domain getDomain(java.lang.String variableName)
          Liefert die Domäne der übergebenen Variable.
 java.lang.String getName()
          Liefert den Namen der Variablen.
 java.util.List getPrimitiveExpressions()
          Liefert die einzelnen "Primärausdrücke" des Constraint-Problems innerhalb einer Liste (enthält Instanzen des Interface Expression).
 java.util.List getUnsetVariables()
          Liefert eine Liste mit den Namen der noch unbelegten Variablen.
 DomainElement getValue()
          Liefert die Wertebelegung der Variable.
 Variable getVariableReference(java.lang.String variableName)
          Liefert die Referenz auf die Variable mit dem übergebenen Namen.
 java.util.List getVariables()
          Liefert eine Liste der Variablennamen des Constraint-Problems.
 boolean hasFalseDomain()
          Liefert true, wenn die Domäne einer Variable leer ist.
 boolean hasValuationDomain()
          Liefert true, wenn eine "valuation domain" vorliegt, d.h. in den Domänen aller Variablen ist jeweils genau ein Wert enthalten.
 void init()
          Initialisiert die Constraint-Variablen.
 boolean narrow(int operatorType, DomainElement element)
          Liefert truen wenn der Wertebereich der Variable eingeschränkt wurde.
 boolean satisfiable()
          Prüft die Erfüllbarkeit des Constraint-Ausdrucks bzgl. der aktuellen Wertebelegung.
 boolean set(java.lang.String variableName, DomainElement element)
          Belegt die übergebene Variable mit einem Wert.
 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).
 boolean setValuationDomain()
          Wenn eine "valuation domain" vorliegt, werden die Variablen mit dem in der jeweiligen Domäne einzig vorhandenen Wert belegt.
 boolean setValue(DomainElement element)
          Belegt diese Variable mit einem Element aus ihrer Domäne.
 void singletons()
          Entfernt bei allen Variablen, die mit einem Wert belegt sind, sämtliche anderen Elemente aus deren Domäne.
 java.lang.String toString()
          Konvertiert das Objekt in einen String.
 boolean unsetVariablesLeft()
          Gibt zurück ob unbelegte Variablen existieren (true) oder nicht (false).
 
Methods inherited from class yacs.parser.Expression
clone, cloneDeep
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Variable

public Variable(java.lang.String variableName)
Konstruktor -- Instantiiert die Variable mit ihrem Namen.

Parameters:
variableName - String

Variable

public Variable(java.lang.String variableName,
                Domain domain)
Konstruktor -- Instantiiert die Variable mit ihrem Namen und ihrer Domäne.

Parameters:
variableName - String
domain - Domain

Variable

public Variable(java.lang.String variableName,
                Domain domain,
                DomainElement element)
Konstruktor -- Instantiiert die Variable mit ihrem Namen, ihrer Domäne und einer aktuellen Belegung.

Parameters:
variableName - String
domain - Domain
element - DomainElement
Method Detail

getName

public java.lang.String getName()
Liefert den Namen der Variablen.

Returns:
String

getDomain

public Domain getDomain()
Liefert die zugehörige Domäne der Variablen. Diese Methode ermöglicht die direkte Abfrage (anstatt der getDomain(String)-Methode) unter Umgehung der rekursiven Struktur, wenn sichergestellt ist, dass das vorhandene Objekt eine Instanz der Klasse yacs.parser.Variable ist.

Returns:
Domain

setValue

public boolean setValue(DomainElement element)
Belegt diese Variable mit einem Element aus ihrer Domäne. Liefert true, wenn dies erfolgreich war, false wenn nicht (Wert des Elements in der Domäne nicht vorhanden). Diese Methode ermöglicht den direkten Aufruf (anstatt der set()-Methode) unter Umgehung der rekursiven Struktur, wenn sichergestellt ist, dass das vorhandene Objekt eine Instanz der Klasse yacs.parser.Variable ist.

Parameters:
element - DomainElement
Returns:
boolean

getValue

public DomainElement getValue()
Liefert die Wertebelegung der Variable. Diese Methode ermöglicht die direkte Abfrage (anstatt der get()-Methode) unter Umgehung der rekursiven Struktur, wenn sichergestellt ist, dass das vorhandene Objekt eine Instanz der Klasse yacs.parser.Variable ist.

Returns:
DomainElement

deleteValue

public boolean deleteValue(DomainElement element)
Entfernt das übergebene Element aus der Domäne der Variablen. Ist die Variable mit diesem Element aktuell belegt, so ist sie anschließend unbelegt (null). Liefert true, wenn das Entfernen erfolgreich war (Element war in der Domäne enthalten), false wenn nicht.

Parameters:
element - DomainElement
Returns:
boolean

narrow

public boolean narrow(int operatorType,
                      DomainElement element)
Liefert truen wenn der Wertebereich der Variable eingeschränkt wurde. Gibt false zurück, wenn keine Änderung vorgenommen wurde.

Parameters:
operatorType - int
element - DomainElement
Returns:
boolean

setDomain

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

Specified by:
setDomain in class Expression
Parameters:
variableName - String
domain - Domain
Returns:
boolean

getDomain

public Domain getDomain(java.lang.String variableName)
Description copied from class: Expression
Liefert die Domäne der übergebenen Variable.

Specified by:
getDomain in class Expression
Parameters:
variableName - String
Returns:
Domain

getVariables

public java.util.List getVariables()
Description copied from class: Expression
Liefert eine Liste der Variablennamen des Constraint-Problems.

Specified by:
getVariables in class Expression
Returns:
List

getUnsetVariables

public java.util.List getUnsetVariables()
Description copied from class: Expression
Liefert eine Liste mit den Namen der noch unbelegten Variablen.

Specified by:
getUnsetVariables in class Expression
Returns:
List

unsetVariablesLeft

public boolean unsetVariablesLeft()
Description copied from class: Expression
Gibt zurück ob unbelegte Variablen existieren (true) oder nicht (false).

Specified by:
unsetVariablesLeft in class Expression
Returns:
boolean

set

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

Specified by:
set in class Expression
Parameters:
variableName - String
element - DomainElement
Returns:
boolean

get

public DomainElement get(java.lang.String variableName)
Description copied from class: Expression
Liefert die Wertebelegung der übergebenen Variable.

Specified by:
get in class Expression
Parameters:
variableName - String
Returns:
DomainElement

satisfiable

public boolean satisfiable()
Description copied from class: Expression
Prüft die Erfüllbarkeit des Constraint-Ausdrucks bzgl. der aktuellen Wertebelegung.

Specified by:
satisfiable in class Expression
Returns:
boolean

evaluate

public DomainElement evaluate()
Description copied from class: Expression
Wertet den Constraint-Ausdruck aus. Liefert als Ergebnis die Belegung einer Variable, den Wert einer Konstante oder das Ergebnis einer Berechnung.

Specified by:
evaluate in class Expression
Returns:
DomainElement

getPrimitiveExpressions

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

Specified by:
getPrimitiveExpressions in class Expression
Returns:
List

getVariableReference

public Variable getVariableReference(java.lang.String variableName)
Description copied from class: Expression
Liefert die Referenz auf die Variable mit dem übergebenen Namen.

Specified by:
getVariableReference in class Expression
Parameters:
variableName - String
Returns:
Variable

containsVariable

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

Specified by:
containsVariable in class Expression
Parameters:
variableName - String
Returns:
boolean

hasFalseDomain

public boolean hasFalseDomain()
Description copied from class: Expression
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.

Specified by:
hasFalseDomain in class Expression
Returns:
boolean

hasValuationDomain

public boolean hasValuationDomain()
Description copied from class: Expression
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.

Specified by:
hasValuationDomain in class Expression
Returns:
boolean

setValuationDomain

public boolean setValuationDomain()
Description copied from class: Expression
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.

Specified by:
setValuationDomain in class Expression
Returns:
boolean

singletons

public void singletons()
Description copied from class: Expression
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.

Specified by:
singletons in class Expression

count

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

Specified by:
count in class Expression
Parameters:
variableName - String
Returns:
int

init

public void init()
Description copied from class: Expression
Initialisiert die Constraint-Variablen. Es werden alle vorhandenen Belegungen entfernt.

Specified by:
init in class Expression

toString

public java.lang.String toString()
Description copied from class: Expression
Konvertiert das Objekt in einen String.

Specified by:
toString in class Expression
Returns:
String