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

FlowableArc.java


package buffalo.transportNetwork;

/**
   Interface pour les flots, plus précisément 
   pour les ar&ecirc;tes.<BR>
   Les ar&ecirc;tes repr&eacute;sent&eacute;es dans cette 
   interface doivent poss&eacute;der un intervalle de 
   valuations, pouvoir accepter des flots, et permettre 
   un acc&egrave;s aux sommets adjacents. 
   Le r&eacute;seau mis en place ici doit admettre le flot nul 
   comme solution r&eacute;alisable. Une valuation strictement 
   n&eacute;gative est interpr&eacute;t&eacute;e ici comme une 
   absence de borne. Une valuation n&eacute;gative doit 
   &ecirc;tre impl&eacute;ment&eacute;e comme 
   une valuation positive sur l'arc inconforme.
 */

public interface FlowableArc
{
    /**
       Capacit&eacute; de l'arc inconforme, c'est-&agrave;-dire flot 
       qu'il est possible de faire passer dans le sens inverse. 
       Cette valeur peut aussi &ecirc;tre vue comme une borne 
       inf&eacute;rieure pour un flot n&eacute;gatif. Si il 
       n'existe pas de borne inf&eacute;rieure, 
       donc que l'arc non conforme est de capacit&eacute; 
       infinie, il faut renvoyer une valeur strictement 
       positive.
     */
    public double getMinCapacity();
    
    /**
       Capacit&eacute; de l'arc conforme, c'est-&agrave;-dire 
       flot maximal qu'il est possible d'y faire passer.
       Si la capacit&eacute; de cet arc est infinie, il 
       faut renvoyer une valeur strictement n&eacute;gative.
     */
    public double getMaxCapacity();

    /**
       Valeur effective du flot.
     */
    public double getFlowValue();

    /**
       Quantit&eacute; de flot qu'il est encore possible de 
       faire passer dans cet arc. C'est &agrave; dire sa 
       valeur dans le graphe r&eacute;siduel. 
       Renvoyer 0 s'il n'est plus possible d'en faire passer, 
       un nombre strictement n&eacute;gatif si cette ar&ecirc;te 
       est dans le graphe r&eacute;siduel de capacit&eacute; infinie.
    */    
    public double getConformResidualValue();
    
    /**
       Quantit&eacute; de flot qu'il est possible de faire passer 
       dans l'arc non conforme. Valeur r&eacute;siduelle de l'arc 
       dans le sens inverse. On peut aussi voir cela comme la quantit&eacute; 
       de flot qu'il est possible de retrancher sur cet arc. S'il 
       n'est plus possible d'ajouter du flot sur l'arc inconforme, 
       renvoyer 0. Si l'arc inconforne est de capacit&eacute; infinie, 
       renvoyer une valeur strictement n&eacute;gative.
     */
    public double getUnconformResidualValue();
    
    /**
       Si l'arc courant (u, v) est orient&eacute; de u vers v, 
       cette m&eacute;thode retourne le sommet u.
     */

    public FlowableVertex getInVertex();

    /**
       Si l'arc courant (u, v) est orient&eacute; de u vers v, 
       cette m&eacute;thode retourne le sommet v.
     */

    public FlowableVertex getOutVertex();

    /**
       Pour augmenter le flot dans l'orientation conforme.
     */
    
    public void increaseConformFlow(double increment);
	
    /**
       Pour augmenter le flot dans l'orientation non conforme.
     */
    
    public void increaseUnconformFlow(double increment);
	

}



Alexandre 2009-05-14