Sous-sections
Mots clés : algorithmique,
mathématiques discrètes, optimisation combinatoire, théorie
des graphes, algorithmique parallèle, algorithmique
distribuée .
Cet axe s'appuie sur les trois disciplines étroitement
interconnectées que sont les Mathématiques Discrètes,
l'Algorithmique et l'Optimisation Combinatoire. Si leurs
frontières communes sont assez floues, en revanche, les
techniques et les outils que l'on y trouve couvrent un champ
très vaste et sont utilisés dans de nombreux domaines
d'application.
Par exemple, les réseaux de communication (réseaux
d'interconnexion de processeurs ou réseaux de
télécommunication) sont souvent modélisés par des graphes ou
leurs généralisations (hypergraphes, graphes valués).
Rappelons qu'un graphe (resp. graphe
orienté) G = (V,
E) est défini par un ensemble V de sommets et un ensemble
E d' arêtes (resp.
arcs) formé de paires (resp. couples) de sommets.
Typiquement, un sommet représentera un processeur, un
routeur, un abonné, un central ou un commutateur, une arête
représentera une liaison physique ou virtuelle de
communication entre les éléments représentés par les sommets.
On peut être amené à rajouter des informations sur les
sommets ou les arêtes. Par exemple, on placera des valuations
sur les arêtes qui correspondront à des capacités ou des
largeurs de bande, ou on utilisera des couleurs sur des
chemins correspondant dans une fibre optique à la longueur
d'onde qu'ils utilisent.
Un hypergraphe H =
(V, E') est une généralisation des
graphes où la cardinalité des éléments de E' peut être plus grande que
2. Ces objets combinatoires
permettent de modéliser des entités du monde réel bien au
delà des problèmes d'interconnexion et de télécommunication.
Citons par exemple les graphes de calcul ou les problèmes
d'allocation de ressources. L'étude des propriétés et des
comportements de ces entités est alors effectuée en profitant
de l'énorme quantité de résultats existant dans la
littérature en Mathématiques Discrètes, soit sur des
propriétés structurelles ( par exemple connectivité,
couplages, ensembles indépendants, nombre chromatique,
...), soit sur des principes de construction ( graphes de
Cayley, graphes extrémaux, ...), soit enfin sur
l'algorithmique qui s'y rapporte ( algorithmes de flot,
connectivité, calcul de couverture par les sommets,
...).
Notons que beaucoup d'aspects algorithmiques ne sont pas
spécifiques à la théorie des graphes ; certains algorithmes
utilisent des principes généraux (partitionnement, structures
de données, ...). Plus particulièrement, nous nous fondons
sur des résultats de complexité concernant la possibilité ou
non de fournir une solution proche de l'optimum
(algorithmique d'approximation) et sur des méthodes de
randomisation ou d'algorithmique probabiliste. Nous
utilisons aussi des méthodes issues de l'analyse
d'algorithmes (évaluation de quantités combinatoires,
techniques de comptage) afin d'analyser la complexité des
algorithmes (ou les propriétés de la solution). Des
techniques de comptage voisines interviennent aussi quand
nous utilisons des probabilités discrètes. Un certain nombre
d'outils issus de la recherche opérationnelle comme la
programmation convexe (programmation linéaire, programmation
semi-définie positive), les techniques d'arrondi et de
résolution de problèmes en nombres entiers ou encore des
heuristiques ( tabu search, simulated annealing,
...) sont aussi parfois utilisés.
Enfin, précisons que nous travaillons presque toujours
avec des hypothèses déterministes. Par exemple, si
un objet tombe en panne, il ne fonctionne plus ; ce qui
revient dans le graphe associé à supprimer le sommet ou
l'arête modélisant l'objet. S'il arrive que nous traitions
parfois des problèmes non déterministes, notre approche se
limite à l'utilisation de probabilités discrètes simples (par
exemple, nous pouvons intégrer la probabilité de panne d'un
élément sous la forme d'une loi de Bernoulli).
Quelques exemples caractéristiques
Pour mieux cerner notre problématique, commenÇons par
donner un résultat classique qui correspond au cas favorable
où il existe un algorithme polynomial pour optimiser un
paramètre : le théorème de Menger.
Théorème 1 (Menger)
Dans un graphe orienté le nombre maximum de chemins
deux à deux arc-disjoints d'un sommet x à un sommet y est
égal au nombre minimum d'arcs à supprimer pour déconnecter
x de y.
La démonstration de ce théorème induit un algorithme en
temps polynomial pour trouver les chemins disjoints ou les
arcs à supprimer (le lecteur connaissant la théorie des flots
aura reconnu un cas particulier du théorème du flot maximum
et de la coupe minimum).
De ce théorème, on déduit le résultat suivant : étant
donnés deux ensembles de sommets
S = {s1,
s2,..., sk} et
T = {t1,
t2,..., tk}, il
existe k chemins deux à deux
arc-disjoints de S à
T si et seulement si la
suppression de k arcs ne
déconnecte pas S de
T. Si maintenant on cherche
des chemins dont les extrémités sont fixées à l'avance
(c'est-à-dire que le chemin i doit relier si à ti), alors le problème (dit
du routage par chemins disjoints)
devient NP-complet même pour k =
2. Notons que :
- le même problème pour un graphe non-orienté
(déterminer, quand elles existent, k chaînes arête-disjointes reliant des
paires de sommets fixées) est polynomial pour k fixé, même si, en pratique, le degré
du polynÔme induit un coût prohibitif ;
- dans le cas d'un graphe orienté symétrique (il existe
alors autant d'arcs (x,
y) que d'arcs (y,
x)) le problème est aussi polynomial pour
k fixé (résultat obtenu
dans le projet en réponse à un problème de France Télécom
R&D).
Ces exemples démontrent l'importance d'une définition
précise des modèles, puisque des variations apparemment
mineures transforment un problème «facile» en un problème
«difficile».
Il est aussi fréquent qu'un problème en général NP-complet
puisse être résolu dans des cas particuliers. Un exemple
récent est celui du Ring Loading Problem. Étant donnés
un anneau non orienté (cycle) et k couples de sommets (requêtes)
(si,
ti), on souhaite acheminer un trafic
di de
si à ti. Pour chaque requête, nous
pouvons choisir de l'acheminer sur le cycle via une route qui
sera soit le chemin horaire, soit le chemin anti-horaire. On
appelle charge d'une arête le trafic qui l'emprunte.
Notons
[si,
ti] l'ensemble des arêtes du chemin
horaire de si a
ti, et posons
xi = 1 si le
chemin horaire est choisi (0
sinon). Le problème d'optimisation s'écrit alors :
où di représente
le poids de la connexion (si, ti),
Lj est la charge
de l'arête j et
maxj(Lj)
est la charge maximum d'une arête, que l'on souhaite
minimiser. Lorsqu'il n'y a pas de contrainte sur les poids
des connexions, le problème est NP-difficile, mais il devient polynomial
si di = 1. On ne
connaît pas sa complexité lorsque di est supposé borné par une
constante. Enfin, il existe un algorithme polynomial qui
calcule une solution dont la charge est au plus
fois l'optimum. Si l'on relâche la contrainte d'intégrité des
xi (ce qui
revient à autoriser la séparation du flux d'une requête sur
le chemin horaire et anti-horaire), le problème est une
instance classique de problème de programmation linéaire et
se résout en temps polynomial.
Cet exemple démontre une fois encore la nécessité
d'hypothèses précises ; il est aussi typique, car sa
résolution repose sur l'utilisation conjointe d'outils de
théorie des graphes, de techniques d'optimisation
combinatoire (programmation linéaire, relaxation) et de
techniques d'approximation.
Le Ring Loading problem provient d'un problème
fondamental pour les réseaux SONET
(Synchronous Optical NETworks) ou utilisant la
SDH (Synchronous Digital Hierarchy).
Une variante plus complexe de ce problème consiste à
colorer les chemins associés aux requêtes, de manière à ce
que les chemins partageant une même arête aient des couleurs
distinctes. Les différentes couleurs correspondent alors aux
longueurs d'ondes disponibles dans un réseau optique. Le but
est de minimiser le nombre de couleurs. Ce problème reste
ouvert.
Plus précisément nos recherches s'insèrent dans les deux
domaines scientifiques décrits dans les sections
suivantes.
Modélisation et conception de réseaux
Dans ce domaine,
nous modélisons un réseau réel par un objet combinatoire. La
modélisation est presque systématiquement simplificatrice,
mais elle retient les paramètres critiques en jeu. Nous
cherchons alors :
- soit à construire le meilleur objet possible
(satisfaisant les contraintes et optimisant une fonction de
coût), on parle alors de problème de conception
(«design»), l'approche est en général duale puisque que
la tâche de construction s'accompagne de la preuve de la
qualité de celle-ci
- soit à déterminer les propriétés de certains objets
combinatoires.
Un des problème de design les plus étudiés est le
suivant :
[Problème
(
,
D)] Construire le graphe de degré
maximum
et de diamètre
D ayant le maximum de sommets. Ce
nombre maximum de sommets est noté
N(
, D).
Bien que d'énoncé trivial, le problème est très difficile
(hormis les cas particuliers
N(
,
1) =
(graphe complet) et
N(2, D) = D +
1 (Cycle)). Pourtant, une valeur approximative de
N(
,
D) a été théoriquement déterminée puisqu'il a
été démontré qu'un graphe aléatoire de paramètres
et
D contient quasiment un
nombre optimum de sommets ; à titre d'exemple, si on ajoute à
un cycle de n sommets un
couplage aléatoire, le graphe obtenu est de degré
3 et de diamètre
log(n) + loglog(n)
alors que l'optimal est log(n) (les logarithmes étant pris en
base 2). Les méthodes constructives sont loin d'être aussi
efficaces et un grand nombre de constructions de bons
réseaux ( bon signifiant que le réseau proposé
contient plus de sommets que ceux précédemment proposés) ont
été proposées. Les graphes étudiés sont souvent des graphes
de Cayley basés sur un groupe fini (les sommets sont les
éléments d'un groupe fini et leur voisins sont obtenus par
multiplication par certains éléments spécifiques du groupe
appelés générateurs). Les réseaux usuels sont en fait
des graphes de Cayley sur des groupes familiers (par exemple,
Zn muni des
générateurs +1, - 1 correspond au
cycle) ; les bonnes constructions reposent alors sur des
techniques d'algèbre poussées et utilisent des groupes plus
complexes comme ceux agissant sur les géométries finies.
Une autre technique consiste à construire des réseaux en
composant entre eux des graphes plus petits. Enfin, les
graphes sur alphabet et les graphes d'arcs itérés offrent un
bon compromis, car, bien qu'étant des objets assez simples,
ils sont proches des meilleures constructions. C'est le cas
du graphe de de Bruijn non-orienté dont les sommets sont des
D-uplets
(x1,
x2,..., xD) avec
xi
{0, 1,...d - 1} et où
(x1,
x2,..., xD) est
voisin de tout sommet
(x2,...xD -
1*) (resp.
(*x2...xD -
1xD)) obtenu par décalage à
gauche (resp. à droite).
Pour conclure sur ce problème, notons que l'analogue
orienté du problème
(
,
D) est bien moins difficile, puisque que les
graphes de Bruijn orientés sont alors presque optimaux.
Une fois un réseau construit, on cherche à déterminer
diverses propriétés, comme :
- sa connectivité, qui est le nombre maximum de chaînes
disjointes reliant deux sommets quelconques ;
- le nombre minimal de couleurs nécessaires afin de
colorier les arêtes ou les sommets de sorte que les arêtes
(les sommets) adjacents reÇoivent des couleurs
distinctes ;
- l'existence de cycles Hamiltoniens (cycle contenant
chaque sommet une fois et une seule).
Des questions directement liées à son utilisation en
tant que réseau d'interconnexion peuvent aussi être
abordées : comment router les messages dans le réseau,
comment y diffuser l'information (voir le livre [10]) ?
Nous sommes alors conduits à utiliser les outils
développés en théorie des graphes ou à déterminer des
algorithmes «efficaces» afin de résoudre ces questions.
Pour finir, citons un problème de construction non résolu
posé par France Télécom R&D :
Construire un graphe à N
sommets, k-connexe, de
diamètre D ayant un nombre
minimum d'arêtes.
Le lecteur trouvera des problèmes de conception plus
spécifiques dans les domaines d'application (cf. section
4.2).
Algorithmique des communications
Dans ce domaine, la
topologie du réseau, les communications à effectuer et le
modèle sont déjà déterminés. Le but est de réaliser un
ensemble de requêtes ou demandes. Une requête est modélisée
par un couple de sommets (si, ti)
associé à une intensité de trafic di qui correspond à la
quantité de messages que si veut envoyer à
ti. Le trafic est
en général un multiple entier d'un trafic considéré comme
unitaire qui dépend de l'application. Satisfaire la requête
consiste à trouver un (ou plusieurs) chemins de si à ti qui permettent d'écouler
le trafic di.
Le Ring Loading problem est un exemple des
problèmes considérés. Deux variantes peuvent
apparaître : un problème de décision (on souhaite alors
simplement satisfaire les requêtes) ou un problème
d'optimisation (il faut alors minimiser les ressources
utilisées, ou dimensionner le réseau afin qu'il satisfasse
les requêtes à un coût minimum, ou encore ne satisfaire
qu'une partie des requêtes, celles représentant un profit
maximum).
Il est utile de distinguer deux types de problèmes de
communication :
- Les communications structurées (parfois appelées
communications globales). Dans ce cas, les requêtes ont une
structure déterminée. Par exemple, cela peut être une
diffusion ( broadcasting) : envoi d'un message
depuis un sommet vers tous les autres, ou une diffusion
partielle ( multi-cast) : envoi d'un message depuis
un sommet vers un sous-ensemble des noeuds. Dans un
échange total (gossiping), les noeuds communiquent
tous entre eux (cela peut être vu comme n diffusions concurrentes). Le plus
souvent, on considère des trafics homogènes.
- Les communications irrégulières (ou quelconques) pour
lesquelles les requêtes sont quelconques et les trafics
variables.
Le premier type de communication se rencontre dans la
plupart des algorithmes parallèles (par exemple algèbre
linéaire, traitement d'image, bases de données). Il peut
aussi se rencontrer dans le domaine des télécommunications ou
servir de base à la conception d'un réseau si on ne dispose
pas d'information sur le trafic (l'échange total reflète
assez bien la superposition de nombreuses communications
quelconques) ou bien si l'on souhaite assurer une qualité de
service uniforme. Le deuxième type correspond plus aux
problèmes posés par les réseaux de télécommunication.
Schématiquement, il existe deux grand modes de
commutation : la commutation de paquets (
store-and-forward) et la commutation de circuits (mode
connecté). Dans le premier mode, les messages sont acheminés
pas à pas depuis l'émetteur vers le récepteur ; lors de
la réception d'un message, le routeur détermine vers où doit
s'effectuer l'envoi suivant. En mode commutation de circuits,
le chemin est établi soit de manière statique soit par un
en-tête ; les messages sont ensuite simplement transmis
le long du chemin logique ainsi obtenu.
Lorsque les chemins sont établis de manière statique, le
problème revient à déterminer une topologie logique
satisfaisant un certain nombre de contraintes. C'est, par
exemple, le cas pour les réseaux de type ATM
(Asynchronous Transfer Mode), où l'on cherche une topologie
logique capable d'écouler le trafic et vérifiant soit des
contraintes de capacité (nombre de liens logiques partageant
un même lien physique limité), soit des contraintes sur le
nombre de commutateurs traversés par une demande (qualité de
service). Dans le cas de réseaux de type WDM
(Wavelength Division Multiplexing), c'est le nombre de
couleurs ou le nombre de commutateurs optiques qui est
déterminant. Toutes ces questions se formalisent sous la
forme de problèmes de plongement contraint d'un graphe dans
un autre (i.e. du graphe logique dans le graphe physique) Ces
problèmes sont très étudiés en théorie des graphes. Pour les
résoudre, on peut utiliser des techniques d'extraction de
représentants : on peut chercher un ensemble minimum de
sommets S tel que tout
sommet soit à distance au plus
de S
ou encore déterminer un ensemble maximum de sommets que l'on
puisse interconnecter complètement. Néanmoins, il existe une
différence notable : le choix de la topologie logique,
bien que contraint, est laissé au concepteur, alors que, pour
des plongements classiques, la structure à placer est
complètement déterminée.