MIS 102 Initiation à l Informatique

Dimension: px
Commencer à balayer dès la page:

Download "MIS 102 Initiation à l Informatique"

Transcription

1 MIS 102 Initiation à l Informatique Responsables et cours : Cyril Gavoille Catherine Pannier Matthias Robine Marc Zeitoun Planning : 6 séances de cours 5 séances de TD (2h40) 4 séances de TP (2h40) + environ 3h de travail individuel par semaine Web : Supports de cours Textes des TD, TP Annales d examens. 1/136

2 Support de cours Livre ( 10 euros) : Initiation à l Informatique par Robert Strandh et Irène Durand Non autorisé à l Examen Version html en ligne sur le site du cours Transparents 2/136

3 Modalités de contrôle des connaissances Épreuve Durée Coef. DS 1h20 0,25 TP individuel noté 1h20 0,15 Examen 1h30 0,60 3/136

4 Objectif et contenu Objectif : Thème : Contenu : Donner une idée fidèle du contenu des études supérieures en informatique Étude d un objet appelé graphe Théorie des graphes (cours) Algorithmique des graphes (TD) Programmation des algorithmes de graphes (TP) 4/136

5 Il faut activer les comptes Vous avez reçu un compte sur l ensemble des ordinateurs de l université Il faut suivre les instructions pour activer le compte au moins 24 heures (de préférence plus) avant le premier TP. 5/136

6 C est quoi l informatique? dans la vie quotidienne : ordinateur avec logiciels en entreprise : un outil de communication et de production à l université : une discipline scientifique L informatique est similaire aux mathématiques (étude d objets abstraits). L informatique n est pas une science expérimentale. 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. 6/136

7 Domaines en informatique fondamentale Exemples de domaines : Algorithmique. Les méthodes les plus efficaces pour traiter un problème donné. Structures de données. La meilleure façon d organiser un ensemble de données dans le but d y accéder rapidement. Complexité. Une façon d exprimer l efficacité d un algorithme, indépendamment d un ordinateur ou d un langage de programmation particulier. 7/136

8 Domaines en informatique fondamentale Exemples de domaines : Algorithmique. Les méthodes les plus efficaces pour traiter un problème donné. Structures de données. La meilleure façon d organiser un ensemble de données dans le but d y accéder rapidement. Complexité. Une façon d exprimer l efficacité d un algorithme, indépendamment d un ordinateur ou d un langage de programmation particulier. 7/136

9 Domaines en informatique fondamentale Exemples de domaines : Algorithmique. Les méthodes les plus efficaces pour traiter un problème donné. Structures de données. La meilleure façon d organiser un ensemble de données dans le but d y accéder rapidement. Complexité. Une façon d exprimer l efficacité d un algorithme, indépendamment d un ordinateur ou d un langage de programmation particulier. 7/136

10 Structures de données Exemple Construire une ville de 15 maisons en évitant aux facteurs qui suivent les rues un trajet trop long depuis la poste. Organisation 1 : linéaire. Numéros croissants. Poste au numéro /136

11 Structures de données Exemple Construire une ville de 15 maisons en évitant aux facteurs qui suivent les rues un trajet trop long depuis la poste. Organisation 1 : linéaire. Numéros croissants. Poste au numéro Organisation 2 : Embranchements. À l ouest de la maison k, numéros < k, et à l est, numéros > k. Poste au numéro /136

12 Complexité Dans les deux organisations, le facteur a une méthode simple pour trouver une maison en partant de la poste. On suppose qu il faut une unité de temps pour passer d une maison à une autre (par une rue). Quel est, dans le cas le pire, le temps mis par le facteur pour aller jusqu à une maison depuis la poste? Nombre de maisons Temps organisation 1 Temps organisation /136

13 Complexité Dans les deux organisations, le facteur a une méthode simple pour trouver une maison en partant de la poste. On suppose qu il faut une unité de temps pour passer d une maison à une autre (par une rue). Quel est, dans le cas le pire, le temps mis par le facteur pour aller jusqu à une maison depuis la poste? Nombre de maisons Temps organisation 1 Temps organisation /136

14 Complexité Dans les deux organisations, le facteur a une méthode simple pour trouver une maison en partant de la poste. On suppose qu il faut une unité de temps pour passer d une maison à une autre (par une rue). Quel est, dans le cas le pire, le temps mis par le facteur pour aller jusqu à une maison depuis la poste? Nombre de maisons Temps organisation 1 Temps organisation /136

15 Complexité Dans les deux organisations, le facteur a une méthode simple pour trouver une maison en partant de la poste. On suppose qu il faut une unité de temps pour passer d une maison à une autre (par une rue). Quel est, dans le cas le pire, le temps mis par le facteur pour aller jusqu à une maison depuis la poste? Nombre de maisons Temps organisation 1 Temps organisation n n 1 log 2 (n) 9/136

16 Domaines de l informatique fondamentale (suite) Exemples de domaines plus théoriques : Théorie des langages. Différentes façons de produire et reconnaître des suites de symboles. Applications : linguistique, recherche de mots dans un texte, étude du génome... Calculabilité. Déterminer pour quels problèmes il est théoriquement possible/impossible d écrire un programme. Logique. La puissance d expression de différents types de logique. 10/136

17 Domaines de l informatique fondamentale (suite) Exemples de domaines plus théoriques : Théorie des langages. Différentes façons de produire et reconnaître des suites de symboles. Applications : linguistique, recherche de mots dans un texte, étude du génome... Calculabilité. Déterminer pour quels problèmes il est théoriquement possible/impossible d écrire un programme. Logique. La puissance d expression de différents types de logique. 10/136

18 Domaines de l informatique fondamentale (suite) Exemples de domaines plus théoriques : Théorie des langages. Différentes façons de produire et reconnaître des suites de symboles. Applications : linguistique, recherche de mots dans un texte, étude du génome... Calculabilité. Déterminer pour quels problèmes il est théoriquement possible/impossible d écrire un programme. Logique. La puissance d expression de différents types de logique. 10/136

19 Domaines de l informatique pratique Exemples de domaines : Programmation. Techniques pour organiser un programme de façon qu il soit facilement modifiable. Génie Logiciel. Méthodes pour organiser le développement d un logiciel de grande taille. Informatique multimédia. Méthodes d analyse, modification et synthèse d images et de sons. Systèmes d exploitation. Techniques pour réaliser un système qui assure intégrité, sécurité et performance. Compilation. Techniques pour traduire un programme en code machine efficace. 11/136

20 Domaines de l informatique pratique Exemples de domaines : Programmation. Techniques pour organiser un programme de façon qu il soit facilement modifiable. Génie Logiciel. Méthodes pour organiser le développement d un logiciel de grande taille. Informatique multimédia. Méthodes d analyse, modification et synthèse d images et de sons. Systèmes d exploitation. Techniques pour réaliser un système qui assure intégrité, sécurité et performance. Compilation. Techniques pour traduire un programme en code machine efficace. 11/136

21 Domaines de l informatique pratique Exemples de domaines : Programmation. Techniques pour organiser un programme de façon qu il soit facilement modifiable. Génie Logiciel. Méthodes pour organiser le développement d un logiciel de grande taille. Informatique multimédia. Méthodes d analyse, modification et synthèse d images et de sons. Systèmes d exploitation. Techniques pour réaliser un système qui assure intégrité, sécurité et performance. Compilation. Techniques pour traduire un programme en code machine efficace. 11/136

22 Domaines de l informatique pratique Exemples de domaines : Programmation. Techniques pour organiser un programme de façon qu il soit facilement modifiable. Génie Logiciel. Méthodes pour organiser le développement d un logiciel de grande taille. Informatique multimédia. Méthodes d analyse, modification et synthèse d images et de sons. Systèmes d exploitation. Techniques pour réaliser un système qui assure intégrité, sécurité et performance. Compilation. Techniques pour traduire un programme en code machine efficace. 11/136

23 Domaines de l informatique pratique Exemples de domaines : Programmation. Techniques pour organiser un programme de façon qu il soit facilement modifiable. Génie Logiciel. Méthodes pour organiser le développement d un logiciel de grande taille. Informatique multimédia. Méthodes d analyse, modification et synthèse d images et de sons. Systèmes d exploitation. Techniques pour réaliser un système qui assure intégrité, sécurité et performance. Compilation. Techniques pour traduire un programme en code machine efficace. 11/136

24 Pourquoi étudier l informatique Deux sous-questions : pourquoi choisir une carrière en informatique? pourquoi étudier l informatique alors qu on a choisi une carrière différente (physique, chimie, mathématique, etc.)? 12/136

