Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation...

88
Coordonnées La programmation concrètement Quelques classiques Problèmes concrets Modélisation d’un phénomène Initiation à l’algorithmie Xavier Dupré September 3, 2010 Xavier Dupré Initiation à l’algorithmie 1 / 88

Transcript of Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation...

Page 1: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Initiation à l’algorithmie

Xavier Dupré

September 3, 2010

Xavier Dupré Initiation à l’algorithmie 1 / 88

Page 2: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Coordonnées

Xavier Dupré▶ [email protected]▶ http://www.xavierdupre.fr▶ http://www.xavierdupre.fr/mywiki/Enseignements

Xavier Dupré Initiation à l’algorithmie 2 / 88

Page 3: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Séances 2009

Cours▶ mardi 7 septembre 2010 16:30▶ mercredi 8 septembre 2010 16:30▶ vendredi 10 septembre 2010 08:30

TD▶ mercredi 8 septembre 2010 08:30▶ jeudi 9 septembre 2010 08:30

Xavier Dupré Initiation à l’algorithmie 3 / 88

Page 4: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Plan

CoordonnéesLa programmation concrètement

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Quelques classiquesTriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Problèmes concretsEtre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Modélisation d’un phénomèneMouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Xavier Dupré Initiation à l’algorithmie 4 / 88

Page 5: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Partie I

CoordonnéesLa programmation concrètement

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Quelques classiquesTriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Problèmes concretsEtre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Modélisation d’un phénomèneMouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Xavier Dupré Initiation à l’algorithmie 5 / 88

Page 6: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Citation

Une bonne classe, ce n’est pas un régiment qui marche au pas, c’est unorchestre qui travaille à la même symphonie. Et si vous avez hérité dupetit triangle qui ne sait faire que ting ting, ou de la guimbarde qui nefait que bloïng bloïng, le tout est qu’ils le fassent au bon moment, lemieux possible, qu’ils deviennent un excellent triangle, une irréprochableguimbarde, et qu’ils soient fiers de la qualité que leur contribution confèreà l’ensemble.

Daniel PennacChagrin d’école

Xavier Dupré Initiation à l’algorithmie 6 / 88

Page 7: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Déroulement

▶ Il n’est pas toujours évident de passer d’un problème concret à saréalisation informatique.

▶ Ce cours présente quelques aspects récurrents liés à l’utilisation del’informatique.

▶ Deux exemples :▶ ../exemple_eleve/xd_sudoku/sudoku.py▶ ../exemple_eleve/2008_foule_panique/python_foule.py

Le premier exemple propose un algorithme

simple pour résoudre les sudokus. Le

second est un projet réalisé en 2008 par

deux élèves qui n’avaient pas beaucoup de

notion de programmation.

Xavier Dupré Initiation à l’algorithmie 7 / 88

Page 8: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Utilisations classiques

Le plus souvent, il n’est pas besoin de savoir programmer.▶ Méthodes de plus en plus complexes accessibles :

▶ Excel, SPSS▶ MatLab, R▶ SAS

▶ Les données sont souvent représentées sous forme de matrices ou detables.

▶ Excel▶ bases de données, langage SQL

Xavier Dupré Initiation à l’algorithmie 8 / 88

Page 9: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Utilisations non classiques

Dans de nombreux cas, il n’existe pas de logiciels capables de traiter tousles cas :

▶ Les données sont rarement dans un format directement utilisables :prétraitement.

▶ Usage très spécifiques : actuariat, tables de mortalité, ...▶ Gros volumes de données : outils encore en phase de développement,

standardisation (logs des moteurs de recherches, plusieurstéro-octets par jour).

Et aussi :

▶ Utilisation d’outils existants propres à une entreprise.▶ Utilisation de méthodes non classiques : avantage concurrentiel.

Xavier Dupré Initiation à l’algorithmie 9 / 88

Page 10: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Quelques usages

Automatiser : partie informatique▶ L’envoi de mail (spam, publicité)▶ Informatiser la gestion administrative (gestion des congés maladies,

gestion des emplois du temps...)▶ Suivre l’évolution de marchés financiers, définir des alertes qui se

déclenchent de façon automatiques

Calculer : partie mathématique▶ Résolutation de systèmes d’équations▶ Prévisions (météo, économiques, ...)▶ Recherche d’un document sur Internet

Xavier Dupré Initiation à l’algorithmie 10 / 88

Page 11: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Données et Algorithmes

Quelque le soit le problème à résoudre, on distingue les données des mé-thodes qui les manipulent.

Représentation des donnéesC’est la première étape dans l’écriture d’un programme : commentreprésenter les données qu’on doit manipuler ? Est-ce une matrice, deuxmatrices, un hypercube, ... L’objectif est de pouvoir désigner ounommer chaque information que ces données contiennent.

AlgorithmeUne fois qu’une représentation des données a été choisie, il est possibled’écrire très précisément une méthode dont l’objectif est de calculer unrésultat à partir de ces données.

Xavier Dupré Initiation à l’algorithmie 11 / 88

Page 12: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Les élections

▶ Premier tour

département inscrits votants Bayrou Royal SarkozyAIN 372899 320859 62119 65449 109211AISNE 377475 315501 42000 72835 91118ALLIER 259537 221525 39700 55744 60994

▶ Second tour

départements inscrits votants Sarkozy RoyalAIN 372951 319523 185174 120679AISNE 377467 317396 161670 141338ALLIER 259503 220677 102426 107442

▶ Que peut-on apprendre de ces données ?

Xavier Dupré Initiation à l’algorithmie 12 / 88

Page 13: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Des manipulations possibles des données

▶ Manipulations simples▶ Part de votants, candidats gagnants, abstentions▶ Dessin de cartes▶ Déterminer le département dont les résultats se rapprochent le plus

des résultats globaux▶ Analyse

▶ Relier les votes à une autre source d’information : répartitioncatégories socio professionnelles, population urbaines, citadines ...

▶ Comparaison avec les élections passées▶ Modélisation : report des voix

▶ Définir ce qu’est le report des voix de façon mathématique▶ Définir ce qu’est une information cachée (ici les individus)▶ Calcul, estimation, problèmes numériques

Xavier Dupré Initiation à l’algorithmie 13 / 88

Page 14: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Problème : définition du département le plus représentatif

