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

Initiation à Informatique Licence semestre 1

Présentations similaires


Présentation au sujet: "Initiation à Informatique Licence semestre 1"— Transcription de la présentation:

1 Initiation à Informatique Licence semestre 1

2 Plan du cours Présentation et organisation Graphes : définition Degré
Algorithme Programmes Manipulation d’images Introduction aux graphes Graphes : définition Degré Chaînes Connexité Graphes Eulériens Coloration

3 1- Présentation et organisation
Objectif et contenu Faut-il des connaissances préalables? Organisation et site web Support de cours Modalités de contrôle Comptes et tutorat

4 Objectifs et contenu Objectif : Thèmes : Organisation :
Initiation à la programmation et l'algorithmique. Thèmes : Manipulation d’images Etude d’un objet appelé graphe. Organisation : Généralités, temps de calcul Notions théorique et algorithmes Programmation : TP 4 notions abordées : Images, graphes, algorithmes, programmes, temps de calcul.

5 Faut-il des connaissances préalables?
Non prérequis Connaissance d'un langage, d'un système d'exploitation, Connaissance de la programmation, Connaissance de logiciels destinés au grand public. Prérequis Il sera nécessaire de pouvoir comprendre un raisonnement mathématique pour les preuves des théorèmes.

6 Organisation et site web
Responsable : Samuel Thibault. Site Web : Support de cours. Textes des TD, TP. Annales d’examen. Planning; 14 séances de cours intégré (1h20) 14 séances de TP (1h20) dont un TP noté. Travail individuel.

7 Modalités de contrôle des connaissances
Epreuves Durée Coeff CC (Tests) 3*20mn 0,2 1 TP noté 1h20 1 DS semaine 45 1h30 1 Examen semaine 2 0,4

8 Comptes sur machines - Tutorat
TD/TP au CREMI Bat A28 Tutorat Kiosque pour : Activation de comptes, Prise en main de l'environnement informatique, Soutien pour les cours d'informatique, Lundi-Jeudi de 12h45 à 13h45 (Rez-de-Chaussée bât. A22 en face du guichet unique) à partir de la mi-septembre.

9 2- Algorithmes Qu'est-ce qu'un algorithme?
Efficacité des algorithmes : structures de données et temps de calculs.

10 Qu'est-ce qu'un algorithme?
Un algorithme est une méthode systématique (comme une recette) pour résoudre un problème donné. Il se compose d'une suite d'opérations simples à effectuer pour résoudre un problème.

11 Qu'est-ce qu'un algorithme?
Exemple : faire n tasses de café mettre un filtre Tant que niveau_reservoir < n faire mettre une dose d’eau dans le reservoir Fin tant que nb_doses = 0 Tant que nb_doses < n faire mettre une dose de cafe dans le filtre augmenter nb_doses de 1 allumer la cafetiere

12 Qu'est-ce qu'un algorithme?
Un algorithme est une méthode systématique (comme une recette) pour résoudre un problème donné. Il se compose d'une suite d'opérations simples à effectuer pour résoudre un problème. En informatique cette méthode doit être applicable par un ordinateur.

13 Qu'est-ce qu'un algorithme?
Exemple : afficher les diviseurs de l’entier n si n > 0 alors pour tout entier i entre 1 et n faire si n est divisible par i alors afficher(i) finsi finpour

14 Importance de l'algorithmique
Pour un problème donné, il y a plusieurs algorithmes. Il est facile d'écrire des algorithmes faux ou inefficaces. Une erreur peut faire la différence entre plusieurs années et quelques minutes de calculs sur une même machine. C'est souvent une question d'utilisation de structures de données ou d'algorithmes connus dans la littérature. Une structure de données est une façon particulière d'organiser les données.

15 Représenter et organiser les données
Exemple : Construire une ville de 15 maisons en évitant aux livreurs de pizzas qui suivent les rues un trajet trop long depuis la pizzeria. Organisation 1 : Linéaire. Numéros croissants. Pizzeria au numéro 1. Organisation 2 : Embranchements. À l'ouest de la maison k, n° < k, et à l'est, n° > k. La pizzeria est au numéro 8. 8 1 3 5 7 9 11 13 15 14 12

16 Temps de calcul Dans les deux organisations, le livreur a une méthode simple pour trouver une maison en partant de la pizzeria. 8 1 3 5 7 9 11 13 15 14 12 Un rectangle blanc masque une partie du texte qui apparaît en fin de diapo

17 Temps de calcul Dans les deux organisations, le livreur a une méthode simple pour trouver une maison en partant de la pizzeria. On suppose qu'il faut une unité de temps pour passer d'une maison à une autre (en suivant une rue). Dans le cas le pire, quel est le temps mis par un livreur pour aller jusqu'à une maison depuis la pizzeria ? Un rectangle blanc masque une partie du texte qui apparaît en fin de diapo

18 Temps avec organisation 1
Temps de calcul Nombre de maisons Temps avec organisation 1 Temps avec organisation 2 15 14 3 1023 1022 9     29 n-1  ~log_2(n) Rq: une organisation en étoile avec la pizzeria au milieu permet des trajets très courts, mais choisir la bonne rue prend du temps. Un rectangle blanc masque une partie du texte qui apparaît en fin de diapo

19 Temps de calcul Le temps de calcul (ou complexité) d'un algorithme est la fonction qui à un entier n associe le nombre maximal d'instructions élémentaires que l'algorithme effectue, lorsqu‘on travaille sur des objets de taille n. En pratique, on se contente d'un ordre de grandeur. Exemples d'opérations élémentaires : additionner, soustraire, multiplier ou diviser deux nombres, tester si une valeur est égale à une autre valeur, affecter une valeur à une variable.

