La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Présentation générale Marc Gengler

Présentations similaires


Présentation au sujet: "Présentation générale Marc Gengler"— Transcription de la présentation:

1 Présentation générale Marc Gengler Marc.Gengler@esil.univmed.fr
Cours de Graphes Marc Gengler Alexandra Bac Marc Gengler Azeddine Zidouni 18h de cours 24h de TD … et un examen 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

2 Présentation générale
Les grandes lignes du cours Définitions de base Connexité Les plus courts chemins Floyd-Warshall, Dijkstra et Bellmann-Ford Arbres Arbres de recouvrement minimaux Problèmes de flots, Ford & Fulkerson Coloriage de graphes Couplage Chemins d’Euler et de Hamilton Problèmes NP-complets 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

3 Présentation générale
Bibliographie Tout ce qui contient graphes, graphs. Internet souvent, c’est très simplifié ou très dense, et pas toujours correct. Mes choix Introduction to Algorithms, Leiserson et al. Algorithms, Sedgewick. Fundamental Algorithms, Knuth. Graphes, Berge. Wikipedia. 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

4 Présentation générale
L E S D E F I N I T I O N S D E B A S E 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

5 Présentation générale
Définitions de base Il y a des sommets ! (vertex, vertices) Il y a des arêtes ( bi-directionelles ) ! (edge) Il y a des arcs ( mono-directionnels ) ! (arc) 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

6 Présentation générale
Définitions de base Formellement : Il y a l’ensemble V des sommets. Il y en a | V | . La complexité est fonction du nombre de sommets. Il y a l’ensemble E des arcs et arêtes. C’est une partie du produit cartésien V x V . ( a , b ) e E signifie que l’arc du sommet a vers le sommet b existe. 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

7 Présentation générale
Définitions de base Formellement : Il y a l’ensemble V des sommets. Il y en a | V | . La complexité est fonction du nombre de sommets. Il y a l’ensemble E des arcs et arêtes. C’est une partie du produit cartésien V x V . E peut être réflexif , irréflexif ou ni l’un, ni l’autre. E peut être symétrique , anti-symétrique ou ni - ni. Graphe non orienté ! Graphe orienté ! 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

8 Présentation générale
Définitions de base Formellement : Il y a l’ensemble V des sommets. Il y en a | V | . La complexité est fonction du nombre de sommets. Il y a l’ensemble E des arcs et arêtes. C’est une partie du produit cartésien V x V . E peut être réflexif , irréflexif ou ni l’un, ni l’autre. E peut être symétrique , anti-symétrique ou ni - ni. E peut être transitif , ou non-transitif . 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

9 Présentation générale
Définitions de base Un graphe G est défini comme G = ( V , E ) où  V est un ensemble de sommets et  E  un ensemble d’arcs entre ces sommets. Il y a des multi-graphes qui sont correspondent au cas où E est un multi-ensemble (plusieurs arêtes et/ou arcs entre deux sommets). Il y a des graphes pondérés qui correspondent au fait l’on attache des poids aux arcs ou arêtes (entiers par exemple). 12 25 15 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

10 Présentation générale
Définitions de base Sous-graphe G’ d’un graphe G : Le graphe G’ = ( V’ , E’ ) est un sous-graphe du graphe G = ( V , E ) , si : V’ V E’ E V’ x V’ U Les sommets de G’ sont parmi ceux de G . U v Les arcs et arêtes de G’ sont parmi ceux et celles de G et se limitent aux sommets de G’ . 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

11 Présentation générale
Définitions de base 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

12 Présentation générale
R E P R E S E N T A T I O N D E S G R A P H E S 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

13 Présentation générale
Représentation des graphes Représentation des données : Nous indexons (numérotons) les sommets. Nous représentons les arcs et les arêtes. Nous obtenons une matrice M de taille n x n qui comporte des valeurs binaires. M ( a , b ) est vrai si et seulement si l’arc ( a , b ) existe ! 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

14 Présentation générale
Représentation des graphes 1 2 3 4 5 6 VERS 1 2 L’existence ou non de l’arc ( 2 , 5 ) ! ! ! 3 4 5 4 6 1 DEPUIS 6 2 3 5 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