Définition littéralele département dont les résultats se rapprochent le plus des résultatsglobaux

Termes à préciser▶ Notion de proximité : départements proches ?▶ Premier tour, second tour ? Pour les deux tours à la fois ?

Xavier Dupré Initiation à l’algorithmie 14 / 88

Page 15: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Proximité

Utilisation d’une distance▶ Un département est défini par un vecteur de chiffres X = (x1, ..., )

département votants exprimés Bayrou Royal SarkozyAIN 320859 316598 62119 65449 109211

▶ Distance entre deux départements X et Y :d(X ,Y ) =

∑ni=1(xi − yi )2

Distance appropriée ?▶ Prise en compte de l’abstention ?▶ Départements sous et sur-peuplés ?▶ Distance entre un département et le pays entier ?

Xavier Dupré Initiation à l’algorithmie 15 / 88

Page 16: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Résultat globaux

DistanceSomme des différences des pourcentages obtenus par chaquecandidat d(X ,Y ) =

∑ni=1(

xi∑xi− yi∑

yi)2

Département le plus représentatif▶ = Il minimise la distance.▶ = Sa distance avec les votes nationaux est la plus petite.▶ = Sa distance correspond au minimum de toutes les distances.

Xavier Dupré Initiation à l’algorithmie 16 / 88

Page 17: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Tâches élémentaires

Trois parties▶ calcul des votes nationaux à partir des votes par département▶ calcul d’une distance▶ calcul du minimum

ExpressionLa formalisation de la méthode dépend souvent de l’outil utilisé pour lamettre en pratique.

▶ Excel, R, Python, C++, ...▶ pseudo langage informatique

Xavier Dupré Initiation à l’algorithmie 17 / 88

Page 18: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Représentation des données 1

Pour chaque département et chaque tour, on dispose de :▶ du nom du département▶ du nombre d’inscrits▶ du nombre de votants▶ du nombre de voix pour chacun des 12 candidats

On peut choisir comme représentation :▶ un tableau <nom> contenant le nom du département▶ un second tableau <inscrit> contenant le nombre d’inscrits▶ un troisième tableau <votant> contenant le nombre de suffrage exprimés

(incluant les blancs)▶ une matrice <voix> contenant les voix pour les départements et les candidats

Xavier Dupré Initiation à l’algorithmie 18 / 88

Page 19: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Représentation des données 2

Désigner une information▶ nom[i ] désigne le nom du ième département▶ voix[i ][j] désigne le nombre de voix du jème candidat pour le ième département

A quoi correspond ?

votant[i ]−12∑j=1

voix[i ][j]

Meilleure représentation ?Pourrait-on définir les suffrages non exprimés comme un 13ème candidat ?

Xavier Dupré Initiation à l’algorithmie 19 / 88

Page 20: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Pseudo-code : calcul des résultats pour le pays entier

ins = 0.0can = tableau [ 0.0, ... autant que de candidats ]

pour i dans {1,..., nombre de départements} :

ins = ins + inscrit [i]pour j dans {1, ..., nombre de candidats} :

can [j] = can [j] + voix [i][j]

Le décalage ou indentationpermet d’indiquer unedépendance : ce qui est décaléne peut être compris qu’entenant compte de la dernièreligne d’un décalage inférieur.

Lorsque les lignes sont alignées, unprogramme se lit comme un livre et se réalise- exécution - dans cet ordre. Lorsque leslignes ne sont pas alignées - avec undécalage -, l’exécution dépend d’unecondition ou boucle sur lui-même.

L’instruction vot = ...est uneaffectation. On assigne une valeur à unnom ou variable. A chaque qu’on utilisece nom, il désigne la même valeurjusqu’à ce qu’une nouvelle affectationremplace cette valeur.

La représentation du pays est donnée par les entiers vot, ins et le tableau can.

Qu’est-ce qui change si on définit les suffrages non exprimés comme un 13ème candidat ?

Xavier Dupré Initiation à l’algorithmie 20 / 88

Page 21: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Pseudo-code : distance

Calculer une distance à partir des voix n’aurait pas beaucoup de sens. Ilfaut la calculer à partir des pourcentages. Il faut deux étapes. On calculed’abord le nombre total de votes pour obtenir le dénominateur lors ducalcul de la distance lors de la seconde étape.

fonction distance (pays, candidat) :

s1 = 0.0s2 = 0.0pour i dans {1, ..., nombre de candidats} :

s1 = s1 + pays [i]s2 = s2 + candidat [i]

d = 0.0pour i dans {1, ..., nombre de candidats} :

d = d + (pays [i]/s1 - candidat [i]/s2)^2

Le résultat cherché est d.

Xavier Dupré Initiation à l’algorithmie 21 / 88

Page 22: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Pseudo-code : minimum

def minimum (pays, voix) :mini = 0dist = infinipour i dans {1,..., nombre de départements} :

if distance (pays, voix [i]) < dist :mini = idist = distance (pays, voix [i])

Le résultat cherché est mini.On obtient l’Isère au premier tour et la Guyane au second.

01-Besancenot 02-Buffet 03-Schivardi 04- Bayrou 05-Bové 06-Voynet 07-De VilliersIsère 3,8% 2,0% 0,3% 19,3% 1,5% 1,9% 1,9%France 4,1% 1,9% 0,3% 18,6% 1,3% 1,6% 2,2%

08-Royal 09-Nihous 10-Le Pen 11-Laguiller 12-SarkozyIsère 26,9% 0,9% 10,1% 1,1% 30,2%France 25,9% 1,1% 10,4% 1,3% 31,2%

Que faut-il changer pour obtenir les départements les plus éloignés ?

Xavier Dupré Initiation à l’algorithmie 22 / 88

Page 23: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Deux schémas à une boucle

Sommesomme = 0pour i dans {1,..., nombre d’éléments de tableau} :

somme = somme + tableau [i]

Minimumposition = 1pour i dans {1,..., nombre d’éléments de tableau} :

if tableau [i] < tableau [position] :position = i

Xavier Dupré Initiation à l’algorithmie 23 / 88

Page 24: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Somme avec une condition

Deux sommes en une seule bouclesomme1 = 0nb1 = 0somme2 = 0nb2 = 0pour i dans {1,..., nombre d’éléments de tableau} :

