/* Copyright (C) 2003 Univ. of Massachusetts Amherst, Computer Science Dept. This file is part of "MALLET" (MAchine Learning for LanguagE Toolkit). http://www.cs.umass.edu/~mccallum/mallet This software is provided under the terms of the Common Public License, version 1.0, as published by http://www.opensource.org. For further information, see the file `LICENSE' included with this distribution. */ package cc.mallet.grmm.inference.gbp; import java.util.List; import java.util.Set; import java.util.ArrayList; /** * Created: May 30, 2005 * * @author <A HREF="mailto:casutton@cs.umass.edu>casutton@cs.umass.edu</A> * @version $Id: RegionEdge.java,v 1.1 2007/10/22 21:37:58 mccallum Exp $ */ class RegionEdge { Region from; Region to; // List of factors in the parent region that are not in the child region List factorsToSend; // E(P)\E(R) in Yedidia notation. Note that this includes parent node. Set cousins; // N(from,to) in Yedida 2004 TR notation List neighboringParents; // D(from,to) in Yedida 2004 TR notation List loopingMessages; public RegionEdge (Region from, Region to) { this.from = from; this.to = to; } public boolean equals (Object o) { if (this == o) return true; if (!(o instanceof RegionEdge)) return false; final RegionEdge regionEdge = (RegionEdge) o; if (from != null ? !from.equals (regionEdge.from) : regionEdge.from != null) return false; if (to != null ? !to.equals (regionEdge.to) : regionEdge.to != null) return false; return true; } public int hashCode () { int result; result = (from != null ? from.hashCode () : 0); result = 29 * result + (to != null ? to.hashCode () : 0); return result; } void initializeFactorsToSend () { factorsToSend = new ArrayList (from.factors); factorsToSend.removeAll (to.factors); } public String toString () { return "EDGE:["+from+"-->"+to+"]"; } }