[PDF] Plan Langage Java • Exceptions Algorithmique • Implantations



Previous PDF Next PDF







Algorithmique des graphes quelques notes de cours

1 Modi er l'algorithme de parcours en largeur a n de récupérer les composantes connexes du graphe en entrée 2 Appliquer le parcours en largeur à la recherche d'un plus court chemin entre deux som-mets xet ydu graphe G 3 Proposer une version du parcours en largeur où la le a_traiter est simulée à l'aide d'un tableau de néléments



Parcours dun graphe

Parcours en largeur : principe de l’algorithme Vous devez parcourir toutes les pages d’un site web Les pages sont les sommets d’un graphe et un lien entre deux pages est une ar^ete entre ces deux sommets 1 Dans le parcours en largeur, on utilise une le On en le le sommet de d epart (on visite la page index du site)



Algorithmes en Java Chap 5 : Graphes

2 Parcours de graphes Parcours en largeur Parcours en profondeur 3 Fermeture transitive des graphes Algorithme de Warshall 4 Recherche du plus court chemin Algorithme de Ford F Rico, A Rico (UCBL) MASS54 : Graphes 11 novembre 2013 14 / 69



Chapitre 3 : Exploration d’un graphe

Lors d’un parcours en largeur, on applique la r egle "premier marqu e-premier explor e" i e Pour construire les couches, on explore les sommets en respectant l’ordre dans lequel ils ont et e marqu es Chapitre 3 : Exploration d’un graphe - Parcours en largeur (BFS) 12/35



Algorithmique et programmation en Java

19 3 L’implémentation en Java 254 19 3 1 Matrice d’adjacence 256 19 3 2 Listes d’adjacence 258 19 4 Parcours d’un graphe 260 19 4 1 Parcours en profondeur 260 19 4 2 Parcours en largeur 261 19 4 3 Programmation en Java des parcours de graphe 262 19 5 Exemple 263 19 6 Exercices 263



Représentation des graphes et Programmation

Principe du parcours en largeur •On part d’un sommet donné On énumère tous les fils (les suivants) de ce sommet, puis tous les petits-fils non encore énumérés, etc C’est une énumération par génération : les successeurs directs, puis les successeurs au 2e degré, etc



Plan Langage Java • Exceptions Algorithmique • Implantations