si tableau [i] verifie une condition :somme1 = somme1 + tableau [i]nb1 = nb1 + 1

sinonsomme2 = somme2 + tableau [i]nb2 = nb2 + 1

On pourrait par exemple appliquer ce schéma pour calculer la répartitiongauche-droite au sein d’un même département.

Xavier Dupré Initiation à l’algorithmie 24 / 88

Page 25: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Boucles imbriquées

Somme des minimasomme = 0pour i dans {1,..., nombre de lignes de mat} :

position = 1pour j dans { 2,...,nombre de colonnes de mat} :

if mat [i][j] < mat [i][position] :position = j

somme = somme + mat [i][position]

0 0 3 0 94 10 10 5 46 45 4 2 36 1 0 1 28 5 4 3 2

Xavier Dupré Initiation à l’algorithmie 25 / 88

Page 26: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Boucle dépendant d’une condition

Recherche du premier élément vérifianti = 1tant que tableau [i] vérifie une condition :

i = i + 1

Cette boucle permet par exemple de rechercher le premier départementdans l’ordre alphabétique qui vote majoritairement à gauche.

Que se passe-t-il si tous les départements votent à droite ?

La condition doit être invalidée au moins une fois.

Xavier Dupré Initiation à l’algorithmie 26 / 88

Page 27: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Partie II

CoordonnéesLa programmation concrètement

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Quelques classiquesTriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Problèmes concretsEtre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Modélisation d’un phénomèneMouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Xavier Dupré Initiation à l’algorithmie 27 / 88

Page 28: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Citation

Les jeunes Français sont également les plus nombreux de tous les Européensà déclarer qu’il est important pour eux d’être à la hauteur des attentes desautres et de ne pas trop se faire remarquer, comme s’ils étaient convaincusd’avoir à se plier avant tout à une norme sociale.

Olivier GallandLes jeunes français ont-ils raison d’avoir peur ?

Xavier Dupré Initiation à l’algorithmie 28 / 88

Page 29: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Exemple

../exemple_eleve/2009_othello/malakothello.py

Xavier Dupré Initiation à l’algorithmie 29 / 88

Page 30: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Utilité de ces algorithmes

Déjà réalisés▶ Les algorithmes présentés ici existent dans tous les langages de programmation.▶ Il est rarement utile de les réécrire. Le faire pourrait introduire des erreurs.

Culture informatique▶ Il existe plusieurs variantes. Il faut savoir choisir laquelle.▶ Cela permet de comprendre certains résultats plus rapidement.▶ Les connaître permet d’en imaginer d’autres plus rapidement.

Gros volumes de données▶ Nouveaux terrains de jeux : grille informatique.▶ Possibilité de gérer d’énormes volumes de données.▶ Il n’existe pas encore de standard dans ce domaine.

Xavier Dupré Initiation à l’algorithmie 30 / 88

Page 31: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Tri et les élections

ObjectifOn souhaite maintenant classes les départements du plus proche au pluséloigné des résultats obtenus pour la France.

Définition du problème▶ On dispose d’une liste de couple

(département, distance).▶ On veut trier les départements par ordre

de distance croissant.▶ On trie sur la distance mais c’est l’ordre

des départements qui nous intéresse.

La distance est ici celle définietransparent 15. Plus elle estpetite, plus les résultats dudépartements sont proches dupays dans son ensemble.

Xavier Dupré Initiation à l’algorithmie 31 / 88

Page 32: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Tri par sélection : idées

Le premier élémentC’est le plus petit élément du tableau : c’est le minimum.

Le second élémentC’est le plus petit élément du tableau sans tenir compte de l’élément trouvé en premier.

Le troisième élémentC’est le plus petit élément du tableau sans tenir compte des l’éléments trouvés en premier etsecond.

Idées1. On commence à n = 1.

2. On cherche le plus petit élément de la position n jusqu’à la fin du tableau.

3. On échange cet élément avec celui de la position n.

4. On passe de n à n + 1, puis on retourne l’étape 2 sauf s’il n’y a pas d’élément n + 1.

Xavier Dupré Initiation à l’algorithmie 32 / 88

Page 33: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Tri par sélection : algorithme

On souhaite trier le tableau T . T [i ] désigne l’élément i . n son nombred’élément.

pour i allant de 1 à n-1

p = i

pour j allant de i+1 à nsi T[j] < T[p] alors p = j

x = T[p]T[p] = T[i]T[i] = x

Le programme comporte deux boucles :▶ La première boucle sur les positions.▶ La seconde recherche le minimum.

Les dernières lignes opèrent ce qu’on appelle unéchange. Il est impossible d’échanger le contenude deux variables sans en créer une troisième. Celarevient à échanger le contenu de deux tiroirs sansjamais pouvoir mettre temporairement les deuxcontenus dans le même tiroir.

Xavier Dupré Initiation à l’algorithmie 33 / 88

Page 34: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Tri : illustration

Xavier Dupré Initiation à l’algorithmie 34 / 88

Page 35: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Retour aux élections

L’algorithme de tri opère sur les distances. Que fait-on des départe-ments auxquels les distances sont rattachées ?

pour i allant de 1 à n-1

p = i

pour j allant de i+1 à nsi T[j] < T[p] alors p = j

x = T[p]T[p] = T[i]T[i] = x

n = nom[p]nom[p] = nom[i]nom[i] = n

On suppose que T désigne le tableau desdistances et nom celui des départements.

Il suffit d’appliquer les mêmes échanges sur le

tableau des départements : il reste de cette façon

synchronisé avec celui des distances.

Xavier Dupré Initiation à l’algorithmie 35 / 88

Page 36: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Résultats : les dix départements extrêmes

les plus prochesISERESAONE-ET-LOIRECOTE-D’ORINDRE-ET-LOIREDROMEVAL-D’OISEHAUTES-ALPESSARTHEALPES-DE-HAUTE-PROVENCEDOUBS

les plus éloignésPYRENEES-ATLANTIQUESARIEGEGUYANEALPES-MARITIMESGUADELOUPEWALLIS-ET-FUTUNANOUVELLE-CALEDONIEREUNIONPOLYNESIE-FRANCAISEMARTINIQUE

Xavier Dupré Initiation à l’algorithmie 36 / 88

Page 37: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Métropole

Les couleurs foncées indiquent les

départements éloignés des résultats

nationaux. La couleur dépend de

la distance et non du rang du

département.

Xavier Dupré Initiation à l’algorithmie 37 / 88

Page 38: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Définition

DéfinitionLe coût d’un algorithme désigne le nombre d’opérations nécessaires àcet agorithme pour traiter un nombre fini de données. Ce coût estexprimé en fonction de la taille des données.

Le plus souvent, on se contente d’un ordre de grandeur : O(n). Cela per-met d’estimer l’évolution du temps si la taille des données double, quadru-ple, ...

Il existe plusieurs algorithmes de tri dont les coûts sont différents. Les plusrapides sont souvent les plus complexes.

Xavier Dupré Initiation à l’algorithmie 38 / 88

Page 39: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Cas du tri par sélection

Une opération : c’est une opération numérique, une comparaison, une affectation.

pour i allant de 1 à n-1

p = i

pour j allant de i+1 à nsi T[j] < T[p] alors p = j

x = T[p]T[p] = T[i]T[i] = x

n(n−1)2 ∼ O(n2) valeurs pour le couple (i, j)

Le programme comporte deux boucles :▶ La première va de 1 à n − 1.▶ La seconde va de i à n.

ji

23 34 4 4 ...5 5 5... ... ...

n − 1 n − 1 n − 1 n − 1n n n n

Le nombre d’opérations dans chaque boucle est constant, il ne dépend pas de n.

On ne garde que l’expression O(n2).

Xavier Dupré Initiation à l’algorithmie 39 / 88

Page 40: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Autres tris

▶ le tri par sélection▶ coût : O(n2)

▶ le tri quicksort▶ coût : O(n ln n) en moyenne▶ Un coût en moyenne signifie que selon l’ordre initial des données

dans le tableau, le coût peut varier. La moyenne sur toutes lespermutations possibles est O(n ln n).

▶ le tri par fusion▶ coût : O(n ln n)▶ inconvénient : il nécessite la création d’un second tableau

Xavier Dupré Initiation à l’algorithmie 40 / 88

Page 41: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Multiplication d’une matrice

On multiplie deux matrices carrées de di-mension n.

cij =∑

k aikbkj

▶ algorithme classique▶ coût : O(n3)

▶ algorithme de Strassen▶ coût : O(nlog2 7) ∼ O(n2,807)▶ L’algorithme fonctionne avec des matrices de dimension n = 2p.▶ Il devient intéressant pour les matrices de grandes tailles.

De nombreux algorithmes sont accessibles via un langage de programma-tion ou des logiciels. On peut même trouver des programmes déjà faitsvia Internet par exemple sur Wikipedia ou grâce des mots-clés commeNumerical Recipes saisis sur un moteur de recherche.

Xavier Dupré Initiation à l’algorithmie 41 / 88

Page 42: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Solutions optimales différentes selon les cas

Pour chercher une valeur v dans un tableau T , il suffit de le parcourir en entier et de s’arrêter

si on trouve la valeur cherchée.

pour i allant de 1 à nsi T[i] = v alors on a trouvé

si on n’a rien trouvé ici,c’est que la valeurn’est pas présente

Le coût de la recherche est en O(n) au pire.

Si on cherche N valeurs dans le tableau T , le coûtde ces recherches est O(Nn).

Peut-on faire mieux si N � n ?

Et si on triait le tableau d’abord avant de chercher ensuite ?

Xavier Dupré Initiation à l’algorithmie 42 / 88

Page 43: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Trier puis chercher

Si on suppose le tableau T trié, en comparant avec la valeur du milieu, on sait déjà dans quelle

moitié se trouve la valeur cherchée.

a = 1b = ntant que a <= b

m = (a+b)/2if v == T[m] alors on a trouvéif v < T[m] alors b = m-1sinon a = m+1

Le coût d’une recherche est alors de

ln2 n ∼ O(ln n).

Le coût de N recherches est O(n ln n) + O(N ln n) à comparer avec O(Nn).

La meilleure solution n’est pas la même selon le nombre de recherches.

Xavier Dupré Initiation à l’algorithmie 43 / 88

Page 44: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Tableau, Matrice, ...

Calcul matricielTous les langages de programmations évolués incluent la possibilité de créer des tableaux. Le

calcul matriciel est très répandu et il n’est plus besoin aujourd’hui de réinventer des roues

telles que le produit matriciel, une inversion matricielle, la recherche des valeurs propres, le

calcul d’une transformée de Fourrier...

Un concept : plusieurs descriptionIl est possible de créer des tableaux à une, deux, trois, ..., n dimensions. L’informatique

propose aussi plusieurs variantes d’un même concept là où on ne raisonne qu’avec un seul.

Ainsi on distingue les matrices creuses1 dont la plupart des coefficients sont nuls : elles évitent

de créer de grands tableaux là où il suffit de ne mémoriser que quelques coefficients.

1ou sparse matrixXavier Dupré Initiation à l’algorithmie 44 / 88

Page 45: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Dictionnaires

DéfinitionUn dictionnaire2 est un tableau dont les indices ne sont pasnécessairement entiers mais des valeurs qu’on peut ordonner.

M =

0 1 0 00 0 1 01 0 0 00 0 0 1

Les dictionnaires ne se bornent pas auxmatrices creuses, l’écriture suggérée àdroite a un sens :

M[1, 2] = 1

M[2, 3] = 1

M[3, 1] = 1

M[4, 4] = 1

M[1] = 1

M[1, 1] = 1

M[1, 2] = 1

M[1, 2, 1] = 1

2ou mapXavier Dupré Initiation à l’algorithmie 45 / 88

Page 46: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Les chaînes de caractères

DéfinitionLes chaînes de caractères3 modélisent une information textuelle : c’est un tableau decaractères, chaque caractère étant représenté par un code numérique.

s = "exemple"s = ’exemple’

Dans la plupart des langages, les chaînes decaractères apparaissent entre guillemets ou entreapostrophes.

L’ordinateur ne reconnaît que les nombres. La communauté informatique s’est mise d’accordpour toujours représenter le même caractère avec le même code sur toutes les machines infor-matiques. Le code ’65’ représente ’A’, 97 représente ’a’. A l’origine conçus par des anglophone,ces codes ont été étendus pour prendre en compte les accents, puis les caractères asiatiques.

