Vous êtes sur la page 1sur 9

Erreur ! Il n'y a pas de texte répondant à ce style dans ce document.

ROLE DES ALGORITHMES

Master en Informatique

Juillet 2023

©Youssou DIENG
ydieng@univ-zig.sn
Rôle des algorithmes

Table des matières


1 - Introduction 2
1.1 - Exemple : Problème de tri 2
1.2 - En quoi l’étude des algorithmes est-elle utile ? 3

2 - Quels sont les types de problème susceptibles d’être résolus par des algorithmes ?
3
2.1 - Le projet du génome humain 3
2.2 - Internet 4
2.3 - Le commerce électronique 4
2.4 - L’industrie et le commerce 4

3 - La conception et analyse d’algorithme 4


3.1 - Analyse d’algorithme 5

4 - Problèmes difficiles 6
4.1 - En quoi un problème NP-complet est-il intéressant ? 6
4.2 - Le problème du voyageur de commerce 6
4.3 - Problème de la Somme d’entiers7

5 - ALGORITHMES & TECHNOLOGIES 7


5.1 - Efficacité 7

Page 1 sur 9
Rôle des algorithmes

1 - Introduction
Dans ce chapitre, le souhait est de permettre aux lecteurs d’avoir une compréhension
plus précise sur ce qu’est un algorithme ; sur l’importance et l’utilité d’étudier des
algorithmes ainsi que sur le rôle des algorithmes par rapport aux autres technologies
informatiques. Les algorithmes sont alors présentés comme une technologie, au même titre que
les matériels, les interfaces utilisateur graphique, les systèmes orientés objet ou les réseaux.
A travers des exemples, ce chapitre donne une présentation générale des algorithmes et
de leur place dans les systèmes informatiques modernes. Le rappel de la définition ci-dessous
sera utile pour la suite.

Définition : Un algorithme est une procédure de calcul bien définie 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 une séquence d’étapes de calcul qui transforment l’entrée en
sortie dans le but de résoudre un problème bien spécifié. L’énoncé du problème spécifie, en
termes généraux, la relation désirée entre l’entrée et la sortie et, l’algorithme décrit une
procédure de calcul spécifique permettant d’obtenir cette relation entrée/sortie.
Un algorithme peut être spécifié en langage humain ou en langage informatique, mais
peut aussi être basé sur un système matériel. L’unique obligation est que la spécification
fournisse une description précise de la procédure de calcul à suivre.

1.1 - Exemple : Problème de tri


Entrée : Une séquence A de n nombre « a1, a2, …,an »
Sortie : Une permutation (réorganisation) A’ = « a’1, a’2, …,a’n » de la séquence en
entrée telle que a’1≤ a’2≤ …≤ a’n.

Page 2 sur 9
Rôle des algorithmes

a1, a2, a3,


A,
… an
Séquence
de n
nombres

Séquence A' = a’1 ≤ a’2 ≤ … ≤a’n

En effet, si on considère la séquence A = “31, 41, 59, 26, 41, 58”, alors un algorithme
de trie produit en sortie la suite“26, 31, 41, 41, 58, 59”. La suite donnée en entrée est appelée
instance du problème de tri. Le tri est une opération majeure en informatique (phase
intermédiaire de beaucoup de programme).

1.2 - En quoi l’étude des algorithmes est-elle utile ?


Un algorithme incorrect risque de ne pas se terminer pour certaines instances en entrée,
voire de se terminer sur une réponse autre que celle désirée. Un algorithme est dit correct
si, pour chaque instance en entrée, il se termine en produisant la bonne sortie. Un algorithme
correct résout le problème donné.
L’étude d’un algorithme permet alors de vérifier sa correction à savoir si l’algorithme
marche est-ce qu’il marche très bien ou pas en regardant si la complexité trop grande ou
pas ; ou que l’algorithme ne marche pas du tout (algorithme faux ou non conforme).

2 - Quels sont les types de problème


susceptibles d’être résolus par des
algorithmes ?

2.1 - Le projet du génome humain


Dans le Projet di génome humain, on cherche à Identifier les 100 000 gènes de l’ADN
humain, à déterminer les séquences des 3 milliards de paires de bases chimiques qui constituent
l’ADN humain, à stocker ces informations dans des bases de données et à développer des outils
d’analyse de données. Chacune de ces étapes exige des algorithmes très élaborés.

Page 3 sur 9
Rôle des algorithmes

2.2 - Internet
Internet permet à des gens éparpillés un peu partout dans le monde d’accéder rapidement
à toutes sortes de données. Tout cela repose sur des algorithmes intelligents qui permettent de
gérer et manipuler de grosses masses de données. Comme exemples de problèmes à résoudre,
nous pouvons citer le problème de la recherche de routes optimales pour l’acheminement des
données ou d’utiliser un moteur de recherche pour trouver rapidement les pages contenant tel
ou tel type de données.