25 Pourquoi une carrière en informatique? Raisons techniques : demandes croissantes d informaticien(ne)s, produits haute technologie contenant de plus en plus de logiciels, la complexité des logiciels augmente, Raisons non techniques : contacts (souvent internationaux), voyages, mobilité (même internationale). 13/136

26 Pourquoi l informatique pour les 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, Pour programmer efficacement, il faut des connaissances en informatique (algorithmique, programmation). C est surtout nécessaire pour produire des programmes maintenables. 14/136

27 Un mot sur l importance de l algorithmique Il est facile de se tromper d algorithme. Une telle 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. 15/136

28 Un mot sur la programmation Il ne suffit pas de construire un programme qui marche. L essence de la programmation est l organisation pour faciliter la maintenance (représentant environ 80% du coût d un logiciel). Cela nécessite la construction d abstractions (sous-programmes, modules, classes, extensions syntaxiques, fonctions de première classes, etc.). Plusieurs styles de programmation adaptés aux types différents de problèmes : programmation impérative, fonctionnelle, orientée-objets, logique. Chaque type a ses idiomes de programmation qu il faut apprendre. 16/136

29 Prérequis pour études supérieures en informatique Prérequis : Il faut être bien organisé (ça s apprend), Il faut avoir une curiosité intellectuelle, car l informatique nécessite un apprentissage permanent, Non prérequis : Connaissance préalable d un langage ou d un système d exploitation, Connaissance de la programmation (c est souvent un handicap), Connaissance de logiciels destinés au grand public. 17/136

30 Choix d un langage de programmation Paramètres (langage ou implémentation du langage) : facilité d apprentissage, facilité d utilisation, rapidité d exécution, rapidité de compilation, absence de défauts dans le compilateur, pérennité (fabricant, langage, implémentation), disponibilité de programmeurs, expressivité du langage (structuration, styles), normalisation, conformité des implémentations. 18/136

31 Choix d un langage pour l enseignement facilité d apprentissage (moins important dans l industrie), utilité plus tard, facilité de programmer de façon propre et modulaire. Nous avons choisi le langage Python. 19/136

32 Caractéristiques de Python implémentation libre et gratuite existe, orienté-objets, facilité de manipulation de listes, grand nombre de bibliothèques, efficacité moyenne du code, structure de bloc indiquée par l indentation (unique pour Python). 20/136

33 Qu est-ce qu un algorithme? C est une méthode systématique (recette) pour résoudre un problème donné. Cette méthode peut donc être appliquée par un ordinateur. Par exemple : la division /136

34 Qu est qu un programme? C est une suite d instructions écrites dans un langage (langage de programmation) compréhensible par l ordinateur. Cela permet à l ordinateur d appliquer un algorithme. Par exemple en Python : i = 0 if f(i) > 0 : i = i + 1 else: i = 2 * i 23/136

35 Quelques instructions Python 1. Affectation : ranger une valeur dans une variable i = 1 x = 2 * i + 1 i = i + 1 x = x + i L ordinateur effectue les instructions dans l ordre. L ordre des instructions est donc très important. Une variable désigne un emplacement dans lequel on peut mémoriser une valeur. Une variable a un nom. En python, le 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. 25/136

36 Quelques instructions Python (suite) 2. Conditionnelle : if i > x : print "test VRAI" else : print "test FAUX" 27/136

37 Quelques instructions Python (suite) 3. Répétition : while i > 0 : print i i = i - 1 Mais aussi, for i in range(10) : print i 29/136

38 Quelques instructions Python (fin) 4. Définition de fonction : En math : Soit la fonction f : x 2x En Python : def f(x) : return 2 * x * x + 1 y = 2 * f(2) Une fonction Python peut être très compliquée. Elle peut remplacer un long programme. Il y a d autres instructions... 31/136

39 Le Graphe Un graphe est un ensemble d objets muni d une relation binaire entre ces objets. Une relation binaire est un ensemble de couples d objets. En mathématiques, l ensemble est souvent infini et non dénombrable (les réels par exemple), alors qu en informatique, elle est souvent dénombrable et parfois finie. En informatique, les objets représentés sont souvent des objets plus concrets (molécules, composants électroniques, villes, réseaux de téléphones mobiles, personnes). 32/136

40 Exemple de graphe : parents Ensemble : toutes les personnes assistant à un repas de Noël. Relation : l ensemble des couples de personnes (p 1, p 2 ) tels que p 1 a pour parent p 2 (relation non symétrique). 33/136

41 Représentation graphique d un graphe x y = «x a pour parent y» (relation non symétrique, graphe orienté) : Isabelle Jean Jacques Luc Anne Olivier Marie Pierre 34/136

42 Exemple de graphe : cousins Ensemble : toutes les personnes assistant à un repas de Noël. Relation : l ensemble des couples de personnes (p 1, p 2 ) tels que p 1 est un cousin de p 2 (relation symétrique). 35/136

43 Représentation graphique : cousins Les cousins (relation symétrique, graphe non orienté) : Isabelle Jean Jacques Luc Anne Olivier Marie Pierre 36/136

44 Exemple de graphe : molécules Ensemble : les atomes d une molécule. Relation : l ensemble des couples d atomes (a 1, a 2 ) tels que a 1 et a 2 partagent au moins un électron (liaison covalente, relation symétrique) 37/136

45 Représentation graphique : molécules Une molécule de caféine (relation symétrique, graphe non orienté) : 38/136

46 Exemple de graphe : internet Ensemble : les pages web. Relation : l ensemble des couples (w 1, w 2 ) tels qu il existe un lien direct sur la page web w 1 qui amène sur la page web w 2. Relation non symétrique, graphe orienté. 39/136

47 Représentation graphique : internet 40/136

48 Représentation graphique : internet 41/136

49 Représentation graphique : connaissance entre personnes saines/grippées/porteuses 42/136

50 Concepts et notation Il s agit de donner un nom et un façon d écrire certaines notions fréquemment utilisées. Raison pour introduire des concepts et des notations : évite la répétition de phrases compliquées, précision ; on évite l ambiguïté, Exemples connus : racine carrée. 43/136

51 Concepts et notations ensemblistes Nous supposons que la notion d ensemble est connue. En informatique, il faut souvent préciser la fonction de comparaison utilisée entre deux éléments de l ensemble. Exemple : L objet a est une Renault Clio immatriculée 1234AB33, l objet b est une Renault Mégane immatriculée 1234AB24, l objet c une Renault Clio immatriculée 5678XY40. Est-ce que c est élément de l ensemble {a, b}? 44/136

52 Élément d un ensemble La notation x E signifie que x est élément de l ensemble E. Cette notation ne précise pas le test d égalité qu il faut donc préciser séparément. On notera E le nombre d éléments de l ensemble E. 45/136

53 Sous-ensembles On utilise la notation E F pour dire que E est un sous-ensemble de F, à savoir que tout élément de E est aussi élément de F. Attention, il est possible que E = F. Sinon, on écrit E F Pour l ensemble des sous-ensembles d un ensemble E (appelé les parties de E), nous utilisons la notation P(E). Exemple : Si E = {a, b}, alors P(E) = {, {a},{b},{a, b}} Questions : 1. Est-ce que E P(E)? 2. Que vaut P(E) si E est fini? 46/136

54 Fonctions Une fonction est un objet mathématique qui, à un objet d un ensemble fait correspondre un objet d un autre ensemble. Exemple : f(x) = sin(x) g(x, y) = x 2 + y 2 En informatique les ensembles sont souvent composés d objets concrets (personnes, voitures), de graphes, de sommets, d arêtes... On dit qu une fonction est appliquée à un ou plusieurs arguments et qu elle renvoie (ou retourne) une valeur. Ceci reflète l aspect exécutable d une fonction. 47/136

55 Domaine et image d une fonction L ensemble de tous les arguments possibles d une fonction φ est le domaine de la fonction : dom(φ). L ensemble de toutes les valeurs possibles d une fonction est l image de la fonction : img(φ). Notation : φ : dom(φ) img(φ). Exemples : sin : R [ 1, 1]. g : R R R +, où g(x, y) = x 2 + y 2. 48/136

56 Conditions nécessaires et suffisantes Condition nécessaire : A est une condition nécessaire pour B est la même chose que B implique A ou B A. Ici B est l objectif. Une autre façon de le dire : B seulement si A Condition suffisante : A est une condition suffisante pour B est la même chose que A implique B ou A B. B est encore l objectif. Une autre façon de le dire : B si A Condition nécessaire et suffisante : B si et seulement si A. B est l objectif et souvent un concept à définir. 49/136