15 Présentation générale
Représentation des graphes 1 2 3 4 5 6 4 Un tableau de listes ! 1 2 3 4 5 6 F F F V F F F F F V F F 4 F F F F V F 5 V V V F F F 1 2 3 F F V F F F 3 F F V F F V 3 6 Parfois, le graphe est peu dense ! Nous mémorisons juste les indices des colonnes différentes de Faux ! Il faut ( | V | + | E | ) * log( | V | ) bits ! 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

16 Présentation générale
Représentation des graphes 1 2 3 4 5 6 Les voisins d’un sommet « u » : Les voisins sortants : V+ ( u ) Les voisins entrants : V- ( u ) 1 2 3 4 5 6 F F F V F F F F F V F F F F F F V F V V V F F F F F V F F F V+ ( 4 ) = { 1 , 2 , 3 } F F V F F V V- ( 3 ) = { 4 , 5 , 6 } Si le graphe est symétrique : V ( u ) = V+ ( u ) = V- ( u ) V+ ( u ) = { v e V | ( u , v ) e E } V- ( u ) = { v e V | ( v , u ) e E } 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

17 Présentation générale
Représentation des graphes 1 2 3 4 5 6 Le degré d’un sommet « u » : Le degré sortant : D+ ( u ) Le degré entrant : D- ( u ) 1 2 3 4 5 6 F F F V F F F F F V F F F F F F V F V V V F F F F F V F F F Le degré d’un graphe G = ( V , E ) : D( G ) = max { D ( u ) } F F V F F V u e V Si le graphe est symétrique : D ( u ) = D+ ( u ) = D- ( u ) D+ ( u ) = | V+ ( u ) | D- ( u ) = | V- ( u ) | 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

18 Présentation générale
L E S C H E M I N S 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

19 Présentation générale
Les chemins Les chemins : Un chemin de longueur n , de u vers v est : telle que u = w et v = w ( w , w ) est une arête ou un arc, pour tout i . Le chemin est orienté s’il comporte des arcs, non orienté s’il est fait d’arêtes uniquement. Le chemin ( u ; u ) , de u à lui-même, existe toujours ! ( w , , w ) 1 n+1 1 n+1 i i+1 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

20 Présentation générale
Les chemins Notations et propriétés sur les chemins : Nous noterons ( c’est non standard ) : ( u , v ) l’arête ou l’arc, i.e. le chemin de longueur 1 . ( u ; v ) le chemin de longueur quelconque. Pour tout chemin non orienté ( u ; v ) du graphe G , nous pouvons construire le chemin ( v ; u ) dans G . 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

21 Présentation générale
Les chemins Preuve ( induction sur la longueur du chemin ) : Si u et v sont voisins, le chemin ( u ; v ) est en fait l’arête ( u , v ) et le chemin ( v ; u ) sera l’arête ( v , u ) . Si u et v ne sont pas voisins, le chemin ( u ; v ) est une arête ( u , t ) suivie de ( t ; v ) par induction sur la longueur, le chemin ( v ; t ) existe, ( v ; u ) est la concaténation de ( v ; t ) et l’arête ( t , u ) . 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

22 Présentation générale
Les chemins Notations et propriétés sur les chemins : Nous noterons ( c’est non standard ) : ( u , v ) l’arête ou l’arc, i.e. le chemin de longueur 1 . ( u ; v ) le chemin de longueur quelconque. Pour tout chemin non orienté ( u ; v ) du graphe G , nous pouvons construire le chemin ( v ; u ) dans G . Dans un graphe G , l’existence du chemin orienté ( u ; v ) n’implique pas l’existence d’un chemin de retour ( v ; u ) . u v 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

23 Présentation générale
Les chemins Cycles et circuits : Un cycle est un chemin non orienté ( u ; v ) pour lequel u coïncide avec v . Un circuit est un chemin orienté ( w ; t ) pour lequel w coïncide avec t . u = v w = t 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

