Introduction
Ce projet a pour objectif d’optimiser les chemins et les longueurs d’onde utilisés dans
le cadre d’un réseau à fibres optiques. Pour cela nous modélisons le réseau sous forme de
graphes et nous utiliserons différents algorithmes de parcours de graphes pour déterminer les
méthodes adaptées selon la configuration du réseau et les requêtes qui vont être effectuées.
Ainsi après avoir défini les types et structures de données nécessaires pour représenter
les éléments composant le réseau, nous allons implémenter les algorithmes « gloutons » et
« suivant charge ». Nous analyserons ensuite ces algorithmes pour définir les méthodes les
plus efficaces en fonction du nombre d’arêtes et de requêtes et leur positionnement sur le
réseau.
I) Implémentation : entrées/sorties, structure de données
et algorithmes
a. Vue d’ensemble du programme
Types et structures de données utilisés :
Le graphe est représenté sous forme de matrice d’adjacence dans laquelle les éléments
ne sont pas de type booléen mais entier : ils représentent la charge des arêtes. Une intersection
dans la matrice contient -1 si l’arête n’existe pas dans le graphe ; un entier positif si l’arête
existe. La création de propriétés et méthodes abstraites dans la classe graphe a pour objectif
de permettre l’utilisation d’une structure de données différente par la simple création d’une
classe implémentant ses propriétés et méthodes, mais dans le cadre de ce projet nous nous
sommes limités à l’implémentation par matrice.
Nous utilisons aussi une classe chemin qui hérite de la classe vector à laquelle on
ajoute une variable int longueurOnde et des méthodes, notamment la méthode comparer, qui
permet la comparaison de deux chemins pour déterminer si ils ont au moins un arête en
commun.
De la même manière nous utilisons souvent la classe vector pour représenter différents
types de données en raison de sa souplesse d’utilisation pour représenter différentes
structures, les réutiliser et les afficher.
Entrées/Sorties et interface :
La représentation des données en entrée est celle donnée dans le sujet, soit deux suites
d’entiers permettant de représenter le graphe et les requêtes. Les entrées sont données au
choix par l’ouverture de fichiers ou en les écrivant directement dans l’interface.
Le graphe est automatiquement chargé, il est ensuite possible de l’afficher à l’écran
après avoir positionné tous les sommets à la souris dans la zone dédiée de l’interface.
De même le choix des algorithmes à utiliser pour définir les chemins et longueurs
d’onde est effectué dans l’interface, les résultats sont affichés dans la « comboBox ». Ces
résultats sont de la forme x [s0, s1,…,sn] où x est la longueur d’onde et les sommets entre
crochets représentent le chemin correspondant à une requête (dans l’ordre de traitement des
requêtes, donc en fonction de l’algorithme utilisé). Lorsque le choix de l’algorithme a été fait,
les arêtes correspondant au chemin sélectionné changent de couleur ; les charges sont elles
aussi affichées sur le graphe.