57 Raisonnement par l absurde Nous avons besoin de calculer la négation d une phrase. La négation de A se lit non A et s écrit A. Si A est vrai, alors A est faux. Si A est faux, alors A est vrai. La négation de B seulement si A est non A mais B. (le mais est le et logique) La négation de B si A est A mais non B. La négation de a A est a A. La négation de b B est b B. 50/136

58 Complexité Comment savoir si une méthode est efficace? C est le problème du domaine de la complexité asymptotique, ou simplement la complexité. 51/136

59 Complexité (suite) On suppose l existence d un ensemble d opérations simples et rapides (ou opérations élémentaires). Une opération est simple et rapide si un ordinateur peut l exécuter avec un nombre faible d instructions. 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. 52/136

60 Complexité (suite) Pour déterminer si une méthode est efficace, on compte d abord le nombre d opérations nécessaire à effectuer dans le pire des cas et en fonction de la taille du problème. Par exemple, pendant un pot, on souhaite que chaque participant serre la main à chaque autre participant. L opération élémentaire est serrer la main. La taille du problème est le nombre de participants. En général, pour n personnes, il faut n(n 1)/2 opérations élémentaires, soit 1 2 n2 1 2 n. 53/136

61 Complexité (suite) Pour obtenir la complexité asymptotique, on remplace d abord toute constante (de type 1 2 ou 55) par 1. Cela nous donne n2 n. Puis, on garde uniquement le terme le plus grand pour n grand. Cela donne n 2. Finalement, on indique que ces approximations ont été effectuées en rajoutant O() comme ceci : O(n 2 ). En réalité, on effectue les approximations avant de compter exactement. 54/136

62 Complexité : exemple Problème : déterminer si 2 ensembles E 1, E 2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E 1 avec chaque élément de E 2 n 2 comparaisons /136

63 Complexité : exemple Problème : déterminer si 2 ensembles E 1, E 2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E 1 avec chaque élément de E 2 n 2 comparaisons =? /136

64 Complexité : exemple Problème : déterminer si 2 ensembles E 1, E 2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E 1 avec chaque élément de E 2 n 2 comparaisons =? /136

65 Complexité : exemple Problème : déterminer si 2 ensembles E 1, E 2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E 1 avec chaque élément de E 2 n 2 comparaisons =? /136

66 Complexité : exemple Problème : déterminer si 2 ensembles E 1, E 2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E 1 avec chaque élément de E 2 n 2 comparaisons =? /136

67 Complexité : exemple Problème : déterminer si 2 ensembles E 1, E 2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E 1 avec chaque élément de E 2 n 2 comparaisons =? /136

68 Complexité : exemple Problème : déterminer si 2 ensembles E 1, E 2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E 1 avec chaque élément de E 2 n 2 comparaisons /136

69 Complexité : exemple Problème : déterminer si 2 ensembles E 1, E 2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E 1 avec chaque élément de E 2 n 2 comparaisons /136

70 Complexité : exemple Problème : déterminer si 2 ensembles E 1, E 2 de n entiers ont une valeur commune. Algorithme 1 : comparer successivement chaque élément de E 1 avec chaque élément de E 2 n 2 comparaisons On peut résoudre le problème avec environ n log(n) comparaisons! E 1 = E 2 Algorithme 1 Algorithme 2 n n 2 n log(n) /136

71 Définition d un graphe (1) Une première tentative : Un graphe est un couple (V, E), où V est un ensemble d objets appelés les sommets du graphe (V pour l anglais vertex ), E V V est une relation binaire sur V V. Les éléments de E sont appelés les arêtes du graphe (E pour l anglais edge ). 56/136

72 Problème de la définition Problème : Comment représenter le graphe suivant? e 1 s 2 s 3 s e e 4 4 s 3 1 e 5 e 2 La définition a plusieurs problèmes : On ne peut pas avoir deux arêtes différentes entre deux sommets (les arêtes n ont pas d identité propre), Un couple (s1, s 2 ) n est pas le même que (s 2, s 1 ). En fait, la définition donne ce que l on appelle un graphe orienté simple. Ici simple signifie qu il y a au plus une arête entre deux sommets. 57/136

73 Définition d un graphe (2) (orientée arêtes) Deuxième tentative : un graphe est un triplet (V, E,φ), où V est un ensemble d objets appelés les sommets du graphe, E est un ensemble d objets appelés les arêtes du graphe, φ est une fonction φ : E P(V) telle que e E, φ(e) {1, 2} 58/136

74 Définition d un graphe (2) (orientée arêtes) Deuxième tentative : un graphe est un triplet (V, E,φ), où V est un ensemble d objets appelés les sommets du graphe, E est un ensemble d objets appelés les arêtes du graphe, φ est une fonction φ : E P(V) telle que e E, φ(e) {1, 2} e 1 s 2 s 3 s e e 4 4 φ(e s 3 1 ) = {s 1 } 1 φ(e e 2 ) = {s 1 } 5 φ(e 3 ) = {s 1, s 2 } e 2 φ(e 4 ) = {s 2, s 3 } φ(e 5 ) = {s 2, s 3 } 58/136

75 Interprétation de la définition Ici, les arêtes sont des objets à part. La fonction φ prend comme argument une arête et renvoie un ensemble de sommets (les points extrêmes de l arête). Pour forcer une arête à avoir un ou deux points extrêmes, il faut une restriction sur la taille de l ensemble renvoyé. La façon d exprimer cela est : φ : E P(V) telle que e E, φ(e) {1, 2} 59/136

76 Définition d un graphe (3) (orientée sommets) Une autre définition : un graphe est un triplet (V, E,ψ), où V est un ensemble d objets appelés les sommets du graphe, E est un ensemble d objets appelés les arêtes du graphe, ψ est une fonction ψ : V P(E) telle que e E, {s V, e ψ(s)} {1, 2} 60/136

77 Définition d un graphe (3) (orientée sommets) Une autre définition : un graphe est un triplet (V, E,ψ), où V est un ensemble d objets appelés les sommets du graphe, E est un ensemble d objets appelés les arêtes du graphe, ψ est une fonction ψ : V P(E) telle que e E, {s V, e ψ(s)} {1, 2} e 1 s 2 s 3 s e e 4 4 ψ(s s 3 1 ) = {e 1, e 2, e 3 } 1 ψ(s e 2 ) = {e 3, e 4, e 5 } 5 ψ(s 3 ) = {e 4, e 5 } ψ(s 4 ) = e 2 60/136

78 Interprétation de la définition Elle génère les mêmes objets que la précédente. Le rôle de la fonction est totalement différent. Ici, ψ est appliquée à un sommet et renvoie un ensemble d arêtes. 61/136

79 Le graphe en tant que type abstrait Chaque définition a des conséquences sur la programmation. On peut : à partir d un objet de type graphe, récupérer l ensemble des sommets du graphe, à partir d un objet de type graphe, récupérer l ensemble des arêtes du graphe, avec la définition orientée arêtes : à partir d une arête du graphe, récupérer le(s) sommet(s) extrémités de l arête. avec la définition orientée sommets : à partir d un sommet du graphe, récupérer le(s) arêtes(s) dont le sommet est extrémité. 62/136

80 La notion de type abstrait On appelle une telle collection d opérations un type abstrait. C est une notion centrale en programmation. Cela permet de créer des programmes modulaires (i.e., contenant des parties relativement indépendantes) et donc maintenables. Pour programmer une application, on se pose la question : Quels sont les objets manipulés par le programme, et quelles sont les opérations sur ces objets? La notion de type abstrait sera traitée en TD. 63/136

81 Quel type abstrait est le bon? Ça dépend de ce que vous voulez en faire (de l application). Certaines opérations sont plus rapides et/ou plus simples à programmer selon le type choisi. Souvent, il n est pas possible de n avoir que des opérations simples et rapides. Il faut donc choisir. Exemple : Déterminer si 2 sommets s, t sont reliés par une arête. Définition orientée arêtes : on regarde pour chaque arête s il y en a une qui a comme extrémités s et t. Définition orientée sommets : on calcule ψ(s) ψ(t) et on regarde s il est non vide. Exercice : Quelle définition donne un algorithme plus rapide sur un graphe en forme de cercle? Sur le graphe suivant? s x 1 x 2 x 3 x n t 64/136

82 Degré d un sommet Le degré d un sommet s, noté d(s), est le nombre de brins d arêtes ayant s comme extrémité. Une boucle compte deux fois. Exemple : A B C D E F Ici d(a) = 1, d(b) = 3, d(c) = 4, d(d) = 2, d(e) = 0, d(f) = 2. 65/136

83 Un premier théorème Pour un graphe G ayant au moins un sommet, d(s) = 2 E(G) s V(G) 66/136

