/** Soln.java
* Created on Apr 25, 2005
*
* @author Sunita Sarawagi
* @since 1.2
* @version 1.3
*/
package iitb.CRF;
import java.io.Serializable;
public class Soln implements Serializable, Comparable {
private static final long serialVersionUID = 812L;
public float score=-1*Float.MAX_VALUE;
public Soln prevSoln=null;
public int label = -1;
public int pos;
public Soln(int id, int p) {label = id;pos = p;}
public void clear() {
score=-1*Float.MAX_VALUE;
prevSoln=null;
}
boolean isClear() {
return (score == -1*Float.MAX_VALUE);
}
protected void copy(Soln soln) {
score = soln.score;
prevSoln = soln.prevSoln;
}
public void copyAll(Soln soln) {
score = soln.score;
prevSoln = soln.prevSoln;
pos = soln.pos;
label = soln.label;
}
public int prevPos() {
return (prevSoln == null)?-1:prevSoln.pos;
}
protected int prevLabel() {
return (prevSoln == null)?-1:prevSoln.label;
}
public boolean equals(Soln s) {
return (label == s.label) && (pos == s.pos) && (prevPos() == s.prevPos()) && (prevLabel() == s.prevLabel());
}
/**
* @param prevSoln2
* @param score2
*/
public void setPrevSoln(Soln prevSoln, float score) {
this.prevSoln = (prevSoln==null)?null:prevSoln.getSoln();
this.score = score;
}
protected Soln getSoln() {
return this;
}
public int compareTo(Object s) {
return ((((Soln)this).score-((Soln)s).score)>0)?1:-1;
}
@Override
public String toString() {
String str = "["+pos + ":" + prevPos()+":"+ label + "]";
if (prevSoln != null) str += (" "+prevSoln.toString());
return str;
}
public boolean equalsRecursive(Soln s) {
if (s==null) return false;
if ((label != s.label) || (pos != s.pos))
return false;
if (prevSoln==s.prevSoln) return true;
if (prevSoln==null) return false;
return prevSoln.equalsRecursive(s.prevSoln);
}
};