20 Temps de calcul Pour déterminer si un algorithme est efficace, on compte le nombre d'opérations nécessaires à effectuer dans le pire des cas et en fonction de la taille de la donnée. Le temps de calcul d'un algorithme est une évaluation du nombre d'opérations élémentaires (opérations arithmétiques) qu'il effectue sur une donnée de taille n. Exemple avec l'organisation 1 de la ville, de taille n maisons, l'algorithme naturel pour trouver une maison a une complexité O(n). avec l'organisation 2 d'une ville de taille n maisons, l'algorithme naturel pour trouver une maison a une complexité O(log_2(n)), ce qui est bien inférieur.

21 Différence entre n et log n
Pour notre livreur de pizza : Si n = 106, alors log_2  20 Il fait fois moins de déplacements si les maisons sont organisés par « embranchements ». Si n = 109, alors log_2 n  30, il fait alors fois moins de déplacements.

22 Temps de calcul : 2ème exemple
Problème : déterminer si 2 ensembles E1, E2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E1 avec chaque élément de E2. Il faudra environ n² comparaisons. 237623 5234 983 83889 9 7363 19 873 111 87321 Un rectangle blanc masque une partie du texte qui apparaît en fin de diapo

23 Temps de calcul : 2ème exemple
Problème : déterminer si 2 ensembles E1, E2 de n entiers ont une valeur commune. Algorithme 2 : Avec un structure de données adaptées, on peut résoudre le problème avec environ n*log(n) comparaisons . |E1| = |E2| Algorithme 1 Algorithme 2 n n2 n*log(n) 10 100 1000 3000 100000 500000 Un rectangle blanc masque une partie du texte qui apparaît en fin de diapo

24 Différence entre O(n2) et O(n log(n))
Sur un ordinateur exécutant une instruction élémentaire en 10-9 s. Si les ensembles E1 et E2 ont n = = 106 elts Exécuter n * log n instructions élémentaires nécessite 0,006s. Exécuter n2 instructions élémentaires nécessite 103s soit environ 16mn40s. Si les ensembles E1 et E2 ont n = = 107 éléments Exécuter n * log n instructions élémentaires nécessite 0,07s. Exécuter n2 instructions élémentaires nécessite 105s soit plus d’une journée. En informatique, on manipule parfois des ensembles énormes Google indexe plusieurs milliards de pages web, Google reçoit près de 8 milliards 640 millions de requêtes/jour.

25 Représentation graphique : Structures de données

26 Représentation graphique : Structures de données

27 Représentation graphique : Structures de données

28 3-Qu'est-ce que l'informatique?
L'informatique même pour non informaticiens. Exemples de domaines de l'informatique Challenges

29 Qu'est-ce que l'informatique?
Dans la vie quotidienne : ordinateur avec logiciels, mais aussi… En entreprise : un outil de communication et de production. À l'université : une discipline scientifique. Une partie pratique (par exemple, autour de la programmation). Une partie théorique similaire aux maths (objets abstraits). Les objets en mathématiques : nombres, relations, fonction, transformations, etc. Les objets en informatique : algorithmes, programmes, preuves, systèmes de réécriture, images numériques, graphes, etc.

30 L'informatique pour non informaticiens
Le travail d'un scientifique ou d'un ingénieur nécessite de plus en plus la manipulation de logiciels. Ces logiciels sont de plus en plus sophistiqués. Souvent, ces logiciels nécessitent de la programmation. Il faut des connaissances informatiques (algorithmique et programmation) pour programmer efficacement, maintenir les programmes.

31 Exemples de domaines en informatique
Les bases de données : internautes en 2014 +644 millions sites web en 2014. 4 milliards d’actions/ jour sur Facebook 33,9 milliards transactions VISA / an (2013) 90% des données numériques datent de moins de 2 ans. 144 milliards s / jour dans le monde Actions : Trouver rapidement un billet d'avion, un trajet, une page web,... Traçabilité des transactions en agro-alimentaire, dans le domaine financier, … Croiser les informations des corps policiers au niveau européen, … Analyser des systèmes d’informations géographiques

32 Exemples de domaines en informatique
La sécurité Transports, Médecine, Finance, Communications, Énergie, Systèmes embarqués, Y2K, bug célèbres, piratage, etc.

33 Exemples de domaines en informatique
Simulation numérique Météorologie Crash-test Conception numérique. Etc.

34 Exemples de domaines en informatique
Les logiciels Navigateurs internet Anti-virus Pare-feu ou passerelle Clients de messagerie (mail) Jeux  ...

35 Exemples de domaines en informatique
Les langages de programmation Les langages de programmation sont souvent utilisés dans des domaines spécifiques. HTML, php, javascript pour la création de pages web, SQL pour les bases de données, Java pour les applications embarquées, les serveurs, + ... C pour les systèmes d'exploitation (Windows, Unix), +... Python pour... demandez à

36 Exemples de domaines en informatique
Image et son MP3, JPEG, MPEG : codage et compression. Voix par IP, numérisation et transformation. Image 3D, jeux vidéos... Impression 3D

37 Challenges Que faire des algorithmes des années 60 ?
Que change l’informatique nomade ? Qu’implique la limitation physique des processeurs ? ??? Informatique CPBx 1ère année

38 Challenges : exemple 1977 : Console Atari 2600
Calcul parallèle (R.Namyst) 1977 : Console Atari 2600 1,19 MHz

39 La PS3 calcule des millions de fois plus vite !
Challenges : exemple Calcul parallèle (R.Namyst) 2006 : Sony PS3 Processeur Cell 3.2 GHz Processeur graphique Nvidia RSX La PS3 calcule des millions de fois plus vite ! Informatique CPBx 1ère année 39 Une trentaine d’années entre ces deux consoles… A priori, on a gagné un facteur x3000 sur la cadence du processeur

40 Un prophète 1975 Gordon Moore, co-fondateur d’Intel
« Le nombre de transistors par unité de surface double tous les 2 ans »