2.3 - Le commerce électronique


Le commerce électronique permet de négocier et d’échanger, de manière électronique,
des biens et services. Il exige que l’on préserve la confidentialité des données telles que numéros
de carte de crédit, mots de passe, relevés bancaires.

La cryptographie à clé publique et les signatures numériques qui font partie des
technologies fondamentales employées dans ce contexte, s’appuient sur des algorithmes
numériques et sur la théorie des nombres.

2.4 - L’industrie et le commerce


Il est souvent question d’optimiser l’allocation de ressources limitées. Par exemples on
peut prendre le cas d’une compagnie pétrolière qui veut savoir où placer ses puits de façon à
maximiser les profits escomptés. Ou encore un candidat à la présidence veut savoir dans quels
supports publicitaires il doit investir pour maximiser ses chances d’élection. Un autre exemple
qu’on peut prendre est le cas d’une compagnie aérienne qui désire réaliser l’affectation des
équipages aux vols de telle façon que les coûts soient minimisés, les vols assurés sans
défaillance et la législation respectée. En fin le dernier cas est un fournisseur de services
Internet qui veut savoir où placer des ressources supplémentaires pour desservir ses clients de
manière plus efficace.

3 - La conception et analyse d’algorithme


La conception d’algorithme n’est pas sans difficulté ; il est souvent question de structure
de données ou de problèmes difficiles. Les techniques de conception et d’analyse d’algorithme
sont alors, utiles pour permettre de créer des algorithmes, de prouver qu’ils fournissent la bonne
réponse et de comprendre leur efficacité.

Page 4 sur 9
Rôle des algorithmes

3.1 - Analyse d’algorithme


Analyser un algorithme c’est de s’assurer de sa correction ainsi que des ressources
nécessaires à son exécution. On ne peut pas, cependant, analyser n’importe quel algorithme.
Des algorithmes très simples sont parfois extrêmement difficile à analyser. Pour illustration,
nous présentons dans la suite les algorithmes de Goldbach et de Syracuse.

1.3.1.1 - Algorithme de Goldbach


Entrée : Un entier paire n > 2
Sortie : Un booléen
1. Si n = 4, alors retourner VRAI
!
2. Pour i = 1 à -1 faire
"
a. Si 2i +1 et n – (2i +1) sont deux nombres premiers, alors retourner VRAI
3. Retourner FAUX

Cet algorithme teste si le nombre pair n > 2 est la somme de deux nombres premiers.
Pour n = 30, l’algorithme va tester la primalité de :
¡ 3 et 27 ? NON ;
¡ 5 et 25 ? NON ;
¡ 7 et 23 ? OUI.
Question : Est-ce que : ∀n > 2 pair, Goldbach(n) = Vrai ?
Ce problème est non résolu et connu sous le nom de Conjecture de Goldbach. Elle est
vérifiée pour tout entier n < 1.1×1018 (février 2008).

1.3.1.2 - Algorithme de Syracuse


1. Tant que n > 1 faire
a. Si n est pair, alors n = n/2
b. Sinon n = 3n+1

Question : Est-ce que : ∀n ∈ Ν, Syracuse(n) s’arrête ?


Ce problème est non résolu (problème appelé aussi « 3x + 1 »). C’est vrai pour tout
entier n < 262 (janvier 2008 - T. Oliveira e Silva), ce qui est supérieure à quatre milliards
de milliards !
De manière générale, il est indécidable de savoir si un programme ou algorithme donné
s’arrête ou boucle indéfiniment.

Page 5 sur 9
Rôle des algorithmes

1.3.1.3 - Structures de données


Une structure de données est un moyen de stocker et organiser des données pour faciliter
l’accès à ces données et leur modification. Il n’y a aucune structure de données qui réponde à
tous les besoins, de sorte qu’il importe de connaître les forces et limitations de plusieurs de ces
structures.

4 - Problèmes difficiles
Une bonne partie des algorithmes que vous avez rencontré jusqu’à maintenant concerne
les algorithmes efficaces. Notre mesure habituelle de l’efficacité est la vitesse, c’est-à-dire
la durée que met un algorithme à produire ses résultats. Cependant, il existe des problèmes,
pour lesquels on ne connaît aucune solution efficace. En d’autres termes, il existe des
problèmes pour lesquels il n’existe pas d’algorithme publié. Il existe un sous-ensemble
intéressant de ces problèmes, connus sous l’appellation de problèmes NP-complets. On n’a
jamais trouvé d’algorithme efficace pour un problème NP-complet, mais personne n’a
jamais prouvé qu’il ne peut pas exister d’algorithme efficace pour un problème. Autrement
dit, on ne sait pas s’il existe ou non des algorithmes efficaces pour les problèmes NP-
complets.

4.1 - En quoi un problème NP-complet est-il intéressant ?