84 Technique de preuve par induction 1. Vérifier que s V d(s) = 2 E pour un graphe sans arête, 2. Supposer que s V d(s) = 2 E pour n importe quel graphe avec au plus k arêtes, 3. Prouver que si s V d(s) = 2 E est vrai pour n importe quel graphe avec au plus k arêtes, c est aussi vrai pour n importe quel graphe avec k + 1 arêtes. 67/136

85 La preuve du théorème (1/2) Par induction sur le nombre d arêtes dans le graphe. 1. Cas de base La propriété est trivialement vraie pour un graphe avec E = 0, car le degré de chaque sommet du graphe est Hypothèse d induction On suppose que pour un graphe G avec au moins un sommet et au plus k arêtes, s V(G) d(s) = 2 E(G). 68/136

86 La preuve du théorème (2/2) 3. Induction Soit H un graphe à k + 1 arêtes. En supprimant l une des arêtes, disons e entre s 1 et s 2, on obtient un graphe G ayant au plus k arêtes. D après l hypothèse d induction, on a d(s) = 2 E(G). s V(G) Le degré des sommets s 1 et s 2 dans H est 1 de plus que leur degré dans G, donc d(s) = d(s) + 2 = 2( E(G) + 1) s V(H) s V(G) Comme G est obtenu de H en supprimant une arête, on a E(G) + 1 = E(H), et donc finalement d(s) = 2 E(H) s V(H) Nous avons donc prouvé la propriété par induction. 69/136

87 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-ce 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. 70/136

88 Définition de chaîne (1) Première tentative : (attention : cette définition n est pas bonne). Une chaîne dans un graphe est une suite C = s1, s 2,...,s k de sommets du graphe, telle que i, 1 i < k, il y a une arête entre s i et s i+1. 71/136

89 Problème de la définition S il y a plusieurs arêtes entre deux sommets, on ne sait pas par laquelle il faut passer. Exemple : A a b B 72/136

90 Définition de chaîne (2) Deuxième tentative : (attention : cette définition n est pas bonne). Une chaîne dans un graphe est une suite C = e1, e 2,...,e k d arêtes du graphe, telle que i, 1 i < n, e i et e i+1 partagent un sommet. 73/136

91 Problème de la définition La suite a, b, c dans le graphe suivant sera considérée comme une chaîne : A a B C b c D De plus, on ne sait pas par quel sommet la chaîne commence. 74/136

92 Définition de chaîne (3, la bonne) Une chaîne dans un graphe est une suite C = s 1, e 1, s 2, e 2,...,s k, e k, s k+1 de k + 1 sommets et k arêtes en alternance, telle que i, 1 i k, les extrémités de e i sont s i et s i+1. On dit alors que C est une chaîne entre s 1 et s k+1. Remarque : si k = 0, on obtient une chaîne sans arête C = s 1. 75/136

93 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. Mais il nous faut d abord un peu de théorie. 76/136

94 Chaîne simple Une chaîne C = s1, e 1, s 2, e 2,...,s k, e k, s k+1 est simple si et seulement si i, j [1, k + 1], (i < j et s i = s j ) = (i = 1 et j = k + 1) Autrement dit un sommet figure au plus une fois dans la chaîne. [sauf pour le sommet de début et de fin. S ils sont les mêmes, il s agit d un cycle]. 77/136

95 Théorème Dans un graphe G, s il existe une chaîne entre s V(G) et t V(G), alors il existe une chaîne simple entre s et t. La preuve est constructive. On prend une chaîne non simple et on supprime les cycles. 78/136

96 Preuve Soit C = s1, e 1, s 2, e 2,..., s k, e k, s k+1 la chaîne. Si C est simple, le travail est terminé. Sinon, il y a deux sommets si et s j tels que i, j [1, k + 1], pour lesquels i < j, {i, j} {1, k + 1}, et s i = s j. On écrit donc : C = s 1, e 1,...,s i, e i,..., s j, e j,..., s k, e k, s k+1. On construit C plus courte en supprimant de C la partie e i,..., s j. On obtient alors : C = s 1, e 1,... s i, e j,...,s k, e k, s k+1. 79/136

97 Preuve Soit C = s1, e 1, s 2, e 2,..., s k, e k, s k+1 la chaîne. Si C est simple, le travail est terminé. Sinon, il y a deux sommets si et s j tels que i, j [1, k + 1], pour lesquels i < j, {i, j} {1, k + 1}, et s i = s j. On écrit donc : C = s 1, e 1,...,s i, e i,..., s j, e j,..., s k, e k, s k+1. On construit C plus courte en supprimant de C la partie e i,..., s j. On obtient alors : C = s 1, e 1,... s i, e j,...,s k, e k, s k+1. 79/136

98 Preuve (suite) Il reste à vérifier que C est une chaîne. Chaque arête de la chaîne doit être entourée de ses deux extrémités. C est le cas dans C. On répète le procédé tant que C n est pas simple. [Ou : on fait une preuve par induction sur la longueur de la chaîne.] 80/136

99 Existence d une chaîne entre s et t Voici un 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 s t 81/136

100 Existence d une chaîne entre s et t Voici un 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 s t 81/136

101 Existence d une chaîne entre s et t Voici un 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 s t 81/136

102 Existence d une chaîne entre s et t Voici un 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 s t 81/136

103 Existence d une chaîne entre s et t Voici un 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 s t 81/136

104 Existence d une chaîne entre s et t Voici un 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 s t 81/136

105 Existence d une chaîne entre s et t Voici un 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 s t 81/136

106 Existence d une chaîne, complexité (définition orientée arêtes) Au pire, cet algorithme passe par chaque arête du graphe pour trouver la première arête dont un sommet extrémité est marqué et l autre ne l est pas, ce qui coûte E. 82/136

107 Existence d une chaîne, complexité (définition orientée arêtes) Au pire, cet algorithme passe par chaque arête du graphe pour trouver la première arête dont un sommet extrémité est marqué et l autre ne l est pas, ce qui coûte E. Ensuite, la 2 ème arête est trouvée au pire en E 1 étapes. Et ainsi de suite. 82/136

108 Existence d une chaîne, complexité (définition orientée arêtes) Au pire, cet algorithme passe par chaque arête du graphe pour trouver la première arête dont un sommet extrémité est marqué et l autre ne l est pas, ce qui coûte E. Ensuite, la 2 ème arête est trouvée au pire en E 1 étapes. Et ainsi de suite. L algorithme s arrête quand tous les sommets ont été marqués (il n y a plus rien à faire!). Donc au pire, à l étape V, tous les sommets ont été marqués. 82/136

109 Existence d une chaîne, complexité (définition orientée arêtes) Au pire, cet algorithme passe par chaque arête du graphe pour trouver la première arête dont un sommet extrémité est marqué et l autre ne l est pas, ce qui coûte E. Ensuite, la 2 ème arête est trouvée au pire en E 1 étapes. Et ainsi de suite. L algorithme s arrête quand tous les sommets ont été marqués (il n y a plus rien à faire!). Donc au pire, à l étape V, tous les sommets ont été marqués. La complexité de cet algorithme est donc au plus : V ( E i) = O( V E ). i=0 82/136

110 Existence d une chaîne, complexité (définition orientée arêtes) Au pire, cet algorithme passe par chaque arête du graphe pour trouver la première arête dont un sommet extrémité est marqué et l autre ne l est pas, ce qui coûte E. Ensuite, la 2 ème arête est trouvée au pire en E 1 étapes. Et ainsi de suite. L algorithme s arrête quand tous les sommets ont été marqués (il n y a plus rien à faire!). Donc au pire, à l étape V, tous les sommets ont été marqués. La complexité de cet algorithme est donc au plus : V ( E i) = O( V E ). i=0 82/136

111 Existence d une chaîne, complexité (définition orientée arêtes) Au pire, cet algorithme passe par chaque arête du graphe pour trouver la première arête dont un sommet extrémité est marqué et l autre ne l est pas, ce qui coûte E. Ensuite, la 2 ème arête est trouvée au pire en E 1 étapes. Et ainsi de suite. L algorithme s arrête quand tous les sommets ont été marqués (il n y a plus rien à faire!). Donc au pire, à l étape V, tous les sommets ont été marqués. La complexité de cet algorithme est donc au plus : V ( E i) = O( V E ). i=0 Remarque Il existe un algorithme de complexité O( V + E ). 82/136

112 Connexité La notion de 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 Formellement, un graphe G est connexe si et seulement si s, t V(G), il existe une chaîne entre s et t. Nous allons étudier des méthodes efficaces pour déterminer si un graphe est connexe. 83/136

