package aima.core.probability.domain;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* Artificial Intelligence A Modern Approach (3rd Edition): page 486.
*
* A Boolean random variable has the domain {true,false}.
*
* @author Ciaran O'Reilly.
*/
public class BooleanDomain extends AbstractFiniteDomain {
private static Set<Boolean> _possibleValues = null;
static {
// Keep consistent order
_possibleValues = new LinkedHashSet<Boolean>();
_possibleValues.add(Boolean.TRUE);
_possibleValues.add(Boolean.FALSE);
// Ensure cannot be modified
_possibleValues = Collections.unmodifiableSet(_possibleValues);
}
public BooleanDomain() {
indexPossibleValues(_possibleValues);
}
//
// START-Domain
@Override
public int size() {
return 2;
}
@Override
public boolean isOrdered() {
return false;
}
// END-Domain
//
//
// START-DiscreteDomain
@Override
public Set<Boolean> getPossibleValues() {
return _possibleValues;
}
// END-DiscreteDomain
//
@Override
public boolean equals(Object o) {
return o instanceof BooleanDomain;
}
@Override
public int hashCode() {
return _possibleValues.hashCode();
}
}