24 Présentation générale
Les chemins Chemins simples : Un chemin ( u ; v ) , avec u différent de v , est simple si et seulement si aucun sommet n’est répété dans la séquence : ( u , , v ) Chemin simple ( u ; v ) u w v Chemin non simple ( w ; t ) 13 février 2008 Cours de graphes 1 - Intranet t Cours d'algorithmique

25 Présentation générale
L E M M E D E K Ö N I G 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

26 Présentation générale
Lemme de König Lemme de König : De tout chemin non simple ( u ; v ) , nous pouvons extraire un chemin de u vers v qui est simple et plus court que le chemin initial. ( u , , w , , w , t , , v ) t u w v 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

27 Présentation générale
Lemme de König Lemme de König : De tout chemin non simple ( u ; v ) , nous pouvons extraire un chemin de u vers v qui est simple et plus court que le chemin initial. ( u , , w , , w , t , , v ) t u w v 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

28 Présentation générale
Lemme de König Tout cycle ou circuit est soit, un cycle ou circuit élémentaire, c’est-à-dire devient un chemin simple si l’on en enlève une arête ou un arc, soit, une réunion de cycles et/ou circuits élémentaires. Réunion de cycles élémentaires : Cycle élémentaire : 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

29 Présentation générale
L E S C O M P O S A N T E S C O N N E X E S 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

30 Présentation générale
Les composantes connexes 1 2 3 4 5 6 La composante connexe de u : La composante sortante : C+ ( u ) La composante entrante : C- ( u ) 1 2 3 4 5 6 F F F V F F F F F V F F F F F F V F V V V F F F C+ ( 4 ) = { 1 , 2 , 3 , 4 , 5 } F F V F F F C- ( 4 ) = { 1 , 2 , 4 } 4 F F V F F V 1 C+ ( u ) = { v e V | ( u ; v ) existe } C- ( u ) = { v e V | ( v ; u ) existe } 6 2 Si G est symétrique : C ( u ) = C+ ( u ) = C- ( u ) 3 5 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

31 Présentation générale
Les composantes connexes Pour un graphe non orienté : La composante connexe de u est : réflexive, vous pouvez rester où vous êtes ! symétrique, les chemins de retour existent ! transitive, vous pouvez concaténer des chemins ! Une composante connexe est une classe d’équivalence ! Un graphe non orienté est partitionné en ses classes d’équivalence ! 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

32 Présentation générale
Les composantes connexes 1 2 3 4 5 6 Nous partons d’une relation symétrique ! 1 2 3 4 5 6 V F F V F F F V F V F F Nous fermons réflexivement ! F F V F V F V V F V F F F F V F V F 4 F F F F F V 1 6 La fermeture réflexive d’une relation R est la plus petite relation réflexive qui contienne R . 2 3 5 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

33 Présentation générale
Les composantes connexes 1 2 3 4 5 6 Nous partons d’une relation symétrique ! 1 2 3 4 5 6 V V F V F F V V F V F F Nous fermons réflexivement ! F F V F V F Nous fermons transitivement ! V V F V F F F F V F V F 4 F F F F F V 1 6 La fermeture transitive d’une relation R est la plus petite relation transitive qui contienne R . 2 3 5 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

34 Présentation générale
Les composantes connexes 1 2 3 4 5 6 Nous partons d’une relation symétrique ! 1 2 3 4 5 6 V V V F F F V V V F F F Nous fermons réflexivement ! V V V F F F Nous fermons transitivement ! F F F V V F F F F V V F 3 F F F F F V 1 6 Si nous renumérotons ! 2 4 5 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

35 Présentation générale
Les composantes connexes Un principe de décomposition : Souvent, le traitement appliqué à un graphe non connexe consiste à appliquer ce même traitement indépendamment sur chacune des composantes connexes ! Dans ce cas, on ne perd rien en supposant G connexe ! 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

36 Présentation générale
P O U R U N G R A P H E O R I E N T E 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