113 Déterminer si un graphe est connexe : approche simple La première idée est toujours d appliquer la définition. 84/136

114 Déterminer si un graphe est connexe : approche simple La première idée est toujours d appliquer la définition. Donc, pour déterminer si un graphe est connexe, vérifier si pour chaque couple (s, t) de sommets, il existe une chaîne entre s et t. 84/136

115 Déterminer si un graphe est connexe : approche simple La première idée est toujours d appliquer la définition. Donc, pour déterminer si un graphe est connexe, vérifier si pour chaque couple (s, t) de sommets, il existe une chaîne entre s et t. Il y a n 2 tels couples, si n = V. 84/136

116 Déterminer si un graphe est connexe : approche simple La première idée est toujours d appliquer la définition. Donc, pour déterminer si un graphe est connexe, vérifier si pour chaque couple (s, t) de sommets, il existe une chaîne entre s et t. Il y a n 2 tels couples, si n = V. Au total, la méthode simple a une complexité O(n3 E ) 84/136

117 Déterminer si un graphe est connexe : approche simple La première idée est toujours d appliquer la définition. Donc, pour déterminer si un graphe est connexe, vérifier si pour chaque couple (s, t) de sommets, il existe une chaîne entre s et t. Il y a n 2 tels couples, si n = V. Au total, la méthode simple a une complexité O(n3 E ) Nous allons montrer qu on peut résoudre le problème en O(n 2 ). 84/136

118 Différence entre O(n 3 ), O(n 2 ) et O(n) Imaginons encore un ordinateur capable d exécuter une instruction élémentaire en 10ns et un graphe de sommets. Exécuter n instructions élémentaires nécessite 1ms, soit 0, 01s. Exécuter n 2 instructions élémentaires nécessite 10 4 s soit 2h45. Exécuter n 3 instructions élémentaires nécessite 321 ans. 85/136

119 Approche plus efficace Theorème Soit G un graphe. On considère les propriétés suivantes : A. G est connexe. B. Pour tout sommet s de G, il existe une chaîne entre s et chacun des sommets de G. C. Il existe un sommet s de G tel qu il existe une chaîne entre s et chacun des sommets de G. Les propriétés A, B et C sont équivalentes, c est-à-dire : A B C. 86/136

120 Preuve (parties A = B et B = C) On suppose que A est vraie, c est-à-dire que G est connexe. On choisit un sommet s de G. Comme G est connexe, pour tout sommet t de G, il existe une chaîne entre s et t. Donc B est vraie. On a donc montré que A = B. Si B est vraie, alors C est aussi vraie (évident) donc B = C. Il reste à montrer que C = A. 87/136

121 Preuve (partie C = A) On suppose que C est vraie : il existe donc un sommet s de G tel qu il existe une chaîne entre s et chacun des sommets de G. Il faut prouver que A est vraie, c est-à-dire que G est connexe. Soient donc x et y deux sommets de G. On veut montrer qu il existe une chaîne entre x et y. 88/136

122 Preuve (partie C = A) On suppose que C est vraie : il existe donc un sommet s de G tel qu il existe une chaîne entre s et chacun des sommets de G. Il faut prouver que A est vraie, c est-à-dire que G est connexe. Soient donc x et y deux sommets de G. On veut montrer qu il existe une chaîne entre x et y. 88/136

123 Preuve (partie C = A) On suppose que C est vraie : il existe donc un sommet s de G tel qu il existe une chaîne entre s et chacun des sommets de G. Il faut prouver que A est vraie, c est-à-dire que G est connexe. Soient donc x et y deux sommets de G. On veut montrer qu il existe une chaîne entre x et y. 88/136

124 Preuve (partie C = A) On suppose que C est vraie : il existe donc un sommet s de G tel qu il existe une chaîne entre s et chacun des sommets de G. Il faut prouver que A est vraie, c est-à-dire que G est connexe. Soient donc x et y deux sommets de G. On veut montrer qu il existe une chaîne entre x et y. x s y 88/136

125 Preuve (partie C = A) On suppose que C est vraie : il existe donc un sommet s de G tel qu il existe une chaîne entre s et chacun des sommets de G. Il faut prouver que A est vraie, c est-à-dire que G est connexe. Soient donc x et y deux sommets de G. On veut montrer qu il existe une chaîne entre x et y. C x 1 C s 2 y On sait qu il existe des chaînes C1 entre s et x, et C 2 entre s et y. 88/136

126 Preuve (partie C = A) On suppose que C est vraie : il existe donc un sommet s de G tel qu il existe une chaîne entre s et chacun des sommets de G. Il faut prouver que A est vraie, c est-à-dire que G est connexe. Soient donc x et y deux sommets de G. On veut montrer qu il existe une chaîne entre x et y. C x s 2 y C 1 On sait qu il existe des chaînes C1 entre s et x, et C 2 entre s et y. En lisant C1 à l envers, on obtient une chaîne C 1 entre x et s. 88/136

127 Preuve (partie C = A) On suppose que C est vraie : il existe donc un sommet s de G tel qu il existe une chaîne entre s et chacun des sommets de G. Il faut prouver que A est vraie, c est-à-dire que G est connexe. Soient donc x et y deux sommets de G. On veut montrer qu il existe une chaîne entre x et y. C x s 2 y C 1 On sait qu il existe des chaînes C1 entre s et x, et C 2 entre s et y. En lisant C1 à l envers, on obtient une chaîne C 1 entre x et s. En recollant la chaîne C1 à C 2, on obtient une chaîne x et y. 88/136

128 Preuve (partie C = A) On suppose que C est vraie : il existe donc un sommet s de G tel qu il existe une chaîne entre s et chacun des sommets de G. Il faut prouver que A est vraie, c est-à-dire que G est connexe. Soient donc x et y deux sommets de G. On veut montrer qu il existe une chaîne entre x et y. C x s 2 y C 1 On sait qu il existe des chaînes C1 entre s et x, et C 2 entre s et y. En lisant C1 à l envers, on obtient une chaîne C 1 entre x et s. En recollant la chaîne C1 à C 2, on obtient une chaîne x et y. Donc A est vraie et A = C. 88/136

129 Un algorithme plus efficace Pour déterminer si un graphe est connexe, on peut donc : Choisir un sommet s arbitraire dans le graphe. Vérifier si pour chaque sommet t du graphe, il existe une chaîne entre s et t. Complexité 1. Il faut donc faire V vérifications. 2. Le coût de chaque vérification est O( V. E ). 3. Au total, la complexité est donc O( V 2. E ). 89/136

130 Un algorithme plus efficace Pour déterminer si un graphe est connexe, on peut donc : Choisir un sommet s arbitraire dans le graphe. Vérifier si pour chaque sommet t du graphe, il existe une chaîne entre s et t. Complexité 1. Il faut donc faire V vérifications. 2. Le coût de chaque vérification est O( V. E ). 3. Au total, la complexité est donc O( V 2. E ). Remarque Si on utilise l algorithme qui teste l existence d une chaîne en O( V ), on obtient un algorithme en O( V 2 ). 89/136

131 Encore une amélioration On observe que l algorithme parcourt la même chaîne plusieurs fois. Dans le graphe suivant : s s s s s il va parcourir entre s 0 et s 1, puis entre s 0 et s 2, refaisant alors le parcours entre s 0 et s 1, puis entre s 0 et s 3, refaisant alors le parcours entre s 0 et s 2, refaisant alors le parcours entre s 0 et s 1, etc. 90/136

132 Méthode finale pour la connexité Voici l algorithme plus efficace. 1. démarquer tous les sommets 2. marquer un sommet arbitraire s 3. chercher une arête dont un sommet extrémité est marqué et l autre ne l est pas 4. tant qu une telle arête existe : marquer l extrémité non encore marquée 5. si tout les sommets sont marqués, renvoyer vrai 6. sinon renvoyer faux Remarque On peut trouver rapidement l arête du point 3, pour que l algorithme prenne un temps O( V + E ) dans le cas le pire. 91/136

133 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

134 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

135 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

136 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

137 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

138 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

139 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

140 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

141 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

142 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

143 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s 92/136

144 Méthode finale pour la connexité Exemple L algorithme ressemble à celui de recherche d une chaîne. Déroulement possible de l algorithme sur le graphe suivant : s Connexe! 92/136

145 Graphes eulériens Les ponts de la ville de Königsberg au 18 e siècle (maintenant Kaliningrad en Russie) : 93/136

Machine de Turing. Informatique II Algorithmique 1

