Commit ed4760c6 authored by Ulmer Louis's avatar Ulmer Louis
Browse files

ajout du parcours en RO

parent db25a6cc
No preview for this file type
......@@ -19,20 +19,27 @@ import java.util.*;
public class Arc {
private Sommet o, d;
private int val, capacite;
private int val, flux;
public Arc(Sommet o, Sommet d, int val) {
this.o = o;
this.d = d;
this.val = val;
this.capacite=0;
this.flux=0;
}
public Arc(Sommet o, Sommet d, int flux ,int val) {
this.o = o;
this.d = d;
this.val = val;
this.flux=flux;
}
public Arc(Arc a) {
this.o = a.o;
this.d = a.d;
this.val = a.val;
this.capacite=a.capacite;
this.flux=a.flux;
}
public Sommet destination() {
......@@ -46,15 +53,19 @@ public class Arc {
public int valeur() {
return val;
}
public int flux() {
return flux;
}
public void modifierValeur(int val) {
this.val = val;
}
public void modifierCapacite(int capa) throws capaciteOutOfBoundsException {
if (capa > this.val) {
throw new capaciteOutOfBoundsException();
public void modifierFlux(int flux) throws fluxOutOfBoundsException {
if (flux > this.val) {
throw new fluxOutOfBoundsException();
}else{
this.capacite = capa;
this.flux = flux;
}
}
......
import java.io.*;
import java.util.*;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
......@@ -118,6 +121,16 @@ public class GraphRO {
System.out.print(si+" ");
}
System.out.println("");
/* --------------------------------------------------------- */
/* Recherche d'une chaine ameliorante ---------------------- */
/* --------------------------------------------------------- */
LinkedList<Sommet> res= new LinkedList();
res=grapheMat.parcoursEnLargeur();
System.out.println("La chaine ameliorante"+res.toString());
}
......
......@@ -66,6 +66,12 @@ public class GrapheMatrice extends Graphe {
return M.get(i).get(j).valeur();
}
public int valeurFlux(Sommet s, Sommet t) {
int si = numerotation.numero(s);
int ti = numerotation.numero(t);
return M.get(si).get(ti).flux();
}
public void enleverArc(Sommet s, Sommet t) {
int si = numerotation.numero(s);
int ti = numerotation.numero(t);
......@@ -166,6 +172,49 @@ public class GrapheMatrice extends Graphe {
throw new UnsupportedOperationException("Not supported yet.");
}
public LinkedList<Sommet> parcoursEnLargeur(){
LinkedList<Sommet> Q = new LinkedList();
LinkedList<Sommet> CA = new LinkedList();
Sommet i,s,t;
Vector<Sommet> sommets= new Vector(this.sommets());
s=sommets.get(0); //Recuperer S
t=sommets.lastElement();//recuperer T
s.modifierMarque(1);
Q.addFirst(s);
System.out.println("valeur de sommets = "+sommets.toString());
do {
i=Q.pollLast();//defiler
CA.addLast(i);
System.out.println("valeur de CA = "+CA.toString());
System.out.println("valeur de i = "+i.toString());
for (Sommet j : this.successeurs(i)) {
System.out.println("Iteration 'for' des successeurs de "+i);
System.out.println("successeurs de "+i+" : "+this.successeurs(i).toString());
//on doit s'assurer que j n'est pas deja marqué et que le flux<capacite
if (j.valeurMarque()==0 && this.valeurFlux(i,j)<this.valeurArc(i,j)) {
j.modifierMarque(1);
Q.addFirst(j); //enfiler
}
}
for (Sommet j : this.predecesseurs(i)) {
System.out.println("Iteration 'for' des predecesseurs de "+i);
System.out.println("predecesseurs de "+i+" : "+this.predecesseurs(i).toString());
//on doit s'assurer que j n'est pas deja marqué et que le flux>0
if (j.valeurMarque()==0 && this.valeurFlux(i,j)>0) {
j.modifierMarque(1);
Q.addFirst(j); //enfiler
}
}
} while (!(Q.size()==0) || t.valeurMarque()==0);
//on s'assure que la liste n'est pas vide que t n'est pas marqué
//CA.addLast(t);
return CA;
}
public String toString() {
StringBuilder retour = new StringBuilder();
retour.append("Graphe Matrice \nNombre de sommets = "+this.taille()+".\n");
......
import java.io.*;
import java.util.*;
public class capaciteOutOfBoundsException extends Exception {
public capaciteOutOfBoundsException() {
public class fluxOutOfBoundsException extends Exception {
public fluxOutOfBoundsException() {
}
public capaciteOutOfBoundsException(String msg) {
public fluxOutOfBoundsException(String msg) {
super(msg);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment