Mathématiques Discrètes et Algorithmique - LMPT

publicité
Université François Rabelais de Tours
Laboratoire de Mathématiques et Physique Théorique
Mathématiques Discrètes et Algorithmique
UE 5-4 Option
Semestre 5
1. Introduction
L’objectif de ce cours est de se familiariser avec la notion d’algorithme : être capable d’écrire des algorithmes, d’étudier leur complexité et de les implémenter.
Voici une définition informelle (il n’y en aura pas de formelle !) d’un algorithme : procédure de calcul bien
défini qui prend en entrée une valeur, ou un ensemble de valeurs, et qui donne en sortie une valeur ou
un ensemble de valeurs. Un algorithme est donc en quelque sorte une "recette de cuisine". Puisque la
procédure doit être bien définie, il est nécessaire d’utiliser un langage spécifique évitant toute ambiguité :
deux personnes, qui ne peuvent pas communiquer entre-elles, doivent être capables d’effectuer la même
suite d’opérations.
Nous décrirons les algorithmes en pseudo-code, c’est à dire sans faire référence à un programme informatique. Le pseudocode est la plupart du temps “naturellement” compréhensible. La seule chose à savoir
est que “ :=” signifie “devient égal à” et que le “=” (ainsi que “<,>,≤, ≥”) est un test d’égalité, la réponse étant soit “oui” soit “non”. Nous utiliserons aussi les notations suivantes : le ième élément d’une liste
L = (a1 , a2 , . . . , an ) (ou L = [a1 , . . . , an ]) sera noté L[i]. L’entrée (i, j) d’une matrice A = (ai,j ) sera notée
A[i][j]. Donnons tout de suite un exemple pour se fixer les idées.
Données : Liste d’entiers (a1 , a2 , . . . , an )
Résultat : max ai
max := a1
pour i=2 à n faire
si max < ai alors
max := ai
fin
fin
Algorithme 1: Déterminer le maximum d’une liste d’entiers
La distinction algorithme-programme est importante :
• Un algorithme est la description, la plus imagée possible, d’une suite d’actions qui ne dépendent d’aucune
machine ;
• Un programme est un texte très lourd, très pointilleux, destiné à un compilateur. Il est écrit dans un
langage donné (pour nous ce sera Python)
Nous utiliserons le logiciel Sage : c’est un logiciel libre de mathématiques. Il combine la puissance de
nombreux programmes libres dans une interface commune basée sur le langage de programmation Python.
Le programme Python de l’algorithme 1 est comme suit.
def maximum(L)
max=L[1]
for i in range(1,len(L)):
if L[i]>max:
max=L[i]
return max
Programme Python pour déterminer le maximum
1
Téléchargement