L’ensemble des problèmes NP-complets offre la propriété remarquable suivante :
• s’il existe un algorithme efficace pour un quelconque de ces problèmes, alors il existe
des algorithmes efficaces pour tous.
• Plusieurs problèmes NP-complets ressemblent, sans être identiques, à des problèmes
pour lesquels nous connaissons des algorithmes efficaces.

4.2 - Le problème du voyageur de commerce


Prenons le cas d’une entreprise de camionnage ayant un dépôt central. Chaque jour, elle
charge le camion au dépôt puis l’envoie faire des livraisons à plusieurs endroits. À la fin de la
journée, le camion doit revenir au dépôt de façon à pouvoir être rechargé le jour suivant.

Pour réduire les coûts, l’entreprise veut choisir un ordre de livraisons tel que la distance
parcourue par le camion soit minimale. Ce problème, qui n’est autre que le fameux « problème
du voyageur de commerce », est un problème NP-complet. Il n’y a pas d’algorithme efficace
connu.
Page 6 sur 9
Rôle des algorithmes

Sous certaines hypothèses, cependant, il existe des algorithmes efficaces donnant une
distance globale qui n’est pas trop éloignée de la distance minimale. Ce genre d’algorithmes
sont dits « algorithmes d’approximation ».

4.3 - Problème de la Somme d’entiers


Soient donnés une suite finie d’entiers x1,...,xk et un entier s. Le problème qui est de
savoir s’il est possible d’extraire une sous-suite de la suite donnée dont la somme est égal à s.
En d’autres termes, il s’agit de trouver suite croissante d’indices 1 ≤ 𝑖! < 𝑖" < …< 𝑖# ≤ k telle
que x𝑖! + x𝑖" +…+ x𝑖# = s.

5 - ALGORITHMES & TECHNOLOGIES


Si on supposait que les ordinateurs soient infiniment rapides et que leurs mémoires
soient gratuites. Alors, la question légitime à se poser est : faudrait-il étudier les algorithmes ?

La réponse est oui, ne serait-ce que pour montrer que la solution ne boucle pas
indéfiniment et qu’elle se termine avec la bonne réponse. En effet, si les ordinateurs étaient
infiniment rapides, alors toute méthode correcte de résolution d’un problème ferait l’affaire.
Vous voudriez sans doute que votre solution entre dans le cadre d’une bonne méthodologie
d’ingénierie (c’est-à-dire qu’elle soit bien conçue et bien documentée). Cependant, vous
privilégierez le plus souvent la méthode qui est la plus simple à mettre en œuvre.

5.1 - Efficacité
Il arrive souvent que des algorithmes conçus pour résoudre le même problème diffèrent
fortement entre eux en termes d’efficacité. Ces différences peuvent être bien plus importantes
que celles dues au matériel et au logiciel.

Page 7 sur 9
Rôle des algorithmes

En effet, l’algorithme du Tri par insertion prend un temps approximativement égal à


c1𝑛" pour trier n éléments, c1 étant une constante indépendante de n. Ce qui veut dire que la
durée du tri est, grosso modo, proportionnelle à 𝑛" .

Cependant l’algorithme du Tri par fusion prend un temps approximativement égal à


c2n lg n, où lgn désigne log2 n et c2 est une autre constante indépendante, elle aussi, de n. Le
tri par insertion a généralement un facteur constant inférieur à celui du tri par fusion, de sorte
que c1 < c2. Les facteurs constants peuvent être beaucoup moins significatifs, au niveau de la
durée d’exécution, que la dépendance par rapport au nombre n de données à trier.

Si on compare un ordinateur rapide (ordinateur A) exécutant un tri par insertion et un


ordinateur lent (ordinateur B) exécutant un tri par fusion. Ces deux machines doivent chacune
trier un tableau d’un million de nombres.

Supposez que l’ordinateur A exécute un milliard d’instructions par seconde et que


l’ordinateur B n’exécute que dix millions d’instructions par seconde (A est 100 fois plus rapide
que l’ordinateur B)

Supposons que pour le trie de n nombres, l’ordinateur A termine au bout de 2n2


instructions et que B termine au bout de 50n lg n instructions.
Pour un nombre n = 1 000 000 de nombres entiers à trier,

1- l’ordinateur A demande

2. (10$ )" 𝑖𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛𝑠


= 2000 𝑠𝑒𝑐𝑜𝑛𝑑𝑒𝑠
10% 𝑖𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛𝑠/𝑠𝑒𝑐𝑜𝑛𝑑𝑒
ce qui équivaut à 1jour 9h 20 s ; alors que
2- l’ordinateur B demande

50. 10$ log 10$ 𝑖𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛𝑠


≈ 100 𝑠𝑒𝑐𝑜𝑛𝑑𝑒𝑠
10& 𝑖𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛𝑠/𝑠𝑒𝑐𝑜𝑛𝑑𝑒

ce qui équivaut à 1h 40mn.

Page 8 sur 9

Vous aimerez peut-être aussi