41 Toujours sur la surface d'un opéra...
Loi de moore Si les transistors étaient des personnes 2300 ~Opéra 134000 ~ Stade de foot 32 millions ~ Pop. de Tokyo 1,3 milliards ~ Pop. Chine Toujours sur la surface d'un opéra...

42 Challenges : exemple On ne peut plus augmenter la fréquence
La dissipation thermique et la consommation deviennent problématiques Mais avec la finesse de la gravure il y a de la place pour continuer à rajouter des circuits -> Les processeurs multicœurs Conséquences ? Pendant longtemps, l’évolution des microprocesseurs a permis d’accélérer les calculs sans effort de la part des programmeurs Aujourd’hui, le matériel demande des efforts énormes aux programmeurs (qui n’y sont pas habitués :-)

43 Challenges : exemple Une trentaine d’années entre ces deux consoles…
Calcul parallèle (R.Namyst) TITAN: 17, opérations flottantes par seconde; Installée au Oak Ridge Leadership Computing Facility (USA) Informatique CPBx 1ère année 43 Une trentaine d’années entre ces deux consoles… A priori, on a gagné un facteur x3000 sur la cadence du processeur

44 Challenges : exemple Calcul parallèle (R.Namyst)
Curie: 1, opérations flottantes par seconde. « Très Grand Centre de Calcul », Paris (TGCC) Informatique CPBx 1ère année

45 Challenges : exemple 1012 flops 1,5.1012 flops
Calcul parallèle (R.Namyst) Accélérateurs pour le calcul parallèle 1012 flops 1, flops Informatique CPBx 1ère année

46 3-Programmation Notion de programme
Quelques instructions du langage Python.

47 Qu'est-ce qu'un programme?
C'est une suite d'instructions écrites dans un langage de programmation « compréhensible » par l'ordinateur. Cela permet à l'ordinateur d'appliquer un algorithme. Dans un programme l'ordinateur effectue les instructions dans l'ordre. L'ordre des instructions est donc très important

48 Qu'est-ce qu'un programme?
Exemple : afficher les diviseurs de n Algorithme : si n > 0 alors pour tout entier i entre 1 et n faire si n est divisible par i alors afficher i finsi finpour Programme : if n > 0: for i in range(1, n+1): if n % i == 0: print (i) Rq : n % i donne le reste de la division de n par i

49 Variables et affectation
Une variable désigne un emplacement mémoire dans lequel on peut stocker (sauvegarder) une valeur. Une variable a toujours un nom. Pour changer la valeur d’une variable on utilise l’affectation représentée par le symbole = en python. Ce symbole n'a pas la même signification qu'en mathématique. Il signifie calculer la valeur à droite du symbole = et la ranger dans la variable dont le nom se trouve à gauche.

50 Variables et affectation
Exemples : i = x = 2*i i = x+2 1 1 3 ? i i i x x

51 Variables et affectation
Exercices : Que contiennent les variables x ,y et z après les instructions suivantes ? x=6 y=7 z=x z=x+y Même question : b=3 b=a+2 L’instruction i=i+1 a-t-elle un sens ? Si oui lequel ? Et i+1 = i ?

52 Division entière a = bq+r avec 0<=r<b
Le quotient entier q de deux entiers a et b positifs et le reste r sont définis par : a = bq+r avec 0<=r<b En python : Quotient entier de a par b : a//b Reste ou modulo : a%b Exemple : 19//5 donne 3 19%5 donne 4 Exercice : Comment caractériser les entiers pairs ?

53 Expression booléenne Une expression booléenne est une expression qui n’a que 2 valeurs possibles : True (Vrai) False (False) Les tests sont des expressions booléennes égalité x==y inégalité x!=y comparaison x<=y x>y etc. On peut les combiner avec des opérateurs : and, or et not

54 Expression booléenne and V F or V F V F not or and not

55 Expression booléenne x>=-5 and x<=5 vaut True si x[-5,5]
Exercices : Ecrire une expression booléenne qui vaut True si x[-5,5]. Ecrire une expression booléenne qui vaut True si i est un nombre pair inférieur à 6. On considère deux variables n et p. Ecrire une expression booléenne qui vaut True si n divise p. Evaluation paresseuse

56 Notion de fonction paramètre Définition Utilisations argument
En mathématique une fonction f : x  2x2 + 1 décrit la façon de calculer f(x) à partir de la donnée x En Python : def f(x) : return 2 * x * x + 1 # exemples d’appel de la fonction y = 2 * f(2) print (f(5)) paramètre Définition argument Utilisations Analogie machine café. Fonctions à plusieurs variables

57 Notion de fonction Définition f Analogie machine café
En Python : def f(x) : return 2 * x * x + 1 Définition f x 2*x*x+1 f(x) Analogie machine café

58 Instruction conditionnelle if…: else :…
Instruction conditionnelle si… alors… sinon… Test Faux Vrai Instructions_V Instructions_F

59 Instruction conditionnelle if…: else :…
Instruction conditionnelle si… alors… sinon… if Test : Instructions_V else : Instructions_F

60 Instruction conditionnelle if…: else :…
Instruction conditionnelle si… alors… sinon… Exemple i=10 x=6 if i > x : print ("test VRAI" ) print (i, "est supérieur à", x) else : print ("test FAUX") print (i, "n'est pas supérieur à", x) Attention à l’indentation !

61 Instruction conditionnelle if…: elif…: else :…
On peut « imbriquer » les if… :else… Vrai Faux Test1 Test2 Faux Vrai Instructions_F1V2 Instructions_F1F2 Instructions_V1

62 Instruction conditionnelle if…: elif…: else :…
On peut « imbriquer » les if… :else… if x<0 : print ("negatif") else : if x%2 ==0: print ("pair"  )   print ("impair" ) if x<0 : print( "negatif" )   elif x%2 ==0: print( "pair " ) else : print( "impair" )