Soit F un parcours en largeur à partir de s d'un graphe G Pour chaque sommet v ≠ s, il existe un premier élément v' de F tel que (v', v) soit un arc du graphe Soit G(s) le sous-graphe constitué de ces arcs Proposition (1) G(s) est une arborescence (2) x ∈ G(s) ssi il existe un chemin de s à x



GRAPHES REPRÉSENTATION ET PARCOURS

Le parcours en profondeur d’un graphe avec n sommets et m arêtes finit en temps O(n + m) Preuve On considère chaque arête exactement deux fois (quand on la trouve sur les deux listes d’adjacence), et on colorie chaque sommet exactement trois fois forêt en profondeur : formée par les arêtes de liaison parent



Cours n: Graphes - LIX

Parcours d’arbres Repr esentation des graphes Matrice d’adjacences Liste de successeurs Parcours de graphes Parcours g en erique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 2

[PDF] conflit de puissance définition

[PDF] parcours lecture acces pas cher

[PDF] parcours lecture pdf

[PDF] parcours lecture le petit chaperon rouge

[PDF] parcours lecture acces avis

[PDF] parcours lecture occasion

[PDF] coexistence pacifique cours

[PDF] archives militaire en ligne

[PDF] livret militaire en ligne

[PDF] la coexistence pacifique de 1953 ? 1962 pdf

[PDF] cornière catnic

[PDF] corniere galva pour brique

[PDF] corniere pour linteau brique

[PDF] cornière support briques

[PDF] cornière pour linteau de brique

X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8 Plan

Langage Java

• Exceptions

Algorithmique

• Implantations d'un graphe • Parcours de graphe X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Exceptions

Une exception est un objet de la

classe java.lang.Exception (ou de l'une de ses sous-classes) class ExceptionPile extends Exception

ExceptionPile(String m)

System.out.println(m)

Utilisation :

int valeur() throws ExceptionPile if (estVide()) throw new ExceptionPile("Pile vide"); return contenu[hauteur-1]; X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Exceptions

Effets de la levée d'exception, par

"throws" (1) création d'un objet de la classe

ExceptionPile

(2) sortie de la méthode en cours (3) recherche dans l'arbre d'appel d'un bloc qui capte l'exception

Pile p = new Pile();

try// Exécution contrôlée

System.out.println(p.valeur());

catch(ExceptionPile e)

System.out.println(m)

X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Exceptions

Le bloc try lance l'exécution.

Si une erreur se produit pendant

cette exécution, l'éxécution se poursuit dans un bloc catch, avec comme argument e l'objet créé lors de la levée d'exception.

Pile p = new Pile();

try// Exécution contrôlée

System.out.println(p.valeur());

catch(ExceptionPile e)

System.out.println(m)

X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Exceptions

On peut avoir 0, 1 ou plusieurs

blocs catch, qui se comportent comme un case dans un bloc switch. try// Exécution contrôlée readFromFile("monFichier"); catch(FilelNotFoundException e)

System.out.println("Pas trouvé !")

catch(IOException e)

System.out.println("Erreur d'entrée-

sortie"); catch(Exception e)// Autres erreurs

System.out.println("Erreur");

X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Finally

On peut rajouter un bloc finally,

qui est exécuté que l'exception soit levée ou pas, même en cas de return, avant que le programme ne quitte le try try// Exécution contrôlée readFromFile("monFichier"); catch { ... } finally// nettoyage

Refermer les fichiers, les connections

Internet, etc.

X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Matrice d'adjacence

M i,j = {

010100010010001001010001001000100 si (i, j) G

1 si (i, j) G1

2 3

4class GrapheMat

int[][] m;// Matrice d'adjacence int n; // nombre de sommets

GrapheMat(int n) {

this.n = n; m = new int[n][n]; X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Exemple d'utilisation

Thm Soit M la matrice d'adjacence

d'un graphe G. Pour tout n ³ 0, Mi,jest égal au nombre de chemins de longueur n de i à j.n n true s'il existe un chemin de longueur n de i à j false sinon class GrapheMat boolean[][] m;// Matrice d'adjacence int n; // nombre de sommets }Remarque Si M est définie comme matrice booléenne, on a M i,j = { X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Matrice d'incidence

1si i est l'origine de a

M i,a = {-1si i est l'extrémité de a

0sinon

Exercice : montrer que M est

unimodulaire, i. e. le déterminant de toute sous-matrice carrée de M vaut 0, -1 ou 1.(Graphe sans boucle) 1 0 1 0-1 -1 1 0 0 0

0 0 0-1 1

0-1-1 1 012

3 41
23
45

1 2 3 4 5

1 2 3 4 X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Par récurrence sur la taille n de la

matrice carrée extraite. • Clair pour n = 1 • On développe le calcul du déterminant D n par rapport à une colonne. - Si une colonne est nulle, Dn = 0 - Si une colonne contient un seul coefficient non nul, 1 ou -1, D n = ± Dn-1- Si toutes les colonnes ont deux coefficients non nuls (1 et -1), la somme des colonnes est nulle et D n = 0Solution X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Liste de successeurs

1 : 24

2 : 4 3 : 3

4 : 3public class GrapheListe

Liste[] succ;

int n;

GrapheListe(int n)

this.n = n; succ = new Liste[n]; }1 2 3 4 X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Comparaison des tailles

Graphe à n sommets et m arcs.

Matrice d'adjacence : n2

Matrice d'incidence : nm

Liste de successeurs : n + m

X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Parcours d'un graphe connexe

non orienté à partir d'un sommet s

C'est une suite S de sommets t.q.

(1) s est le premier sommet de S (2) Chaque sommet apparaît une fois et une seule dans S (3) Tout sommet sauf la racine est adjacent à un sommet placé avant lui dans la liste.Exemple : 5 3 6 2 1 4 7 est un parcours issu de 51 23
4 5 67
X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

On obtient une arborescence de

Trémeaux.

Ici, en partant

de s = 1 :

Complexité (n sommets, m arêtes)

O(n + m) avec des listes de

successeurs, O(n

2) avec des

matrices d'incidenceParcours en profondeur

Initialisation : S = (s)

Si S = (s

1 , ..., sn-1), on prend

pour s n un voisin de sn-1, ou, à défaut, un voisin de s n-2, ou, à défaut, un voisin de s n-3, etc.1 23
5 6 74
X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8 public class Graphe

Liste[] succ;

boolean[] marque; int n;

Graphe(int n)

this.n = n; succ = new Liste[n]; marque = new boolean[n]; void marquer(int i) marque[i] = true; void demarquer() for (int i = 0; i < n; i++) marque[i] = false; X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8

Trémeaux Récursif

void profondeur(int i)

System.out.print(i + " ");

marquer(i); for (Liste a = succ[i]; a != null; a = a.suivant) int v = a.contenu; if (!marque[v]) profondeur(v); void parcoursProfondeur() demarquer(); for (int i = 0; i < n; i++) if (!marque[i]) profondeur(i); X, Petite classe 5X, Petite classe 5X, Petite classe 8X, Petite classe 8quotesdbs_dbs44.pdfusesText_44