Évaluation expérimentale : Mesure empirique du temps d'exécution d'un algorithme.
Chronométrage : Utilisation d'un chronomètre logiciel pour mesurer le temps de calcul.
- Enregistrer le temps avant l'exécution de l'algorithme
- Exécuter l'algorithme sur un jeu de données donné
- Enregistrer le temps après l'exécution
- Calculer la différence pour obtenir le temps d'exécution
- Répéter plusieurs fois pour réduire les erreurs
Importer un module de chronométrage (time, timeit, etc.)
Créer un tableau de test de taille n
Enregistrer le temps initial t1
import time
t1 = time.time()
# Exécuter l'algorithme
resultat = somme_tableau(tableau)
t2 = time.time()
temps_execution = t2 - t1
Calculer la différence de temps
Temps d'exécution = t2 - t1
Répéter la mesure plusieurs fois
Calculer la moyenne pour réduire les variations
| Essai | Temps (s) | Commentaire |
|---|---|---|
| 1 | 0.0012 | Temps de base |
| 2 | 0.0009 | Meilleure performance |
| 3 | 0.0011 | Moyenne |
| 4 | 0.0013 | Légère variation |
| Moyenne | 0.0011 | Résultat final |
Le temps d'exécution de l'algorithme de somme sur un tableau de 1000 éléments est de 0.0011 secondes en moyenne.
• Précision : Répéter les mesures pour réduire les erreurs
• Isolation : Minimiser les interférences extérieures pendant la mesure
• Reproductibilité : Utiliser des données fixes pour comparer les résultats
Comparaison expérimentale : Évaluation comparative des performances de plusieurs algorithmes.
Équité : Les algorithmes doivent être testés dans les mêmes conditions.
Implémenter les deux algorithmes à comparer
Tri par sélection et tri à bulles
Générer un tableau de taille n avec des valeurs aléatoires
Utiliser le même tableau pour les deux algorithmes
Chronométrer le tri par sélection
Temps pour tri_sélection(tableau1) = t1
Chronométrer le tri à bulles
Temps pour tri_bulles(tableau2) = t2
Comparer t1 et t2
Identifier l'algorithme le plus performant
| Algorithme | Temps (s) | Complexité | Classement |
|---|---|---|---|
| Tri sélection | 0.125 | O(n²) | 1er |
| Tri bulles | 0.185 | O(n²) | 2e |
| Tri fusion | 0.008 | O(n log n) | 3e |
Le tri par sélection est plus rapide que le tri à bulles pour un tableau de 500 éléments.
• Conditions égales : Même jeu de données pour tous les algorithmes
• Isolation : Réinitialiser les données entre chaque test
• Comparaison : Analyser les différences de performance
Tracé de courbes : Visualisation graphique de la relation entre la taille des données et le temps d'exécution.
Analyse visuelle : Permet d'observer la tendance et de valider la complexité théorique.
Choisir différentes tailles de données : n = 100, 200, 500, 1000, 2000
Pour chaque taille, mesurer le temps d'exécution de l'algorithme
Effectuer les mesures et les enregistrer dans un tableau
Assurer la précision en répétant les mesures
Tracer le graphique avec la taille en abscisse et le temps en ordonnée
Identifier la tendance (linéaire, quadratique, etc.)
Comparer la courbe expérimentale avec la complexité théorique
Valider ou infirmer les hypothèses sur la complexité
| Taille (n) | Temps (ms) | T/n (ms) | T/n² (ms) |
|---|---|---|---|
| 100 | 0.5 | 0.005 | 0.00005 |
| 200 | 2.0 | 0.010 | 0.00005 |
| 500 | 12.5 | 0.025 | 0.00005 |
| 1000 | 50.0 | 0.050 | 0.00005 |
| 2000 | 200.0 | 0.100 | 0.00005 |
La courbe montre une croissance quadratique, confirmant la complexité O(n²) de l'algorithme.
• Échelle appropriée : Choisir des tailles suffisamment variées pour observer la tendance
• Visualisation : Les graphiques facilitent l'analyse des tendances
• Validation : Comparer avec la complexité théorique pour valider l'analyse
Analyse de la variance : Étude des variations dans les mesures expérimentales.
Fiabilité : Comprendre les sources de variation pour améliorer la précision des mesures.
Exécuter l'algorithme plusieurs fois avec les mêmes données
Enregistrer chaque mesure de temps
Moyenne : μ = (Σxi) / n
Écart-type : σ = √(Σ(xi - μ)² / n)
Intervalle de confiance pour évaluer la précision
Changements dans l'état du système
Autres processus en cours d'exécution
Cache CPU, gestion de la mémoire
Augmenter le nombre de mesures
Exécuter dans un environnement contrôlé
Utiliser des outils spécialisés
| Mesure | Temps (s) | Écart à la moyenne | Écart² |
|---|---|---|---|
| 1 | 0.0012 | +0.0001 | 0.00000001 |
| 2 | 0.0009 | -0.0002 | 0.00000004 |
| 3 | 0.0011 | 0.0000 | 0.00000000 |
| 4 | 0.0013 | +0.0002 | 0.00000004 |
| Moyenne | 0.0011 | - | 0.00000003 |
| Écart-type | 0.00017 | - | - |
La variance des mesures est faible (1.5% de la moyenne), indiquant une bonne précision.
• Statistiques : Utiliser la moyenne et l'écart-type pour évaluer la précision
• Fiabilité : Un faible écart-type indique des mesures fiables
• Amélioration : Augmenter le nombre de mesures pour réduire la variance
Validation expérimentale : Confirmation de la complexité théorique par des mesures réelles.
Corrélation : Comparaison entre la complexité prédite et les résultats expérimentaux.
Basé sur l'analyse théorique, on suppose une complexité O(n²)
Pour un algorithme de tri par sélection
Effectuer des mesures pour n = 100, 200, 500, 1000, 2000
Calculer le ratio T(n) / n² pour chaque mesure
Si la complexité est O(n²), les ratios T(n) / n² devraient être constants
Observation de la tendance des ratios
Si les ratios sont approximativement constants, la complexité O(n²) est validée
Sinon, il faut réviser l'hypothèse de complexité
| Taille (n) | Temps (s) | T/n | T/n² | T/n³ |
|---|---|---|---|---|
| 100 | 0.005 | 0.00005 | 0.0000005 | 0.000000005 |
| 200 | 0.020 | 0.00010 | 0.0000005 | 0.000000003 |
| 500 | 0.125 | 0.00025 | 0.0000005 | 0.000000001 |
| 1000 | 0.500 | 0.00050 | 0.0000005 | 0.0000000005 |
| 2000 | 2.000 | 0.00100 | 0.0000005 | 0.00000000025 |
Les ratios T(n)/n² sont constants (~0.0000005), confirmant la complexité O(n²).
• Validation : Comparer les mesures expérimentales avec la théorie
• Ratio constant : Pour une complexité O(f(n)), T(n)/f(n) devrait être constant
• Confirmation : Des ratios stables valident la complexité supposée
- Préparation : Définir les algorithmes à tester et les jeux de données
- Mesure : Chronométrer l'exécution des algorithmes
- Répétition : Effectuer plusieurs mesures pour améliorer la précision
- Enregistrement : Sauvegarder toutes les mesures pour analyse
- Visualisation : Tracer des graphiques pour observer les tendances
- Analyse : Comparer avec la complexité théorique et valider les résultats
- L'évaluation expérimentale complète l'analyse théorique mais ne la remplace pas
- Les mesures peuvent être influencées par des facteurs matériels et logiciels
- Plusieurs mesures sont nécessaires pour obtenir des résultats fiables
- La validation de la complexité se fait par l'observation de tendances sur plusieurs tailles
- • L'évaluation expérimentale permet de mesurer les performances réelles des algorithmes
- • Elle complète l'analyse théorique en fournissant des résultats concrets
- • La méthode consiste à chronométrer l'exécution sur différentes tailles de données
- • Plusieurs mesures sont nécessaires pour assurer la fiabilité des résultats
- • Les courbes de performance aident à visualiser et valider les complexités théoriques