Précédent : Programmation distribuée, parallèle,
et concurrente Remonter : Fondements scientifiques
Suivant : Domaines d'applications
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, d'une part, leurs frontières communes sont assez floues, 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 (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 place des valuations sur les arêtes qui correspondront à des capacités ou des largeurs de bande, ou on utilise 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écommunications. 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 issue 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 presque toujours nous travaillons 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 Bernouilli).
Pour mieux cerner notre problématique, commençons par donner un résultat classique qui correspond au cas favorable où il existe un algorithme polynômial pour optimiser un paramètre : le théorème de Menger.
La démonstration de ce théorème induit un algorithme en temps polynômial 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 : soient 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 devient NP-complet même pour k = 2. Notons que :
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 :
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 les nombre de couleurs. Ce problème reste ouvert.
Nous pouvons classer nos recherches en trois grands domaines scientifiques décrits dans les sections suivantes.
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
log2(n) + loglog(n) alors que l'optimal
est log(n). Les méthodes constructives sont loin d'être
aussi efficaces et un grand nombre de constructions de
bons réseaux (i.e. 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, - 1correspond au
cycle) ; les bonnes constructions reposent alors sur des
techniques d'algèbre poussée 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 :
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 provenant du CNET :
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.4).
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 :
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, cf section 3.3.5). Il peut aussi se rencontrer dans le domaine des télécommunications ou servir de base à la conception d'un réseau quand on ne dispose pas d'information sur le trafic (l'échange total reflète assez bien la superposition de nombreuses communications quelconques) ou 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 ou 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, où l'on cherche une
topologie logique capable d'écouler le trafic et vérifiant des
contraintes de capacité, de nombre maximal de liens logiques
partageant un même lien physique, ou encore de nombre de
commutateurs. Dans le cas de réseaux de type WDM,
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.
Le calcul parallèle de problèmes discrets traite, en bonne
partie, de la solution d'un problème d'imagerie ou géométrique de
taille n sur un ordinateur parallèle avec
pprocesseurs. La solution parallèle est dite optimale si
Tpar = O(), où Tpar et
Tseq sont, respectivement, le temps parallèle
et séquentiel requis pour résoudre le problème.
Le modèle théorique utilisé pour ce genre de problèmes a été,
jusqu'à très récemment, celui où
= O(1), aussi connu
comme le modèle de parallélisme à grain fin. Toutefois,
pour qu'un algorithme parallèle soit important en pratique, il
doit être portable et extensible (scalable), i.e., il doit
être applicable sur plusieurs ordinateurs parallèles et efficace
pour un large intervalle de valeurs de
.
La conception de ce type d'algorithmes est l'un des grands objectifs de l'algorithmique parallèle depuis toujours, principalement parce que les architectures de la plupart des ordinateurs existants (e.g. Paragon d'Intel et T3E de Cray) sont composés de p processeurs standards (e.g. le Sparc), chacun avec une mémoire locale importante, connectés par un réseau d'interconnexion (e.g. grille, hypercube, fat-tree). Ces machines sont d'habitude à gros grain (i.e., la taille de chaque mémoire locale est beaucoup plus grande que O(1)).
Les modèles Bulk Synchronous Processes (
BSP) and Coarse Grained Multicomputer (
CGM) sont donc composés de p processeurs
avec
O() mémoire locale chacun,
connectés par un réseau d'interconnexion quelconque ou par une
mémoire partagée. Le terme «bulk» fait référence au fait que le
grain de calcul est important et le terme «coarse-grained» fait
référence au fait que (comme dans la pratique) la taille
O(
) de chaque mémoire locale
est définie «beaucoup plus large» que O(1).
Nous remarquons que, s'il existe un algorithme optimal à grain
fin avec
Tpar = O(), alors, au moins d'un point de vue
théorique, le problème de l'extensibilité ne se pose pas. En
effet, une simulation standard (aussi appelée simulation par
«processeurs virtuels» dans plusieurs systèmes d'exploitation de
machines parallèles) donne un algorithme optimal pour tout
n et p. Cependant, pour la plupart des réseaux
d'interconnexion utilisés dans la pratique, nombreux sont les
problèmes pour lesquels il n'existe pas de telles solutions
optimales à grain fin ; ou encore, les algorithmes optimaux à
grain fin sont impossibles à cause des limitations dues à la
largeur de bande ou au diamètre (e.g. sur la grille).
Les algorithmes développés pour ces modèles ont pour but de
proposer des résultats indépendants du réseau de communication
des machines cibles pour que les algorithmes soient portables.
Une des caractéristiques principales de cette approche est que
toutes les communications entre les processeurs doivent être
restreintes à un nombre constant d'étapes de communication
globale. La stratégie de base est la suivante : on essaye de
combiner des algorithmes séquentiels optimaux existants avec un
routage global et un mécanisme de partitionnement efficaces.
Chaque processeur résout alors en séquentiel un nombre constant
de sous-problèmes de taille
O() et on utilise un très
petit nombre d'étapes de communication pour permuter les
sous-problèmes parmi les processeurs. À la fin, chaque processeur
combine les solutions des sous-problèmes pour déterminer sa
partie de la solution globale, partie de taille
O(
).
Cette description est aussi brève que simplifiée. Les vrais
algorithmes font plus que seulement permuter des données. En
fait, la vraie difficulté se trouve dans le développement des
schémas de partitionnement cohérents, puisque chaque processeur
résout seulement un très petit nombre de sous-problèmes de taille
O(), mais doivent déterminer
leur contribution (de taille
O(
)) à la résolution du
problème complet (sans pour autant avoir accès à toutes les
n données). La partie la plus technique de la conception
des algorithmes est celle qui consiste à garantir qu'un très
petit nombre d'étapes de communication globale est
suffisant.