next up previous contents
suivant: Package util monter: Package transportNetwork précédent: TransportNetwork.java   Table des matières

Vertex.java


package buffalo.transportNetwork;

import java.util.Vector;

/**
   Exemple d'implémentation de FlowableVertex, représente un sommet 
   dans le réseau de transport. Le coût de cet implémentation 
   est le passage de l'instance de TransportNetwork en paramètre dans le constructeur.
 */

public class Vertex implements FlowableVertex
{

    /**
       Indice du sommet.
     */

    private int index;

    /**
       Réseau de transport auquel ce sommet est associé.
     */

    TransportNetwork myTransportNetwork;
    
    /**
       Ensemble des arêtes sortantes.
     */
    
    private Vector outArcs;
    
    /**
       Ensemble des arêtes entrantes.
     */
    
    private Vector inArcs;

    /**
       Marque. 
     */
    
    private FlowMark myMark;
    
    /**
       Vrai si le sommet marqué est 
       dans la coupe.
     */
    
    private boolean isInTheCut = false;

    /*----------------------------------------------------------------------------*/
    
    /**
       Création d'un sommet...
     */

    public Vertex(TransportNetwork myTransportNetwork, int indexOfVertex)
    {
	this.myTransportNetwork = myTransportNetwork;
	this.index = indexOfVertex;
	outArcs = new Vector();
	inArcs = new Vector();
    }
    
    /*----------------------------------------------------------------------------*/
    
    /**
       Retourne l'<CODE>index</CODE> du sommet courant.
     */
    
    public int getIndex()
    {
	return index;
    }

    /*----------------------------------------------------------------------------*/
    
    /**
       Ajout d'une ar&ecirc;te conforme.  
     */
    
    public void addOutArc(Arc myArc)
    {
	outArcs.add(myArc);
    }

    /*----------------------------------------------------------------------------*/
    
    /**
       Ajout d'une ar&ecirc;te inconforme. 
     */

    public void addInArc(Arc myArc)
    {
	inArcs.add(myArc);
    }

    /*----------------------------------------------------------------------------*/
    
    /**
       Retourne le sommet source.
     */

    public FlowableVertex getSource()
    {
	return myTransportNetwork.getSource();
    }
    
    /*----------------------------------------------------------------------------*/
    
    /**
       Retourne le sommet puits.
     */

    public FlowableVertex getSink()
    {
	return myTransportNetwork.getSink();
    }

    /*----------------------------------------------------------------------------*/
    
    /**
       Retourne la liste des pr&eacute;d&eacute;cesseurs.
     */

    public Vector getInArcs()
    {
	return inArcs;
    }

    /*----------------------------------------------------------------------------*/
    
    /**
       Retourne la liste des successeurs.
     */

    public Vector getOutArcs()
    {
	return outArcs;
    }

    /*----------------------------------------------------------------------------*/

    /**
       Accepte la marque myMark.
     */

    public void acceptMark(FlowMark myMark)
    {
	this.myMark = myMark;
    }
    
    /*----------------------------------------------------------------------------*/

    /**
       Retourne la marque si elle existe.
     */

    public FlowMark getMark()
    {
	return this.myMark;
    }

    /*----------------------------------------------------------------------------------------*/

    /**
       Ajoute ce sommet dans la coupe.
     */

    public void addToTheCut()
    {
	isInTheCut = true;
    }    

    /*----------------------------------------------------------------------------------------*/

    /**
       Retourne <CODE>true</CODE> si ce sommet est dans la coupe.
     */

    public boolean isInTheCut()
    {
	return isInTheCut;
    }    

    /*----------------------------------------------------------------------------*/

    /**
       Renvoie cette ar&ecirc;te sous format cha&icirc;ne de caract&egrave;res
     */

    public String toString()
    {
	String res = "{ index = " + index;
	res += " arcs = "+ outArcs;	    
	if (myMark!= null)
	    {
		res += " mark = " + myMark;
	    }
	else
	    {
		res += null;
	    }
	res += " };";
	return res;
    }   

}



Alexandre 2009-05-14