63 Listes d’éléments On peut manipuler des listes d’éléments : Exemples :
[3,7,4,1] [‘‘d’’,‘‘f’’,‘‘e’’] 6 in [3,7,4,1] => False 4 in [3,7,4,1] => True La fonction len retourne la taille de la liste. Len([3,7,4,1]) => 4

64 Listes d’éléments La fonction range permet de construire des listes d’éléments consécutifs # liste des entiers [a,b[ par pas de c range(a,b,c): Debut Fin Pas Remarque: range(a,b)  range(a,b,1) #c= range(b)  range(0,b,1) #a=0,c=1 Exemple : list ( range(1,9,1)) =>[1,2,3,4,5,6,7,8] list ( range(1, 9, 2)) => [1,3,5,7]

65 Répétition : for … in … : Répétition : pour… parcourant la liste ….
La boucle for permet de parcourir les éléments d’une liste # parcourir et afficher les entiers de 0 à for i in range(10) : print (i) On peut imbriquer les boucles : for i in range(10): for j in range(3): print(i,j)

66 Répétition : while… : Ou : while i > 0 : i = i – 1 print (i)
Répétition : tant que … faire… i=10 while i > 0 : print (i) i = i - 1 Ou : while i > 0 : i = i – 1 print (i) Attention à l’ordre des instructions !

67 Quelques pièges à éviter !
Affichage ou sortie (print ou return) Position du return (dans la boucle ou après la boucle) def f(x): for i in range(x): print (i) Quel sera le résultat de : f, g et h pour x=3 ? def g(x): for i in range(x): return (i) def h(x): for i in range(x): print (i) return (i)

68 Images Numériques Quelques notions

69 Qu’est-ce qu’une image numérique ?
Une matrice de n*m Pixels (picture element) m

70 Qu’est-ce qu’une image numérique ?
Une image en informatique est un tableau à 2 dimensions de points associés à une couleur. On appelle ces points des Pixels (picture elements) Les coordonnées (x,y) d’un pixel expriment sa position dans le repère de l’image. longueur (0,0) (longueur-1,0) hauteur (0,hauteur-1) (longueur-1,hauteur-1)

71 Qu’est-ce qu’une image numérique ?
Ecran Mémoire 1 bit / pixel Bit-map

72 Qu’est-ce qu’une image numérique ?
Ecran Mémoire

73 Qu’est-ce qu’une image numérique ?
Bit-map : quelques exemples

74 Qu’est-ce qu’une image numérique ?
Bit-map : quelques exemples

75 Qu’est-ce qu’une image numérique ?

76 Qu’est-ce qu’une image numérique ?
Mémoire 1 octet / pixel 256 niveaux de gris

77 Qu’est-ce qu’une image numérique ?
24 - plans Mémoire 3 octets / pixel 16 Millions de Couleurs. Vraies couleurs

78 Qu’est-ce qu’une image numérique ?
A chaque pixel est associée une couleur RGB (par exemple) : R : Red G : Green B : Blue Chaque canal est codé par une valeur entière entre 0 et 255. Exemple : (0,0,0) : noir (255,255,255) : blanc (255,0,0) : rouge

79 Qu’est-ce qu’une image numérique ?
Cyan Axe de gris Blanc Magenta Bleu Jaune Noir (0,0,0) Vert Rouge

80 Qu’est-ce qu’une image numérique ?

81 Quantification des couleurs : RGB vs NGris
NGris = *R *G *B Les coefficients sont issus de la sensibilité de l’œil humain Les niveaux de gris (NGris) sont invariants par cette transformation. Exemple : Si R = G = B = x dans [0, 255] alors NGris = ( ) x = x

82 Graphes non orientés = Graphes Dans la suite du cours

83 Exemple de graphe : les cousins
Ensemble : toutes les personnes assistant à un repas de Noël. Relation : l'ensemble des couples de personnes (p1,p2) tels que p1 est un cousin de p2 (relation symétrique). Représentation graphique (relation symétrique, graphe non orienté) Jacques Isabelle Jean Luc Anne Olivier Marie Pierre

84 Exemple de graphe : molécule
Ensemble : les atomes de la molécule de caféine. Relation : l'ensemble des couples d'atomes partageant au moins un électron (liaison covalente, relation symétrique)

85 Changement d’échelle : Internet

86 Modélisation de problèmes par des graphes
Les graphes sont des objets permettant de représenter plusieurs situations de la vie courante. Des problèmes de la vie courante se traduisent en questions à résoudre sur les graphes. Le développement d'algorithmes sur les graphes permet donc de répondre à des problèmes concrets et pratiques. Cela permet aussi de reléguer la résolution de ces problèmes à des systèmes informatisés.

87 Exemple : Organisation d'examens
Des étudiants passent des examens de Maths (M), Informatique (I), Chimie (C), Physique (P), Anglais (A) et Sport (S) de 2h. Des étudiants passent M, I, C, d'autres C, P, A et d'autres A, S, P Question : Quel est le temps le plus court pour organiser les examens?

88 Exemple : Organisation d'examens
On fait un graphe avec comme sommets M,I,C,P,S,A. Si un étudiant doit passer deux des examens, les sommets correspondants sont incompatibles: les épreuves ne peuvent avoir lieu en même temps. On forme le graphe en reliant 2 sommets s'ils sont incompatibles. 1. Dessiner le graphe.

89 Exemple : Organisation d'examens
On cherche à attribuer à chaque examen un créneau horaire. On colorie des sommets adjacents avec des couleurs différentes. On souhaite utiliser un nombre minimum de couleurs ( de créneaux). 16h 18h 8h 10h 12h 14h 2.1 Colorier le graphe solution 2.2 Quel est le temps le plus court pour organiser les examens ?