37 Présentation générale
Les composantes connexes Pour un graphe orienté : Un sous-ensemble X des sommets d’un graphe orienté est fortement connexe si nous pouvons aller de n’importe quel sommet vers n’importe quel autre sommet. Proposition : Une composante est fortement connexe si et seulement si chaque sommet se trouve sur un circuit. Preuve : => : Si ( u ; v ) existe, alors ( v ; u ) existe et ( u ; v ; u ) . <= : Soit ( u ; v ) de la forme ( u ; w ; v ). Pour w bien choisi, le circuit ( w ; v ; w ) existe ! Nous recommençons le raisonnement pour ( u ; w ). u w v 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

38 Présentation générale
Les composantes connexes Pour un graphe orienté : Un graphe orienté est quasi-fortement connexe s’il existe un sommet depuis lequel nous pouvons atteindre tous les autres sommets. Un tel sommet sera appelé racine. Composante fortement connexe ! 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

39 Présentation générale
D I S T A N C E S , D I A M E T R E , . . . 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

40 Présentation générale
Distances, diamètre, Distances et diamètre : La distance d ( u , v )  entre un sommet u et un sommet v est : la longueur du plus court chemin (forcément simple) de u vers v , si celui-ci existe, infini, sinon. Le diamètre d’un graphe connexe est la distance entre ses sommets les plus éloignés : D ( G ) = max { d ( u , v ) } u , v e V 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

41 Présentation générale
Distances, diamètre, Ecarts, centre et diamètre : L’écart e ( u ) d’un sommet u d’un graphe connexe est : la distance vers le sommet v le plus loin de u : e ( u ) = max { d ( u , v ) } Un sommet u est au centre de G si e ( u ) = min { e ( v ) } D ( G ) = max { e ( v ) } v e V v e V v e V 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

42 Présentation générale
Distances, diamètre, Lemme des plus courts chemins : Si le plus court chemin de u vers v passe par w , alors sa partie préfixe de u vers w est aussi le plus court chemin de u vers w . Le plus court chemin de u à v ! u w v Le plus court chemin de u à w ! Le raisonnement est par l’absurde : S’il y avait plus court pour aller de u à w , il y aurait aussi plus court pour aller de u à v ! 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

43 Présentation générale
Distances, diamètre, Parfois, on parle du plus court chemin et on pense au chemin le plus léger ! Poids d’un chemin : Dans un graphe pondéré, le poids d’un chemin est la somme des poids de ses arcs et arêtes. Nous pouvons alors, de manière évidente, définir le chemin le plus léger de u vers v . Le chemin le plus léger (poids) ne coïncide pas forcément avec le chemin le plus court (nombre d’arcs et arêtes). Le plus court chemin correspond au chemin le plus léger avec des poids qui valent tous unité. Les poids ne vérifient pas forcément l’inégalité triangulaire ! 25 12 13 février 2008 Cours de graphes 1 - Intranet 10 Cours d'algorithmique

44 Présentation générale
N O S P R E M I E R S A L G O R I T H M E S 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

45 Présentation générale
Connexité & plus courts chemins Sur un graphe non orienté, nous allons calculer : les composantes connexes ! Sur une composante connexe, nous allons calculer : les plus courts chemins ! Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

46 Présentation générale
Connexité & plus courts chemins Nous utilisons trois algorithmes : un algorithme par vague, c’est un parcours en largeur, un algorithme par multiplication de matrices, l’algorithme de programmation dynamique Floyd-Warshall. Pour chacun d’entre eux, il s’agit de savoir s’il arrive à résoudre le problème en question et quelle est la complexité du calcul ? 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

47 Présentation générale
L A V A G U E 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

48 Présentation générale
Connexité & plus courts chemins L’algorithme par vague : Nous choisissons un sommet sec et le mouillons, nous mouillons ses voisins, nous mouillons les voisins des voisins , . . . Attention, dans un graphe il peut y avoir des cycles ! ! ! Il faut éviter de tourner en rond ! Ici, nous ne faisons rien pour un sommet déjà mouillé ! A l’issu de ce calcul nous avons déterminé une composante connexe et nous recommençons sur l’éventuel reste du graphe ! Complexité : Q ( | E | ) = O ( | V |^2 ) Chaque arête est visitée une et une seule fois ! 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

49 Présentation générale
Connexité & plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Connexité Plus courts Plus légers 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