La recherche au sein d’une chaîne de caractères est un problème assez fréquent résolu par lesexpressions régulières. Elles permettent par exemple de rechercher toutes les fois qu’on trouveles mots insécurité et problème proches dans un discours politique.

3 ou stringXavier Dupré Initiation à l’algorithmie 46 / 88

Page 47: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Distribution

Quels type de données choisiriez-vous pour calculer la distribution d’unepopulation selon :

▶ L’âge ?▶ Le prénom ?▶ L’âge des parents ?▶ Le revenu ?

Quel type de données choisir pour représenter un arbre généalogique ?Comment obtient-on l’ensemble des ancêtres d’une personne ?

Xavier Dupré Initiation à l’algorithmie 47 / 88

Page 48: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

TriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Mémoire et disque dur et...

La mémoire contient tout ce que l’ordinateur peut manipuler. Elle estlimitée à quelques giga-octets (Go).

Le disque dur peut être beaucoup plus grand. Pour manipuler son contenu,l’ordinateur doit le copier en mémoire : le disque dur entier ne peut êtremanipulé en même temps.

Ce sont plusieurs milliards de requêtes qu’un moteur de recherche reçoitpar jour. Supposons qu’elles tiennent sur un disque dur comme une longueliste de requêtes qui s’ajoutent les unes à la suite des autres au fur et àmesure qu’elles arrivent.

On suppose que le disque dur contient 10 milliards de requêtes mais quel’ordinateur ne peut en manipuler que 100.000 à la fois. Comment déter-miner le nombre de requêtes différentes ?

Xavier Dupré Initiation à l’algorithmie 48 / 88

Page 49: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Partie III

CoordonnéesLa programmation concrètement

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Quelques classiquesTriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Problèmes concretsEtre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Modélisation d’un phénomèneMouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Xavier Dupré Initiation à l’algorithmie 49 / 88

Page 50: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Citation

When people make significant investment decisions, they must depend onconfidence. Standard economic theory suggests otherwise. It describesa formal process for making rational decisions: people consider all theoptions available to them.

Georges A. Akerlof, Robert J., ShillerAnimal Spirits

Xavier Dupré Initiation à l’algorithmie 50 / 88

Page 51: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Exemple

../exemple_eleve/2009_cluedo/projetdepythondeNPONSetRPROM1.py

Xavier Dupré Initiation à l’algorithmie 51 / 88

Page 52: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Cas concrets

Quelles sont toutes les cases accessibles en 5 coups depuis le hall ?

A# # # ##

D

Combien de déplacements faut-ilpour aller de D à A ?

Xavier Dupré Initiation à l’algorithmie 52 / 88

Page 53: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Débuter et propager

?# # # ##

0

?# # # ## 2

2 1 22 1 0 1 2

2 1 2

?# # # ##

11 0 1

1

?# # # ## 3 2 33 2 1 2 3

3 2 1 0 1 2 33 2 1 2 3

Xavier Dupré Initiation à l’algorithmie 53 / 88

Page 54: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

De l’idée au programme

?# # # ## 3 2 3 4

4 3 2 1 2 3 44 3 2 1 0 1 2 3

4 3 2 1 2 3 4

On choisit une matrice de nombres :

M = [ [ 1000,1000,...,1000],[ 1000,1000,...,1000],...[ 1000,1000,...,1000] ]

Elle représente la distance depuis la case

(5, 6) jusqu’à n’importe quelle case.

Pourquoi 1000 ?

9 8 9 10 9 8 7 88 7 8 9 8 7 6 77 6 # # # # 5 66 5 # 3 2 3 4 55 4 3 2 1 2 3 44 3 2 1 0 1 2 35 4 3 2 1 2 3 4

On initialise :

M [3][3] = -1M [3][4] = -1M [3][5] = -1M [3][6] = -1M [4][3] = -1M [6][5] = 0

Il a fallu choisir une convention pour les

cases infranchissables.

Xavier Dupré Initiation à l’algorithmie 54 / 88

Page 55: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Essai 1/3

pour toutes les lignes ipour toutes les colonnes j

si M[i][j] = 1000 etM [i][j+1] >= 0 alorsM[i][j] = M [i][j+1]+1

si M[i][j] = 1000 etM [i][j-1] >= 0 alorsM[i][j] = M [i][j-1]+1

si M[i][j] = 1000 etM [i][j] >= 0 alorsM[i+1][j] = M [i+1][j]+1

si M[i][j] = 1000 etM [i-1][j] >= 0 alorsM[i][j] = M [i-1][j]+1

L’application de l’algorithme retourne uneerreur :

Il semble impossible d’accéder à certains

éléments car ils sont hors du tableau.

Xavier Dupré Initiation à l’algorithmie 55 / 88

Page 56: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Essai 2/3

pour toutes les lignes ipour toutes les colonnes j

si j <= 8 etM[i][j] = 1000 etM [i][j+1] >= 0 alorsM[i][j] = M [i][j+1]+1

si j > 1 etM[i][j] = 1000 etM [i][j-1] >= 0 alorsM[i][j] = M [i][j-1]+1

si i <= 8 etM[i][j] = 1000 etM [i][j] >= 0 alorsM[i+1][j] = M [i+1][j]+1

si i > 1 etM[i][j] = 1000 etM [i-1][j] >= 0 alorsM[i][j] = M [i-1][j]+1

L’application de l’algorithme donne :

1001 1001 1001 1001 1001 1001 1001 10021001 1001 1001 1001 1001 1001 1001 10021001 1002 -1 -1 -1 -1 1001 10021001 1002 -1 1001 1001 1001 1001 10021001 1001 1001 1001 1001 1001 1001 10021001 1001 1001 1 0 1001 1001 10021001 1001 1001 1001 1001 1001 1001 10021001 1001 1001 1001 1001 1001 1001 1002

Que s’est-il passé ?

Xavier Dupré Initiation à l’algorithmie 56 / 88

Page 57: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Essai 3/3

pour toutes les lignes ipour toutes les colonnes j

si j <= 8 etM[i][j] >= 1000 etM [i][j+1] >= 0 alorsM[i][j] = M [i][j+1]+1

si j > 1 etM[i][j] >= 1000 etM [i][j-1] >= 0 alorsM[i][j] = M [i][j-1]+1