90 Organisation d'examens
2 sommets sont reliés si (au moins) un étudiant passe les deux examens. Chaque couleur représente un créneau différent. I S Solution : Ici 3 couleurs sont nécessaires  on peut organiser tout en 3 x 2h C P M A

91 Organisation d'examens
2 sommets sont reliés si (au moins) un étudiant passe les deux examens. Chaque couleur représente un créneau différent.

92 Coloration de carte géographique
1852 Guthrie colorie la carte des cantons anglais avec 4 couleurs sans que 2 cantons adjacents n'aient la même couleur. 4 couleurs suffisent-elles pour colorier n'importe quelle carte? 1976 : Oui (Appel & Haken). Résultat obtenu en partie par ordinateur. Carte géograhique ~> graphe. Les sommets représentent les pays, et 2 sommets sont reliés par une arête si les pays correspondants partagent une frontière. But : montrer qu'on peut colorier le graphe avec 4 couleurs, sans que 2 sommets adjacents n'aient la même couleur.

93 Coloration de carte géographique

94 Coloration de carte géographique
Solution

95 Coloration de graphes Partant d'un graphe quelconque (ne représentant pas une carte), on peut avoir besoin de plus de 4 couleurs. Tester si on peut colorier avec seulement 3 couleurs est difficile. Pour ce dernier problème, trouver un algorithme avec une complexité polynomiale, ou prouver qu'un tel algorithme n'existe pas est équivalent à l'un des problèmes ouverts les plus difficiles, sélectionné par le Clay Mathematical Institute ( $).

96 Problèmes de parcours Les graphes permettent de modéliser des voies de communication : les sommets représentent des villes, les arêtes représentent des routes. On peut associer à chaque arête d'un tel graphe un nombre représentant la distance entre les deux sommets reliés. Deux questions naturelles Peut-on trouver un algorithme efficace pour calculer un trajet le plus court possible entre deux villes données? Peut-on trouver un algorithme efficace pour calculer un trajet le plus court possible reliant toutes les villes? Réponses Oui pour le 1er problème, (il y a des algorithmes efficaces). ? ? pour le 2ème, sélectionné par le Clay Math Institute (1 M $).

97 Graphe : programmation Python
from bibV3 import * #Mes fonctions sur les graphes from graphV3 import * #Ensemble de graphes bibV3.py Fonctions manipulation graphes graphV3.py

98 Graphe : programmation Python
from bibV3 import * Mes fonctions sur les graphes

99 Graphe : programmation Python
Sommet est défini par : Son Nom ou étiquette : 'Bordeaux' Sa couleur : 'white' Son état : marqué ou non-marqué : True ou False sommetNom(G, etiquette) Retourne le sommet de G désigné par son étiquette >>> sommetNom(tgv2005,'Bordeaux') <sommet: 'Bordeaux', 'white', False>

100 Graphe : programmation Python
>>> print(tgv2005) <graphe: 'tgv2005'> >>> Bordeaux Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> Bordeaux NameError: name 'Bordeaux' is not defined >>> listeSommets(tgv2005) [<sommet: 'Lille', 'white', False>, <sommet: 'Paris', 'white', False>, <sommet: 'Nantes', 'white', False>, <sommet: 'Lyon', 'white', False>, <sommet: 'Bordeaux', 'white', False>, … ]

101 Graphe : programmation Python
>>> maVille = sommetNom(tgv2005,'Bordeaux') >>> maVille <sommet: 'Bordeaux', 'white', False> listeSommets(G) Retourne la liste des sommets de G nbSommets(G) Retourne le nombre de sommets de G colorierSommet(s,c) Colorie le sommet s avec la couleur c couleurSommet(s) Retourne la couleur du sommet s dessiner(G) Dessine le graphe G

102 Graphe : programmation Python
Attention : Respecter les noms des fonctions >>>dessine(tgv2005) … dessine(tgv2005) NameError: name 'dessine' is not defined Passer aux fonctions les arguments attendus >>> couleurSommet(tgv2005) … graphV3.ErreurParametre: <graphe: 'tgv2005'> n'est pas un sommet

103 Graphe Voisins Degré

104 Graphe : Sommets Voisins
Deux sommets s et t sont appelés voisins s’il existe une arête a ayant s et t comme extrémité. On dit que l’arête a est incidente à chacun des sommets s et t Exemple : A et B sont voisins. A et C sont voisins. Il peut exister plusieurs arêtes entre 2 sommets : A et B (arête multiple) Un sommet peut être voisin de lui-même : B ou D (boucle) Un sommet peut aussi être voisin de lui-même : on dit que l’arête est une boucle

105 Graphe : Sommets Voisins
listeVoisins(s) Retourne la liste des voisins de s >>> listeSommets(fig22) [<sommet: 'A', 'white', False>, <sommet: 'B', 'white', False>, <sommet: 'C', 'white', False>, <sommet: 'D', 'white', False>] >>> MonA= sommetNom(fig22, 'A') >>> MonA <sommet: 'A', 'white', False> >>> listeVoisins(MonA) [<sommet: 'B', 'white', False>, <sommet: 'B', 'white', False>, <sommet: 'C', 'white', False>]

106 Graphe : Sommets Voisins
listeVoisins(s) Retourne la liste des voisins de s >>>listeVoisins(sommetNom(fig22,'B')) [<sommet: 'A', 'white', False>, <sommet: 'A', 'white', False>, <sommet: 'B', 'white', False>, <sommet: 'B', 'white', False>]