50 Présentation générale
L A M U L T I P L I C A T I O N D E M A T R I C E S 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

51 Présentation générale
Connexité & plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des 0 et des 1 , nous la fermons réflexivement (des 1 sur la diagonale), nous effectuons le calcul suivant : M * M’ ( i , j ) = max M ( i , k ) * M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> Propriété : M^( 2 * i ) = M^i * M^i comporte tous les chemins de longueur au plus 2 * i . Il suffit de calculer M^k avec k >= | V | - 1 = n - 1 (le plus long chemin possible et donc tous les chemins) ! Il suffit de O ( log( | V | ) ) élévations au carré ! k 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

52 Présentation générale
Connexité & plus courts chemins Preuve de la propriété : La matrice M fermée réflexivement contient tous les chemins de longueur 0 ou 1. Hypothèse d’induction : M^i contient tous les chemins de longueur au plus i . M^( 2 * i ) ( u , v ) = 1  max_k M^i ( u , k ) * M^i ( k , v ) = 1  $ w tel que M^i ( u , w ) * M^i ( w , v ) = 1  M^i ( u , w ) = 1 et M^i ( w , v ) = 1  $ des chemins ( u ; w ) et ( w ; v ) , de longueur au plus i .  $ un chemin ( u ; v ) de longueur au plus 2 * i . En effet, il suffit de prendre le chemin ( u ; w ; v ) . 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

53 Présentation générale
Connexité & plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Connexité Beaucoup plus cher que la vague ! ! ! Plus courts Plus légers 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

54 Présentation générale
L ’ A L G O R I T H M E D E F L O Y D - W A R S H A L L 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

55 Présentation générale
Connexité & plus courts chemins La multiplication recalcule de façon répétée les chemins courts. Si M^i ( u , v ) = 1 , alors M^( 2 * i ) ( u , v ) = max_k M^i ( u , k ) * M^i ( k , v ) = M^i ( u , u ) * M^i ( u , v ) = M^i ( u , v ) = 1 Floyd-Warshall numérote les sommets de 1 à n et : à l’étape (1) , ne calcule que les chemins dont les intermédiaires sont dans l’ensemble { 1 } , à l’étape (2) , ne calcule que les chemins dont les intermédiaires sont dans l’ensemble { 1 , 2 } , en ajoutant les chemins qui passent par le sommet 2 , 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

56 Présentation générale
L ’ A L G O R I T H M E 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

57 Présentation générale
Connexité & plus courts chemins (k-1) M est donnée, elle comporte tous les chemins avec des intermédiaires parmi { 1 , , k-1 } . M ( u , v ) est un chemin de u vers v avec des intermédiaires parmi { 1 , , k } . Soit le sommet k figure dans ce chemin, soit il ne le fait pas. (k) e / k e / k u k v } (k) (k-1) } M ( u , v ) = M ( u , v ) Une opération de maximisation ! (k-1) (k-1) M ( u , k ) M ( u , k ) 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

58 Présentation générale
Connexité & plus courts chemins (0) M est la matrice d’adjacence, fermée réflexivement. Elle comporte des 0 et des 1 . M ( u , v ) = max ( , ) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) * M ( k , v ) Le chemin de u vers v existe déjà au niveau k-1 ! Le chemin de u vers v est nouveau et passe par le sommet k ! On ne recalcule rien ! 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

59 Présentation générale
Connexité & plus courts chemins (0) M est la matrice d’adjacence, fermée réflexivement. Elle comporte des 0 et des 1 . M ( u , v ) = max ( , ) M est la matrice recherchée, ou n est | V | ! (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) * M ( k , v ) (n) Complexité : Q ( | V |^3 ) Pour k de 1 a | V | Pour u de 1 a | V | Pour v de 1 a | V | M_k ( u , v ) < 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique

60 Présentation générale
Connexité & plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Mieux que la multiplication, mais la vague est la plus économique ! Plus courts Plus légers 13 février 2008 Cours de graphes 1 - Intranet Cours d'algorithmique


Télécharger ppt "Présentation générale Marc Gengler"

Présentations similaires


Annonces Google