si i <= 8 etM[i][j] >= 1000 etM [i][j] >= 0 alorsM[i+1][j] = M [i+1][j]+1

si i > 1 etM[i][j] >= 1000 etM [i-1][j] >= 0 alorsM[i][j] = M [i-1][j]+1

On change :si ... et M[i][j] = 1000 et ...

ensi ... et M[i][j] >= 1000 et ...

Pour obtenir :

1001 1001 1001 1001 1001 1001 1001 10011002 1002 1002 1002 1002 1002 1002 10021003 1003 -1 -1 -1 -1 1003 10031004 1004 -1 1001 1001 1001 1004 10041005 1005 1001 1002 1 2 3 41006 1006 1002 1 0 1 2 31007 1007 1003 2 3 4 5 61008 1008 1004 3 4 5 6 7

Que reste-t-il à faire ?

Xavier Dupré Initiation à l’algorithmie 57 / 88

Page 58: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Version finale

pour k allant de 1 à 12pour toutes les lignes i

pour toutes les colonnes jsi j <= 8 et

M[i][j] >= 1000 etM [i][j+1] >= 0 alorsM[i][j] = M [i][j+1]+1

si j > 1 etM[i][j] >= 1000 etM [i][j-1] >= 0 alorsM[i][j] = M [i][j-1]+1

si i <= 8 etM[i][j] >= 1000 etM [i][j] >= 0 alorsM[i+1][j] = M [i+1][j]+1

si i > 1 etM[i][j] >= 1000 etM [i-1][j] >= 0 alorsM[i][j] = M [i-1][j]+1

On répète l’opération aussi loin que peut nous

porter un coup de dés. Soit 12 fois :

9 8 9 10 9 8 7 88 7 8 9 8 7 6 77 6 -1 -1 -1 -1 5 66 5 -1 3 2 3 4 55 4 3 2 1 2 3 44 3 2 1 0 1 2 35 4 3 2 3 4 5 66 5 4 3 4 5 6 7

Le coût de l’algorithme est O(12.n2) = O(n2) où n

est la dimension de la matrice.

Il est possible de faire mieux mais ce n’est pas

toujours utile. Il vaut mieux conserver un

algorithme simple lorsqu’il n’est pas nécessaire de

faire plus efficace. Le programme est plus facile à

comprendre par la suite.

Xavier Dupré Initiation à l’algorithmie 58 / 88

Page 59: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Mémoriser le chemin

9 8 9 10 9 8 7 88 7↓ ←8 9 8 7 6 77 6↓ -1 -1 -1 -1 5 66 5↓ -1 3 2 3 4 55 4↓ 3 2 1 2 3 44 3→ 2→ 1→ 0 1 2 35 4 3 2 3 4 5 66 5 4 3 4 5 6 7

Le tableau final nous donne les cases quele joueur peut atteindre étant donné soncoup de dés. Il ne donne pas d’indicationquant au chemin qu’il faut suivre.

Le nombre de chemins est très grand (O(n!)). Et pourtant il est possi-ble de retrouver le chemin le plus court à condition de conserver un peud’information lors du calcul des distances.

Xavier Dupré Initiation à l’algorithmie 59 / 88

Page 60: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Mémoriser le prédécesseur

On peut conserver le voisin qui a permis d’obtenir la

distance.

si j <= 8 etM[i][j] >= 1000 etM [i][j+1] >= 0 alorsM[i][j] = M [i][j+1]+1

On utilise par exemple un second tableau de couples

(un tableau à trois dimensions) :

si j <= 8 etM[i][j] >= 1000 etM [i][j+1] >= 0 alorsM[i][j] = M [i][j+1]+1P[i][j] = (i,j+1)

Ou deux tableaux :

...Pi[i][j] = iPj[i][j] = j+1

(1, 2) (2, 2) (1, 2) (1, 5) (1, 6) (1, 7) (2, 7) (1, 7)(2, 2) *(3, 2) *(2, 2) (2, 5) (2, 6) (2, 7) (3, 7) (2, 7)(3, 2) *(4, 2) (0, 0) (0, 0) (0, 0) (0, 0) (4, 7) (3, 7)(4, 2) *(5, 2) (0, 0) (4, 5) (5, 5) (4, 5) (4, 6) (4, 7)(5, 2) *(5, 3) *(5, 4) (5, 5) (6, 5) (5, 5) (5, 6) (5, 7)(6, 2) (6, 3) *(6, 4) *(6, 5) *(0, 0) (6, 5) (6, 6) (6, 7)(7, 2) (7, 3) (7, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)(8, 2) (8, 3) (8, 4) (7, 4) (8, 4) (8, 5) (8, 6) (8, 7)

Xavier Dupré Initiation à l’algorithmie 60 / 88

Page 61: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Obtenir le chemin

On part de la case i = 2, j = 2.

P[i][j] indique la case d’avant.

i,j = 2,2i,j = P [i][j] # case d’avanti,j = P [i][j] # case d’encore avanti,j = P [i][j] # case d’encore avant...

Condition d’arrêt ?

On utilise une boucle qui s’arrête lorsqu’on atteint la

case de départ.

i,j = 2,2chemin = []tant que i,j != 0,0

ajoute la case i,j au chemini,j = P [i][j]

Le chemin est-il dans le bon sens ?

Résultat :

(2, 2)→ (3, 2)→ (4, 2)→ (5, 2)→ (5, 3)→ (5, 4)→ (6, 4)→ (6, 5)

Xavier Dupré Initiation à l’algorithmie 61 / 88

Page 62: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Retournement

i,j = 1,ntant que i < j

t = chemin [i]chemin [i] = chemin [j]chemin [j] = ti = i + 1j = j - 1

Résultat :

(6, 5)→ (6, 4)→ (5, 4)→ (5, 3)→ (5, 2)→ (4, 2)→ (3, 2)→ (2, 2)→(6, 5)

Xavier Dupré Initiation à l’algorithmie 62 / 88

Page 63: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Coloriage

On souhaite colorier la zone définie par le contour et un point qui indiquequel côté du contour on souhaite colorier.

Xavier Dupré Initiation à l’algorithmie 63 / 88

Page 64: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Matrice

Ce problème est identique au précédent. L’image est un quadrillage. Ilsuffit de :