Machine de Turing. Informatique II Algorithmique 1 Machine de Turing Nous avons vu qu un programme peut être considéré comme la décomposition de la tâche à réaliser en une séquence d instructions élémentaires (manipulant des données élémentaires) compréhensibles

Plus en détail

Cours de spécialité mathématiques en Terminale ES

Cours de spécialité mathématiques en Terminale ES Cours de spécialité mathématiques en Terminale ES O. Lader 2014/2015 Lycée Jean Vilar Spé math terminale ES 2014/2015 1 / 51 Systèmes linéaires Deux exemples de systèmes linéaires à deux équations et deux

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Cours 1: Introduction à l algorithmique

Cours 1: Introduction à l algorithmique 1 Cours 1: Introduction à l algorithmique Olivier Bournez bournez@lix.polytechnique.fr LIX, Ecole Polytechnique 2011-12 Algorithmique 2 Aujourd hui Calcul de x n Maximum Complexité d un problème Problème

Plus en détail

L enseignement de l algorithmique au Lycée

L enseignement de l algorithmique au Lycée L enseignement de l algorithmique au Lycée Sisteron 12 novembre 2009 Fernand Didier didier@irem.univ-mrs.fr Approche naïve C est une méthode, une façon systématique de procéder, pour faire quelque chose

Plus en détail

Expressions, types et variables en Python

Expressions, types et variables en Python Expressions, types et variables en Python 2015-08-26 1 Expressions Les valeurs désignent les données manipulées par un algorithme ou une fonction. Une valeur peut ainsi être : un nombre, un caractère,

Plus en détail

Structures de données non linéaires

Structures de données non linéaires Structures de données non linéaires I. Graphes Définition Un graphe (simple) orienté G est un couple (S, A), où : S est un ensemble dont les éléments sont appelés les sommets. A est un ensemble de couples

Plus en détail

TP 1 - Utilisation de Python

TP 1 - Utilisation de Python TP 1 - Utilisation de Python L objectif de ce TP est d apprendre à faire réaliser des calculs et des tâches répétitives à un ordinateur. Pour faire cela, il est nécessaire de communiquer avec l ordinateur

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Points fixes de fonctions à domaine fini

Points fixes de fonctions à domaine fini ÉCOLE POLYTECHNIQUE ÉCOLE NORMALE SUPÉRIEURE DE CACHAN ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION 2013 FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE

Plus en détail

Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements

Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements Exo7 Logique et raisonnements Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements Quelques motivations Il est important d avoir un langage rigoureux. La langue

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Algorithmique. Mode d application

Algorithmique. Mode d application I - Généralités Algorithmique T ale S Définition: Un algorithme est une suite finie d instructions permettant la résolution systématique d un problème donné. Un algorithme peut-être utilisé pour décrire

Plus en détail

Partie I : Automates et langages

Partie I : Automates et langages 2 Les calculatrices sont interdites. N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut

Plus en détail

Série 2 Premiers programmes

Série 2 Premiers programmes Licence pro. GTSBD 2013-2014 Structures de données, langage Python Série 2 Premiers programmes Programmes avec des affectations, des lectures et des écritures Exo 2.1 Le problème de la machine qui rend

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

Licence de Sciences et Technologies. Fiche de cours 1 - Nombres réels.

Licence de Sciences et Technologies. Fiche de cours 1 - Nombres réels. Licence de Sciences et Technologies EM21 - Analyse Fiche de cours 1 - Nombres réels. On connaît les ensembles suivants, tous munis d une addition, d une multiplication, et d une relation d ordre compatibles

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3 I Arbres binaires 2014-2015 Table des matières 1 Rappels 2 1.1 Définition................................................ 2 1.2 Dénombrements............................................ 2 1.3 Parcours.................................................

Plus en détail

Mathématiques pour l informatique 1 notes de cours sur la seconde partie

Mathématiques pour l informatique 1 notes de cours sur la seconde partie Mathématiques pour l informatique notes de cours sur la seconde partie L Université Paris-Est, Marne-la-Vallée Cyril Nicaud Organisation Ce demi-cours est composé de 6 séances de cours et 6 séances de

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Arbres binaires de recherche et arbres rouge noir

Arbres binaires de recherche et arbres rouge noir Institut Galilée lgo, rbres, Graphes I nnée 006-007 License rbres binaires de recherche et arbres rouge noir Rappels de cours et correction du TD rbres binaires de recherche : définitions Un arbre binaire

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 11 : Arbre couvrant Prétraitement Benjamin Wack 2015-2016 1 / 32 La dernière fois Rappels sur les graphes Problèmes classiques Algorithmes d optimisation

Plus en détail

Université Bordeaux 1. Année 2014-2015, Licence semestre 1

Université Bordeaux 1. Année 2014-2015, Licence semestre 1 Initiation à l'informatique (MI-1003) Université Bordeaux 1 Année 2014-2015, Licence semestre 1 Initiation à l informatique (MI-1003) Plan du cours 1. Présentation et organisation 2. Algorithmes 3. Programmes

Plus en détail

Notion de complexité

Notion de complexité 1 de 27 Algorithmique Notion de complexité Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www-igm.univ-mlv.fr/ hivert Outils mathématiques 2 de 27 Outils mathématiques : analyse

Plus en détail

Suites numériques 3. 1 Convergence et limite d une suite

Suites numériques 3. 1 Convergence et limite d une suite Suites numériques 3 1 Convergence et limite d une suite Nous savons que les termes de certaines suites s approchent de plus en plus d une certaine valeur quand n augmente : par exemple, les nombres u n

Plus en détail

Informatique. Programmation en Python.

Informatique. Programmation en Python. BCPST 1 B 13 septembre 2015 Informatique. Programmation en Python. Ce document est un support de cours, il vous permet d avoir sa structure et ses éléments les plus importants. Au cours des séances en

Plus en détail

Programmer avec Xcas : version 0.8.6 et 0.9

Programmer avec Xcas : version 0.8.6 et 0.9 Programmer avec Xcas : version 0.8.6 et 0.9 I. L environnement de travail de Xcas Xcas permet d écrire des programmes, comme n importe quel langage de programmation. C est un langage fonctionnel. L argument

Plus en détail

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation IFIPS S7 - informatique Université Paris-Sud 11 1er semestre 2009/2010 Théorie des Graphes Cours 3: Forêts et Arbres II / 1 Forêts et arbres II Théorème 1.1. Les assertions suivantes sont équivalentes

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Généralités sur les graphes

Généralités sur les graphes Généralités sur les graphes Christophe ROSSIGNOL Année scolaire 2008/2009 Table des matières 1 Notion de graphe 3 1.1 Un peu de vocabulaire.......................................... 3 1.2 Ordre d un graphe,

Plus en détail

ALGORITHMIQUE II. Récurrence et Récursivité. SMI AlgoII

ALGORITHMIQUE II. Récurrence et Récursivité. SMI AlgoII ALGORITHMIQUE II Récurrence et Récursivité Récurrence Suite récurrente: la déition d une suite est la donnée d un terme général déi en fonction du (ou des) terme(s) précédant(s) D un terme initial qui

Plus en détail

Algorithmique avancée en Python TDs

Algorithmique avancée en Python TDs Algorithmique avancée en Python TDs Denis Robilliard sept. 2014 1 TD 1 Révisions 1. Ecrire un programme qui saisit un entier, et détermine puis affiche si l entier est pair où impair. 2. Ecrire un programme

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

Enveloppes convexes dans le plan

Enveloppes convexes dans le plan ÉCOLE POLYTECHNIQUE ÉCOLES NORMALES SUPÉRIEURES ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE B (XECLR)

Plus en détail

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures)

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures) L2 - lgorithmique et structures de données (nnée 2010/2011) Delacourt, Phan Luong, Poupet xamen (2 heures) Les documents (cours, TD, TP) sont autorisés. Les quatre exercices sont indépendants. À la fin

Plus en détail

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ données pr ogramme 11111101 11001101 01000101 b us disque ma gnétique processeur écran Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

VI- Des transistors aux portes logiques. Conception de circuits

VI- Des transistors aux portes logiques. Conception de circuits 1 VI- Des transistors aux portes logiques. Conception de circuits Nous savons que l ordinateur traite uniquement des instructions écrites en binaire avec des 0 et des 1. Nous savons aussi qu il est formé

Plus en détail

Introduction à l étude des Corps Finis

Introduction à l étude des Corps Finis Introduction à l étude des Corps Finis Robert Rolland (Résumé) 1 Introduction La structure de corps fini intervient dans divers domaines des mathématiques, en particulier dans la théorie de Galois sur

Plus en détail

Un corrigé de l épreuve de mathématiques du baccalauréat blanc