107 Graphe : degré Le degré d’un sommet s est le nombre d’incidences d’arêtes C’est aussi le nombre brins issus de s lorsqu’on regarde le dessin d’un graphe. degre(s) Retourne le degré de s >>> degre(monA) 3 >>> degre(sommetNom(fig22,’B’) 4 #jamais d’accent dans le nom #d’une fonction

108 Graphe : degré listeVoisins(s) Retourne la liste des voisins de s
degre(s) Retourne le degré de s qui est aussi la taille de la liste précédente. Utilisation : >>>for v in listeVoisins(monA): print(v)

109 Graphe : sommets, voisins
Utilisation : Tous les sommets d’un graphe. >>>for s in listeSommets(fig22): print(s) <sommet: 'A', 'white', False> <sommet: 'B', 'white', False> <sommet: 'C', 'white', False> <sommet: 'D', 'white', False> Tous les voisins de tous les sommets d’un graphe. >>>for s in listeSommets(G): for v in listeVoisins(s): …instructions…

110 Graphe Simple Définition : Un graphe est dit simple s’il n’a ni boucle ni arête multiple. Dans un graphe simple les extrémités d’une arête sont toujours distinctes et il existe au plus une arête qui relie 2 sommets s et t distincts. Dans un graphe simple la liste des voisins d’un sommet s ne comporte jamais de répétition. Contre exemple : fig22 n’est pas simple

111 Exercice Voici la liste des incompatibilités de six produits chimiques : p1 est incompatible avec p2 et p4; p2 est incompatible avec p1,p3 et p5; p3 est incompatible avec p2 et p4; p4 est incompatible avec p1 et p3; p5 est incompatible avec p2 et p6; p6 est incompatible avec p5. Dessinez le graphe modélisant ces incompatibilités. Quel est le nombre minimum de wagons nécessaires au transport de ces produits ? Informatique CPBx 1ère année

112 Exercice Démontrez que dans un groupe de personnes il y a au moins 2 personnes qui ont le même nombre d’amis présents. Informatique CPBx 1ère année

113 Exercice Pour tous les sommets du graphe G faire…
for s in listeSommets(G): Existe-t-il un sommet de G qui… if s: « sortie » Pour tous les voisins d’un sommet s faire : for v in listeVoisins(s): Double boucle imbriquée : Informatique CPBx 1ère année

114 Exercice Pour tous les sommets du graphe G faire… def mystere1 (G, c): for s in listeSommets (G): colorierSommet (s, c) Existe-t-il un sommet de G qui… def mystere2 (G, c): if couleurSommet (s) == c: return True return False Informatique CPBx 1ère année

115 Chaines et Connexité Chaînes dans un graphe Cycle dans un graphe

116 La notion de chaîne Il est souvent nécessaire de savoir si l'on peut aller d'un sommet à un autre en suivant des arêtes. Exemple d'utilité : Est-il possible de prendre le train pour aller De Bordeaux à Rome? De Bordeaux à Oslo? De Bordeaux à Reykjavik? La notion de chaîne exprime cette idée. On peut citer aussi d’autres exemples. Parmi les membres d’une assemblée, ont-ils tous eu l’occasion de déjeuner l’un avec l’autre à un moment ou à un autre (détection de réseau d’influence dans les instances gouvernantes, etc.) ?

117 Définition de chaîne C = s0, a1, s1, a2, s2 … , an, sn
Une chaîne dans un graphe est une suite alternée de n + 1 sommets et n arêtes : les extrémités d’une arête ai sont les sommets si-1 et si. On dit alors que C relie s0 à sn ou encore que C est un chemin entre s0 à sn Remarques : Si n = 0, on obtient une chaîne sans arête C = s0. Pour définir une chaîne, se donner seulement la suite des arêtes, ou seulement la suite des sommets ne suffit pas (pourquoi ?). C = s0, a1, s1, a2, s2 … , an, sn

118 Définition d’un cycle Un cycle est une chaîne dont les deux extrémités coïncident (s0 = sn ) On peut choisir n’importe quel sommet du cycle comme sommet de départ. Exemple :

119 Chaîne, cycle : quelques caractéristiques
Une chaîne est élémentaire si ses sommets et ses arêtes sont distincts deux à deux sauf les sommets extrémités qui peuvent être égaux. Dans ce cas il s’agit d’un cycle élémentaire La longueur d’une chaîne ou d’un cycle est le nombre n d’arêtes qui composent la chaine ou le cycle. Une chaîne peut-être réduite à un seul sommet, elle est alors de longueur nulle. Cette chaine est aussi un cycle de longueur nulle.

120 Connexité La connexité exprime la possibilité d'aller de n'importe quel sommet du graphe à n'importe quel autre sommet du graphe. Informellement, un graphe est connexe s'il est en un seul morceau. Connexe Non connexe

121 Connexe : 1 composante connexe
Connexité Un graphe G est connexe si pour tous sommets s et t de G il existe une chaîne qui relie s à t. Une composante connexe d’un graphe G est un sous ensemble maximal de sommets de G tels que deux quelconques d’entre eux soient reliés par une chaîne.. Connexe : 1 composante connexe 2 composantes connexes

122 Théorème Dans un graphe G, s'il existe une chaîne entre deux sommets s et t, alors il existe une chaîne simple entre s et t. La preuve est constructive. On prend une chaîne non simple et on en supprime les cycles pour construire une chaîne simple.

123 Preuve Soit C = s1, a1, s2, … , sk, ak, sk+1 la chaîne.
Si C est simple, le travail est terminé. Sinon, il y a deux sommets si et sj pour lesquels i < j et si = sj [où i et j sont choisis parmi les entiers de 1 à k+1]. On écrit donc : C = s1, a1,..., si, ai,..., sj, aj,... ,sk, ak , sk+1

124 Preuve On construit une chaîne C' plus courte en supprimant de C la partie ai,..., sj On obtient alors : C' = s1, a1,..., si, aj, ..., sk, ak, sk+1. Reste à vérifier que C' est bien une chaîne (cela vient de ce que si est bien une extrémité de l’arête aj). On observe que la chaîne C‘ ainsi obtenue est plus courte, ce qui permet de conclure en invoquant le principe d’induction (appliqué à la longueur des chaînes).

125 Existence d'une chaîne Vérifier s'il existe une chaîne entre un sommet s et un sommet t n'est pas forcément simple. Pour y arriver, nous allons utiliser une technique pour marquer et démarquer les sommets. Les marques laissées sur les sommets agissent en quelque sorte comme une mémoire d’un parcours effectué dans le graphe. Il peut être nécessaire de motiver le besoin d’établir une procédure pour effectuer ce travail. J’aime bien présenter aux étudiants un fichier (Tulip ?) décrivant un graphe pour qu’ils mesurent d’eux-mêmes la complexité de la tâche et surtout, la nécessité de confier ce travail à une machine ...

126 Existence d'une chaîne entre s et t
Algorithme : 1. démarquer tous les sommets 2. marquer s 3. tant que t n'est pas marqué, 3.1 chercher une arête dont un sommet extrémité est marqué et l'autre ne l'est pas 3.2 si une telle arête n'existe pas, renvoyer la valeur "faux" 3.3 sinon marquer l'extrémité non encore marquée 4. renvoyer la valeur "vrai"

127 Quelques remarques sur l’algorithme
La première phase consiste à se mettre dans un état de départ adéquat afin d’assurer le bon fonctionnement de l’algorithme. L’action « renvoyer » correspond à la réponse attendu et donné par l’algorithme, l’action « renvoyer » implique que l’algorithme est arrivé à sa conclusion et s’arête. On suppose ici que la recherche d’une arête qui satisfait la condition se fait en suivant une procédure connue. On suppose aussi que l’on a une façon facile de vérifier si un sommet est marqué et de le marquer ou de le démarquer le cas échéant. On peut ici faire un parallèle avec la primitive « return » de python et insister que tout algorithme est destiné à « renvoyer » quelque chose (même s’il ne s’agit que de signaler qu’il a fini de faire ce qu’on attendait de lui – modifier une valeur, afficher un résultat à l’écran, etc.). La procédure qui cherche une arête « bicolore » est un bon exerccie à inscrire au programme de l’un des TD? Ce qui permettrait de faire programmer cet algo quasi tel quel.

128 Quelques remarques sur l’algorithme
Resterait encore à prouver que l’algorithme fait bien le travail que l’on attend de lui. C’est-à- dire: Que l’on obtient éventuellement et à chaque fois une réponse de sa part, Et que cette réponse est bien la bonne (!). Faut-il aller jusqu’à ce niveau de détail ? Certainement pas à ce stade du cours, mais il est bien de le souligner et de le faire réaliser. On peut faire remarquer lors du calcul sur des exemples, qu’alors qu’on est tenté de travailler de manière ordonné en visitant les voisins des sommets déjà marqués par exemple, que l’algorithme ne l’exige pas du tout et qu’on peut « piocher » comme bon nous semble.

129 Existence d'une chaîne entre s et t
L’algorithme visite d’abord le voisin u de s qui se trouve au bas du graphe puis remonte vers le haut à droite. Il sélectionne ensuite voisin de u à gauche et en bas de s avant de « trouver » t. L’algorithme visite d’abord le voisin u de s qui se trouve au bas du graphe puis remonte vers le haut à droite. Il sélectionne ensuite le voisin de u à gauche et en bas de s avant de « trouver » t. On peut aussi produire une séquence où on ne trouve pas de chaîne en choisissant s parmi les quatre sommets bleus non visités au cours de cet exemple.

130 Complexité de l’algorithme
Étape 1 : Étape 2 : Étape 3.1 : Étapes 3.2 et 3.3 : Cette diapositive est destinée aux étudiants qui pourront noter la « démonstration » faite en cours/TD.

131 Complexité de l’algorithme
Étape 1 : |S| unités de temps. Étape 2 : 1 unité de temps. Étape 3.1 : au pire, pour chercher une arête « bicolore » , on passe d(s) + 1 unité de temps par sommet s, ce qui coûte: Ss (d(s) + 1) = 2|A| + |S| = O(|A| + |S|) unités de temps. Étapes 3.2 et 3.3 : 1 unité de temps. Au pire, on recommence l'étape 3 pour chaque sommet, donc |S| fois au total. La complexité de l'algorithme est donc au pire de l'ordre de |S|(|A| + |S|) [en négligeant les étapes 1, 2, 3.2, 3.3 et un facteur 2] Rq Il existe un algorithme de complexité O(|A| + |S|). L’animation est supprimé et est destinée au responsable de cours seulement (voir prochaine diapositive).

132 Graphes Eulériens

133 Les ponts de Königsberg
La ville de Königsberg (maintenant Kaliningrad en Russie) est traversée par la rivière Pregolya, et comporte deux îles. Ces îles sont reliées entre elles et aux berges par des ponts, comme sur la figure ci-dessous.

134 Promenade Peut-on : commencer une promenade sur une île ou une rive,
 terminer la promenade sur n'importe quelle autre (ou la même) île ou rive en passant exactement une fois sur chacun des ponts ? C'est le mathématicien Euler qui en 1735 a trouvé la réponse (d'où le nom "eulérien").

135 Dessiner une enveloppe
Est-ce possible de dessiner cette enveloppe sans lever le crayon, sans passer deux fois sur le même trait ?

136 C'est un problème de graphe
Dans un graphe G, est-il possible de trouver une chaîne C qui contient tous les sommets de G et toutes les arêtes de G une et une seule fois ? A B C E D a1 a2 Donner une solution pour le graphe ci-contre a3 a6 a7 a4 a5 a8

137 Définition de Chaine Eulérienne
Une chaine est Eulérienne si elle passe par chaque arête une et une seule fois et parcourt tous les sommets du graphe C = s1, a1, s2, a2,..., sm, am, sm+1 telle que : S(G) = {s1,s2,...,sm+1} , A(G) = {a1,a2,...,am} et |A(G)| = m. Si s1= sm+1 c’est un cycle eulérien.

138 Définition de Chaine Eulérienne
Remarque 1 : Dans la suite de sommets s1, s2,...,sm+1, certains sommets peuvent apparaître plusieurs fois mais tous les sommets du graphe sont présents. Remarque 2 : Dans la suite d'arêtes a1, a2,..., am, chaque arête du graphe apparaît exactement une fois.

139 Graphe Eulérien Définitions : Théorème
Un graphe est Eulérien s’il possède une chaîne eulérienne. Un sommet est pair si son degré est pair. Un sommet est impair si son degré est impair. Théorème Un graphe G est eulérien si et seulement si G est connexe et le nombre de sommets impairs de G est 0 ou 2.

140 Graphe Eulérien Théorème.
Un graphe G est Eulérien si et seulement si G est connexe et le nombre de sommets impairs de G est 0 ou 2. Dans le premier cas G possède un cycle Eulérien Dans le deuxième cas G possède une chaîne Eulérienne qui relie les deux sommets de degré impair.

141 Propriétés Théorème : Un graphe Eulérien est nécessairement connexe.
D'autres façons de dire la même chose : Tout graphe Eulérien est connexe, Si un graphe est Eulérien, alors il est connexe, G Eulérien  G connexe, Si un graphe n'est pas connexe, alors il n'est pas Eulérien, G est connexe est une condition nécessaire pour que G soit Eulérien.

142 Coloration graphe

143 Coloration Définition. Une coloration d'un graphe G en k couleurs est une fonction c : S(G)  {1,..., k} telle que si x et y sont deux sommets voisins dans G alors c(x) ≠ c(y). -Si on arrive à produire une telle fonction de coloration le graphe est dit bien colorié. - Un graphe qui a une coloration en k couleurs est dit k-coloriable. - La valeur minimum de k est son nombre chromatique.

144 Coloration 2-coloriable Non 2-coloriable

145 Graphes 2-coloriables et longueurs des cycles
Soit C = s1, a1,..., am, sm+1 une chaîne. La longueur de C est son nombre m d'arêtes. Rappel : C est un cycle si les arêtes a1,..., am sont toutes différentes, et si s1 = sm+1. (La chaîne C = s1 est donc un cycle de longueur 0). Théorème. G est 2-coloriable si et seulement si G n'a pas de cycle de longueur impaire. Un tel graphe est aussi appelé : biparti On peut partitionner l’ensemble des sommets de G en 2 sous ensembles S1 et S2 tels que les arêtes de G relient toujours un sommet de S1 à un sommet de S2

146 Graphes 2-coloriables et longueurs des cycles
Étape 1 : si G contient un cycle de longueur impaire, alors on ne peut pas le colorier avec 2 couleurs. Étape 2 : si G ne contient pas de tel cycle, alors il est 2-coloriable. Pour le montrer, on va construire un algorithme de 2-coloration de G.

147 Algorithme de 2-coloration
On essaie de colorier en deux couleurs, ou bien de trouver un cycle de longueur impaire. Quitte à travailler indépendamment sur chaque partie connexe du graphe, on peut supposer G connexe.

148 Algorithme de 2-coloration
1.  Colorier en couleur 1 un sommet arbitraire s0 2.  Tant qu'il existe un sommet s non colorié ayant au moins un voisin colorié : 2.1   si la couleur de tous les voisins coloriés de s est 1, colorier s en 2. 2.2   si la couleur de tous les voisins coloriés de s est 2, colorier s en 1. 2.3  sinon, deux voisins de s ont des couleurs différentes, et on a un cycle de longueur impaire.

149 Pourquoi l'algorithme est-il correct ?
À chaque fois qu'on colorie un sommet, on s'assure qu'il sera de couleur différente de celle de ses voisins déjà coloriés. Donc, si l'algorithme colorie tous les sommets, il produit une 2-coloration.

150 Pourquoi l'algorithme est-il correct ?
Pourquoi y a-t-il un cycle de longueur impaire si l'algorithme détecte que 2 voisins x et y du sommet à colorier s sont déjà coloriés avec 2 couleurs différentes ? On a détecté : (a)   une chaîne C1 de s0 à x de sommets coloriés, (b)   une chaîne C2 de s0 à y de sommets coloriés, (c)   des arêtes Par (a) et (b), on a une chaîne simple entre x et y, de longueur impaire car x et y ont des couleurs différentes. En fermant cette chaîne par les arêtes (c), on obtient un cycle de longueur impaire. x y s

151 Arbre Définition. Un arbre est un graphe connexe sans cycle. Exemple :
Corollaire : Tout arbre a une coloration en deux couleurs. Preuve.

152 Arbre Définition. Un arbre est un graphe connexe sans cycle. Exemple :
Corollaire. Tout arbre a une coloration en deux couleurs. Preuve. Il n'y a aucun cycle, donc pas de cycle de longueur impaire !

153 Colorier un graphe en 3 couleurs?
Question : Existe-t-il un algorithme "efficace" permettant de savoir si un graphe peut être colorié en trois couleurs? Existe-t-il un critère simple, facilement vérifiable ? Réponse : on ne sait pas faire beaucoup mieux que de tester toutes les façons possibles de colorier en trois couleurs chacun des sommets et de vérifier que c'est une coloration. Malheureusement, ce n'est pas efficace, il y a 3n colorations possibles pour un graphe à n sommets! Challenge : Il est offert une prime de 1 million de $ à qui trouvera un algorithme de complexité nc (c constante), ou bien démontrera qu'il n'existe pas d'algorithme de complexité polynomiale.


Télécharger ppt "Initiation à Informatique Licence semestre 1"

Présentations similaires


Annonces Google