▶ remplir la matrice avec la valeur 1000▶ associer à la couleur rouge le nombre -1▶ d’inscrir le nombre 0 au point qui indique le côté du contour à

colorierIl ne reste plus qu’à utiliser l’algorithme précédent. Toutes les cases en-dessous de 1000 seront rouges.

Xavier Dupré Initiation à l’algorithmie 64 / 88

Page 65: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Lors de la conception

▶ Découper un problème complexe en petits problèmes plus simples.▶ Dessiner.▶ Choisir des structures de données (matrices, dictionnaires).▶ Regarder si cela marche pour les premières et dernières itérations.

Xavier Dupré Initiation à l’algorithmie 65 / 88

Page 66: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Lors de l’écriture

▶ Rassembler les constantes au même endroit.▶ Utiliser des noms explicites.▶ Tester au fur et à mesure et jamais au dernier au moment.▶ Eviter de recopier la même chose plusieurs fois de suite, s’il y a une

erreur, il faudra corriger toutes les copies.

Xavier Dupré Initiation à l’algorithmie 66 / 88

Page 67: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Lors de l’exécution

▶ S’il y a des formules, tester le programme avec des données pourlesquelles vous connaissez le résultat.

▶ Si le programme est long, tester le programme avec des petits jeuxde données.

▶ Conserver des versions intermédiaires qui marchent.

Xavier Dupré Initiation à l’algorithmie 67 / 88

Page 68: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

En cas de problèmes

▶ Ne pas oublier de faire des pauses. Prendre du recul est souventutile.

▶ Essayer de localiser l’erreur.▶ Afficher les résultats intermédiaires.▶ Regarder sur Internet avec un moteur de recherche.▶ Penser aux effets de bords : indices trop grands ou trop petits pour

un tableau, une matrice.▶ Deux variables qui portent le même nom : ça prête à confusion.

Xavier Dupré Initiation à l’algorithmie 68 / 88

Page 69: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Etre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Quelques problèmes

Comment définir la phrase ou l’expression la plus courante d’un hommepolitique ou d’un auteur ?

Xavier Dupré Initiation à l’algorithmie 69 / 88

Page 70: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Partie IV

CoordonnéesLa programmation concrètement

PrésentationUtilité de la programmationExemple : les élections présidentiellesFormalisation du problèmeSchémas récurrents

Quelques classiquesTriCoût d’un algorithmeRecherche dichotomiqueStructure de données classiquesQuelques problèmes

Problèmes concretsEtre inventifAvancer à tâtonsProlongementSimilitudeQuelques règles pour s’en sortir

Modélisation d’un phénomèneMouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Xavier Dupré Initiation à l’algorithmie 70 / 88

Page 71: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Citation

C’est simplement le manque d’imagination, la recherche de la facilité et lemanque de bonne volonté qui ont condamné l’habitant des villes modernesà vivre dans les quarties surpeuplés et informes, et à supporter sa vie durant,le spectacle abrutissant des immeubles de rapport et des alignements defaçades éternellement semblables. Certes la douce puissance de l’habitudeémousse notre sensibilité et nous rend moins vulnérables à ces impressions.

Camillo SitteL’art de bâtir des villes

Xavier Dupré Initiation à l’algorithmie 71 / 88

Page 72: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Exemple

../exemple_eleve/xd_paris_evolution/voisinage_evolution_cercle.py

Xavier Dupré Initiation à l’algorithmie 72 / 88

Page 73: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Carte scolaire

Le prix des appartements à Paris ne cessent de grimperrejetant les populations les moins aisées en banlieue. Il n’y apas une seule raison qui explique cela :

▶ Les gens qui se ressemblent ont tendance à serassembler. On choisit son futur quartier pour saproximité avec un emploi, pour l’atmosphère, pour lesgens qui y résident déjà.

▶ Une autre raison est l’actuelle carte scolaire quiincitent des futurs parents à s’installer dans un quartieroù l’éducation accessible correspond à celle qu’ilsveulent donner à leurs enfants. Un mauvais lycée ferafuir les parents, un bon lycée les attirera. Cephénomène a aussi un impact sur l’immobilier.

On cherche à reproduire au moyen d’une simulation

informatique le comportement des Parisiens de façon à

anticiper les évolutions sociologiques au sein de Paris. Le

biais recherché est ici une tendance des gens à se

regrouper avec plus facilité s’ils sont plus riches.

Xavier Dupré Initiation à l’algorithmie 73 / 88

Page 74: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Le décor

Pour faire simple, on considère que :

▶ La ville est composée de pâtés de maisons.▶ Ces pâtés sont disposés selon une grille

perpendiculaire.▶ Chaque foyer appartient à une des 6 catégories

(de 0 à 5), de la moins aisée à la plus aisée.▶ Un pâté ne contient que des foyers de la

même classe.▶ La ville est initialement un cercle.▶ Les classes sont initialement tirées

aléatoirement.

Xavier Dupré Initiation à l’algorithmie 74 / 88

Page 75: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Les gens

Il faut maintenant gérer les interactions entre des foyersvoisins. Pour le moment, on suppose que ce sont les seulespossibles.

▶ On suppose deux voisins v et w de classes i , j. Si v estentouré de "j" et que w est entouré de "i" alors ilspermutent.

▶ Si un voisin est suffisamment plus riche que son voisin,il s’étendra.

▶ La ville s’étend et colonise des espaces inhabités qui lesont en premier par des foyers de la même classe quecelle des plus proches.

Est-ce réaliste ? Est-il possible d’apprendre d’une telle simulation ?

Xavier Dupré Initiation à l’algorithmie 75 / 88

Page 76: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

De Paris aléatoire à Paris riche

Les couleurs rouges représentent les plus

riches, les oranges la classe moyenne, les

ocres les moins aisés.Xavier Dupré Initiation à l’algorithmie 76 / 88

Page 77: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Stabilité de la simulation

Les résultats peuvent être très variables d’une simulation à l’autre. Maisil se peut que certains soient plus ou moins constants après un nombresuffisant d’itérations :

▶ la proportion de la population riche, moyenne, pauvre sur l’ensembleau centre de Paris

▶ le nombre de foyers n’ayant pas des voisins semblables.▶ caractéristiques géographiques de l’extension