Un corrigé de l épreuve de mathématiques du baccalauréat blanc Terminale ES Un corrigé de l épreuve de mathématiques du baccalauréat blanc EXERCICE ( points). Commun à tous les candidats On considère une fonction f : définie, continue et doublement dérivable sur l

Plus en détail

Langage C et aléa, séance 4

Langage C et aléa, séance 4 Langage C et aléa, séance 4 École des Mines de Nancy, séminaire d option Ingénierie Mathématique Frédéric Sur http://www.loria.fr/ sur/enseignement/courscalea/ 1 La bibliothèque GMP Nous allons utiliser

Plus en détail

Plus courts et plus longs chemins

Plus courts et plus longs chemins Plus courts et plus longs chemins Complément au chapitre 8 «Une voiture nous attend» Soit I={1,2,,n} un ensemble de tâches à ordonnancer. La durée d exécution de chaque tâche i est connue et égale à p

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

INF-130 Travail Pratique #2

INF-130 Travail Pratique #2 École de technologie supérieure INF-30 Travail Pratique #2 Travail individuel Tracé d un métro Francis Bourdeau, Frédérick Henri et Patrick Salois Remise à la 0 e semaine. Objectifs - Amener l étudiant

Plus en détail

Algorithmie ISI301 TP 1 : Python et premiers algorithmes

Algorithmie ISI301 TP 1 : Python et premiers algorithmes Algorithmie ISI301 TP 1 : Python et premiers algorithmes 1 Python : apprentissage Pour avoir une vision plus large des différentes possibilités du langage Python, nous ne pouvons que vous conseiller d

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Support du cours de Probabilités IUT d Orléans, Département d informatique

Support du cours de Probabilités IUT d Orléans, Département d informatique Support du cours de Probabilités IUT d Orléans, Département d informatique Pierre Andreoletti IUT d Orléans Laboratoire MAPMO (Bât. de Mathématiques UFR Sciences) - Bureau 126 email: pierre.andreoletti@univ-orleans.fr

Plus en détail

Activité 2. Cheminer dans un graphe (chaînes, cycles, etc..)

Activité 2. Cheminer dans un graphe (chaînes, cycles, etc..) TERMINALE ES Spécialité Mathématiques La théorie des graphes Activité Cheminer dans un graphe (chaînes, cycles, etc..). Vocabulaire Un graphe est dit simple s il est sans boucle (une boucle est une arête

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

Algorithmique... Complexité. Luc Brun. luc.brun@greyc.ensicaen.fr. A partir de travaux de Habib Abdulrab(Insa de Rouen) Complexité p.

Algorithmique... Complexité. Luc Brun. luc.brun@greyc.ensicaen.fr. A partir de travaux de Habib Abdulrab(Insa de Rouen) Complexité p. Algorithmique... Complexité Luc Brun luc.brun@greyc.ensicaen.fr A partir de travaux de Habib Abdulrab(Insa de Rouen) Complexité p.1/25 Plan... Notion de complexité Comment évaluer la complexité d un algorithme

Plus en détail

Cours 3. La conditionnelle: instructions si et selon Les boucles Comment raisonner sur les boucles: les invariants de boucle

Cours 3. La conditionnelle: instructions si et selon Les boucles Comment raisonner sur les boucles: les invariants de boucle Cours 3 : Instructions qui changent l ordre d exécution séquentiel 1 Cours 3 Instructions qui changent l ordre d exécution séquentiel La conditionnelle: instructions si et selon Les boucles Comment raisonner

Plus en détail

Programmation avancée

Programmation avancée Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011 Plan du cours 1 2 3 4 5 6 7 8 9 10 Algorithmes Définition

Plus en détail

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Djamel Aouane, Frederic Devernay, Matthieu Moy Mars - avril 2015 1 Manipulations de fichiers Pour organiser des

Plus en détail

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé A. P. M. E. P. Exercice 1 5 points 1. Réponse d. : 1 e Le coefficient directeur de la tangente est négatif et n est manifestement pas 2e

Plus en détail

Chap. 2. Langages et automates

Chap. 2. Langages et automates Chapitre 2. Langages et automates 1. Quelques définitions et description d un langage. 2. Les expressions régulières. 3. Les automates fini déterministes et non-déterministes. 4. Construction automatique

Plus en détail

Fonctions homographiques

Fonctions homographiques Fonctions homographiques On donne ci-dessous deux définitions des fonctions homographiques, et on montre que ces deux définitions sont équivalentes. On décrit la courbe représentative d une fonction homographique.

Plus en détail

Théorie des graphes. Introduction. Programme de Terminale ES Spécialité. Résolution de problèmes à l aide de graphes. Préparation CAPES UCBL

Théorie des graphes. Introduction. Programme de Terminale ES Spécialité. Résolution de problèmes à l aide de graphes. Préparation CAPES UCBL Introduction Ces quelques pages ont pour objectif de vous initier aux notions de théorie des graphes enseignées en Terminale ES. Le programme de Terminale (voir ci-après) est construit sur la résolution

Plus en détail

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

Objectif et contenu Faut-il des connaissances préalables? Organisation et site web Support de cours Modalités de contrôle Comptes et tutorat 2014-15 1. Présentation et organisation 2. Algorithme 3. Programmes 4. Manipulation d images 5. Introduction aux graphes 6. Graphes : définition 7. Degré 8. Chaînes 9. Connexité 10. Graphes Eulériens 11.

Plus en détail

Chapitre 2. Eléments pour comprendre un énoncé

Chapitre 2. Eléments pour comprendre un énoncé Chapitre 2 Eléments pour comprendre un énoncé Ce chapitre est consacré à la compréhension d un énoncé. Pour démontrer un énoncé donné, il faut se reporter au chapitre suivant. Les tables de vérité données

Plus en détail

Les tableaux. Chapitre 3

Les tableaux. Chapitre 3 Chapitre 3 Les tableaux 3.1 Généralités Les tableaux en PERL sont identifiés par le symbole @ à l image du $ pour les variables. Comme ces dernières, les tableaux ne sont pas typés et un même tableau peut

Plus en détail

Fondements de l informatique: Examen Durée: 3h

Fondements de l informatique: Examen Durée: 3h École polytechnique X2013 INF412 Fondements de l informatique Fondements de l informatique: Examen Durée: 3h Sujet proposé par Olivier Bournez Version 3 (corrigé) L énoncé comporte 4 parties (sections),

Plus en détail

Tri en Python. # on cherche k tel que a k = min(a j ) ji

Tri en Python. # on cherche k tel que a k = min(a j ) ji Tri en Python On considère ici des tableaux ou listes d entiers ou de ottants. En Python, on peut trier une liste à l aide de la méthode sort : si a est une liste d entiers ou de ottants, a.sort() modi

Plus en détail

Série d exercices N 9 Arbres

Série d exercices N 9 Arbres Série d exercices N 9 Arbres Exercice 1 a) Ecrire une fonction ARBIN creerarbreentiers() qui permet de créer et de renvoyer l arbre d entiers suivant : b) Ecrire une fonction int feuilles(arbin a) qui

Plus en détail

Informatique en Degead 1. Présentation, modalités, objectifs (1/3)

Informatique en Degead 1. Présentation, modalités, objectifs (1/3) Informatique en Degead 1 Présentation, modalités, objectifs (1/3) Responsable : Denis Cornaz denis.cornaz@dauphine.fr 01 44 05 41 83 P 409 bis http://www.lamsade.dauphine.fr/ cornaz/enseignement/uv21-degead1/

Plus en détail

+ 1. Qu est ce que cela donne pour notre calcul de 1,01? On pose x = 1,01 donc f (x) 1 + 1 0,01

+ 1. Qu est ce que cela donne pour notre calcul de 1,01? On pose x = 1,01 donc f (x) 1 + 1 0,01 Eo7 Dérivée d une fonction Vidéo partie. Définition Vidéo partie. Calculs Vidéo partie 3. Etremum local, théorème de Rolle Vidéo partie 4. Théorème des accroissements finis Eercices Fonctions dérivables

Plus en détail

Correction de programmes : Logique de Hoare

Correction de programmes : Logique de Hoare 16 juillet 2009 Logique et informatique Vis-à-vis de l informatique la logique a au moins 2 rôles : 1 Externe et théorique (fondements de l informatique - Électif en S4) : Logique comme méta-informatique

Plus en détail

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

Plus en détail

Concours 2015 Épreuve d Informatique Filière : MP Durée de l épreuve : 3 heures. L utilisation d une calculatrice est autorisée.