simulation 0 0 1 2 3 4 5 (riche)simulation 1 509 582 455 922 1271 2141simulation 2 927 381 481 562 1872 2012simulation 3 480 1110 755 764 930 2027simulation 4 669 276 601 1144 1881 1346simulation 5 467 734 579 1609 1121 1978itération 0 325 337 318 310 324 347

Xavier Dupré Initiation à l’algorithmie 77 / 88

Page 78: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Paris actuelle

Xavier Dupré Initiation à l’algorithmie 78 / 88

Page 79: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Hypothétique futur de Paris

Pour prévoir l’avenir, il faudrait :▶ Connaître deux configurations à des dates

éloignées.▶ Ajuster le modèle pour simuler le passage

d’une à l’autre.▶ Continuer la simulation...

Xavier Dupré Initiation à l’algorithmie 79 / 88

Page 80: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Exemple de simulation : propagation de la grippe

▶ blanc : personne saine▶ vert : personne malade▶ noir : personne morte▶ bleue : personne guérie

Xavier Dupré Initiation à l’algorithmie 80 / 88

Page 81: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Modélisation d’un individu

▶ Il va au bon lui semble (son accélération est aléatoire).▶ S’il est malade, il se déplace moins vite.▶ S’il se rapproche d’un malade à une distance v , il a une probabilité

p1 de tomber malade à son tour.▶ Au bout d’un temps t, il a une probabilité p2 de mourir et 1− p2 de

guérir.▶ S’il guérit, il ne peut plus tomber malade.▶ Personne ne connaît l’état de l’autre.▶ On suppose qu’il y a une probabilité α de malades au début de la

simulation.

Le modèle dépend de cinq paramètres : v , p1, p2, t, α. On peut ajouter unsixième paramètre qui est la densité d de la population. Il est cependant reliéà v .

Xavier Dupré Initiation à l’algorithmie 81 / 88

Page 82: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Graphes, probabilité de mourir p2

Nombre de morts en fonction de la probabilité de

mourir (p2).

Le taux de mortalité semble linéaire par rapport à

la probabilité de mourir.

Durée de l’épidémie en fonction de la probabilité de

mourir (p2).

La durée de l’épidémie est constante en fonction

de la probabilité de mourir (p2). C’est un résultat

attendu puisqu’une fois la maladie passée, un

sujet peut guérir ou mourir mais n’a plus aucun

impact sur la suite.

Xavier Dupré Initiation à l’algorithmie 82 / 88

Page 83: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Graphes, probabilité de transmission p1

Nombre de morts en fonction de la probabilité de

transmission (p1).

Le taux de mortalité semble linéaire par rapport à

la probabilité de transmission avec une variance

d’autant plus grande que la probabilité de

transmission est grande.

Durée de l’épidémie en fonction de la probabilité de

transmission (p1).

La durée de l’épidémie ne paraît pas linéaire en

fonction de la probabilité de transmission (p1).

Xavier Dupré Initiation à l’algorithmie 83 / 88

Page 84: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Graphes, proportion initiale de malades

Nombre de morts en fonction du nombre initial de

malades (α).

Le taux de mortalité croît vite puis stagne jusqu’à

atteindre le taux de mortalité p2. Il faut peu de

malades pour commencer une épidémie.

Durée de l’épidémie en fonction du nombre initial de

malade (α).

Lorsqu’il y a peu de malades, l’incertitude quant

à la durée de l’épidémie est très grande. Elle peut

survenir ou s’éteindre. Plus il y a de malades,

plus la fin de l’épidémie est proche et plus

l’incertitude est faible quant à cette durée.

Xavier Dupré Initiation à l’algorithmie 84 / 88

Page 85: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Utilité

La modélisation proposée ici est loin de la réalité. Un carré uniformémentdense est loin d’une densité de population concentrée dans les grandesvilles.

Ce modèle donne une idée de la difficulté de prévoir l’évolution d’uneépidémie, de la grande variabilité des résultats.

Le comportement d’un individu ne change pas au cours de la simulation.Il pourrait être réceptif à une campagne d’information. On pourrait alorsobserver l’impact sur la propagation de l’épidémie.

Les simulations n’aboutissent pas à des résultats fiables. En imitant lecomportement des individus (micro), elles offrent un moyen simple d’avoirdes idées pour obtenir des résultats au niveau d’une population (macro).

Xavier Dupré Initiation à l’algorithmie 85 / 88

Page 86: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Décrire un individu ou les lois qui régissent une population

Les deux approches visent l’observation de variables macro.

MicroOn modélise les individus qui interagissent entre eux et avec l’extérieurau travers de comportements simples. L’individu est le lien entre lesdifférentes variables macro dont on observe l’évolution.

MacroOn cherche à définir l’évolution de variables macro au travers d’une ouplusieurs relations quantitatives.

Paramètres des modèlesIls peuvent être estimés depuis des données réelles. Ils peuvent égalementêtre choisis de telle sorte que le système étudié reproduisent fidèlementles variables macro observées sur une période passée.

Xavier Dupré Initiation à l’algorithmie 86 / 88

Page 87: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Quel type d’approche choisir ?

▶ Définir le prix de l’abonnement Vélib ?▶ Définir le nombre de Vélib ?▶ Définir les emplacements des stations de Vélibs ?▶ Définir la durée au delà de laquelle le vélo dévient payant ?

Xavier Dupré Initiation à l’algorithmie 87 / 88

Page 88: Initiation à l'algorithmie - Xavier Dupré, ENSAE, Microsoft · 8 5 4 3 2 Xavier Dupré Initiation à l’algorithmie 25 / 88. Coordonnées La programmation concrètement Quelques

CoordonnéesLa programmation concrètement

Quelques classiquesProblèmes concrets

Modélisation d’un phénomène

Mouvement sociologiqueParisPropagation de la grippeApproche micro, approche macroConclusion

Conclusion

Dans le cadre de cette école, l’informatique est unoutil au service de vos idées. L’objectif est d’éviterque cet outil ne devienne un frein.

La plupart des langages de programmation sontbâtis autour d’une base commune et sont spécialiséspour quelques usages spécifiques. Comprendre cettebase commune permet d’utiliser rapidement denouveaux langages.

Excès

Xavier Dupré Initiation à l’algorithmie 88 / 88