Concours 2015 Épreuve d Informatique Filière : MP Durée de l épreuve : 3 heures. L utilisation d une calculatrice est autorisée. A 2015 INFO. MP École des Ponts ParisTech, SUPAERO (ISAE), ENSTA ParisTech, Télécom ParisTech, Mines ParisTech, Mines de Saint-étienne, Mines Nancy, Télécom Bretagne, ENSAE ParisTech (filière MP), École

Plus en détail

Chapitre 1. Programmation en Python 2ème année. 23 septembre 2014. E-mail mlahby@gmail.com

Chapitre 1. Programmation en Python 2ème année. 23 septembre 2014. E-mail mlahby@gmail.com Chapitre 1 La récursivité Programmation en Python 2ème année E-mail mlahby@gmailcom 23 septembre 2014 Programmation en Python 2ème année CPGE GSR 2014-2015 1/ 24 Plan 1 Rappel 2 Récurrence en mathématique

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

BASES DU RAISONNEMENT

BASES DU RAISONNEMENT BASES DU RAISONNEMENT P. Pansu 10 septembre 2006 Rappel du programme officiel Logique, différents types de raisonnement. Ensembles, éléments. Fonctions et applications. Produit, puissances. Union, intersection,

Plus en détail

Exercices théoriques

Exercices théoriques École normale supérieure 2008-2009 Département d informatique Algorithmique et Programmation TD n 9 : Programmation Linéaire Avec Solutions Exercices théoriques Rappel : Dual d un programme linéaire cf.

Plus en détail

L1: Fondamentaux d algorithmique (En C++)

L1: Fondamentaux d algorithmique (En C++) L1: Fondamentaux d algorithmique (En C++) Par l Université de Haute Alsace Version 6 octobre 2015 Table des matières 1 Algorithmes et Programmes (3h) 3 2 Structures de Base (3h) 4 3 TP Structures de base

Plus en détail

Informatique TP1 : Découverte de Python CPP 1A

Informatique TP1 : Découverte de Python CPP 1A Informatique TP1 : Découverte de Python CPP 1A Romain Casati, Wafa Johal, Frederic Devernay, Matthieu Moy Avril - juin 2014 1 Découverte de l IDE : IDLE IDLE est un environnement de développement (Integrated

Plus en détail

Débuter en algorithmique

Débuter en algorithmique Isabelle Morel 1 1 Qu est-ce qu un algorithme? Débuter en algorithmique Définition Un alogorithme est une suite d opérations élémentaires, à appliquer dans un ordre déterminé à des données. Un algorithme

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Leçon 1: les entiers

Leçon 1: les entiers Leçon 1: les entiers L ensemble N des entiers naturels Compter, dresser des listes, classer et comparer des objets interviennent dans de multiples activités humaines. Les nombres entiers naturels sont

Plus en détail

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes Tableaux VS Listes Tableaux VS Listes Petit chapitre. Plan Introduction Tableaux / Vecteurs Définition abstraite Qu a-t-on fait avec des vecteurs? Que peut-on faire avec des vecteurs? Listes chaînées Définition

Plus en détail

Chapitre 6. Modélisation en P.L.I. 6.1 Lien entre PL et PLI. 6.1.1 Approximation de la PLI

Chapitre 6. Modélisation en P.L.I. 6.1 Lien entre PL et PLI. 6.1.1 Approximation de la PLI Chapitre 6 Modélisation en P.L.I. 6.1 Lien entre PL et PLI (P) problème de PL. On restreint les variables à être entières : on a un problème de PLI (ILP en anglais). On restreint certaines variables à

Plus en détail

Rappels sur les suites - Algorithme

Rappels sur les suites - Algorithme DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-onventions Initiation à la programmation en Python Une commande Python sera écrite en caractère gras. Exemples : print("bonjour") max=input("nombre maximum autorisé :") Le résultat de l'exécution d'un

Plus en détail

Le raisonnement par récurrence

Le raisonnement par récurrence Le raisonnement par récurrence Nous notons N l ensemble des entiers naturels : N = {0,,, } Nous dirons naturel au lieu de entier naturel Le principe du raisonnement par récurrence Soit A une partie de

Plus en détail

Corrigé de l examen partiel du 19 novembre 2011

Corrigé de l examen partiel du 19 novembre 2011 Université Paris Diderot Langage Mathématique (LM1) Département Sciences Exactes 2011-2012 Corrigé de l examen partiel du 19 novembre 2011 Durée : 3 heures Exercice 1 Dans les expressions suivantes, les

Plus en détail

Université Paris Diderot Paris 7. TD n 2. Arbres Binaire de Recherche

Université Paris Diderot Paris 7. TD n 2. Arbres Binaire de Recherche Université Paris Diderot Paris L Informatique Algorithmique Année 00-0, er semestre TD n Arbres Binaire de Recherche Le type de donné arbre" sera utilisé pour indiquer l ensemble de toutes les Arbres Binaires

Plus en détail

Leçon 6. Savoir compter

Leçon 6. Savoir compter Leçon 6. Savoir compter Cette leçon est une introduction aux questions de dénombrements. Il s agit, d une part, de compter certains objets mathématiques (éléments, parties, applications,...) et, d autre

Plus en détail

Programmation, partiel: sémantique d un tableur

Programmation, partiel: sémantique d un tableur Programmation, partiel: sémantique d un tableur Recommandations. Votre copie (papier ou électronique) devra être lisible et bien structurée. La note tiendra compte autant du fond que de la présentation.

Plus en détail

Chapitre 2 : Représentation des nombres en machine

Chapitre 2 : Représentation des nombres en machine Chapitre 2 : Représentation des nombres en machine Introduction La mémoire des ordinateurs est constituée d une multitude de petits circuits électroniques qui ne peuvent être que dans deux états : sous

Plus en détail

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII ALGORITHMIQUE II NOTION DE COMPLEXITE 1 2 Comment choisir entre différents algorithmes pour résoudre un même problème? Plusieurs critères de choix : Exactitude Simplicité Efficacité (but de ce chapitre)

Plus en détail

I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel

I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel Introduction Notre contexte : pas possible d exprimer toutes les combinaisons de DT. Le test fonctionnel est basé sur la spécification/interface

Plus en détail

Le mot «algorithme» vient du nom de l auteur persan Al-Khuwarizmi (né vers 780 - mort vers 850) Une définition: «un algorithme est une suite finie de

Le mot «algorithme» vient du nom de l auteur persan Al-Khuwarizmi (né vers 780 - mort vers 850) Une définition: «un algorithme est une suite finie de Le mot «algorithme» vient du nom de l auteur persan Al-Khuwarizmi (né vers 780 - mort vers 850) Une définition: «un algorithme est une suite finie de règles à appliquer dans un ordre déterminé à un nombre

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers Programmation en Python - Cours 2 : Premiers programmes Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Utilisation en mode interactif Ecriture d un programme

Plus en détail

- Mobiliser les résultats sur le second degré dans le cadre de la résolution d un problème.

- Mobiliser les résultats sur le second degré dans le cadre de la résolution d un problème. Mathématiques - classe de 1ère des séries STI2D et STL. 1. Analyse On dote les élèves d outils mathématiques permettant de traiter des problèmes relevant de la modélisation de phénomènes continus ou discrets.

Plus en détail

Épreuve d informatique 2011

Épreuve d informatique 2011 A 2011 INFO. MP ÉCOLE NATIONALE DES PONTS ET CHAUSSÉES, ÉCOLES NATIONALES SUPÉRIEURES DE L AÉRONAUTIQUE ET DE L ESPACE, DE TECHNIQUES AVANCÉES, DES TÉLÉCOMMUNICATIONS, DES MINES DE PARIS, DES MINES DE

Plus en détail

Licence informatique - L3 Année 2012/2013. Conception d algorithmes et applications (LI325) COURS 2

Licence informatique - L3 Année 2012/2013. Conception d algorithmes et applications (LI325) COURS 2 Licence informatique - L Année 0/0 Conception d algorithmes et applications (LI) COURS Résumé. Cette deuxième séance est entièrement consacrée aux applications du principe Diviser pour Régner. Nous regarderons

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

UNIVERSITÉ DE CERGY Année 2012-2013 U.F.R. Économie & Gestion Licence d Économie et Mathématiques MATH104 : Mathématiques

UNIVERSITÉ DE CERGY Année 2012-2013 U.F.R. Économie & Gestion Licence d Économie et Mathématiques MATH104 : Mathématiques 1 UNIVERSITÉ DE CERGY Année 2012-201 U.F.R. Économie & Gestion Licence d Économie et Mathématiques MATH104 : Mathématiques Chapitre III : Polynômes 1 Fonctions polynômes & polynômes Définition 1. Soit

Plus en détail