Notions fondamentales

2.1 Définition d'un algorithme

Un algorithme est une suite finie d'instructions ou d'étapes permettant de résoudre un problème ou d'accomplir une tâche spécifique. En informatique, les algorithmes sont utilisés pour manipuler des données et effectuer des calculs.

2.2 Caractéristiques d'un algorithme

Pour être considéré comme un algorithme, une suite d'instructions doit posséder les caractéristiques suivantes :

  • Finitude : L'algorithme doit toujours se terminer après un nombre fini d'étapes.
  • Précision : Chaque étape de l'algorithme doit être définie de manière claire et précise.
  • Entrée : L'algorithme doit recevoir des données d'entrée.
  • Sortie : L'algorithme doit produire une ou plusieurs sorties.
  • Efficacité : L'algorithme doit être conçu pour minimiser le temps d'exécution et l'utilisation de ressources.

Exemple de code en JavaScript pour une fonction quadratique :

// Exemple de calcul de la complexité temporelle avec une fonction quadratique
function sommeCarres(n) {
    // Initialisation de la somme à zéro
    let somme = 0;
    // Boucle pour chaque entier de 1 à n
    for (let i = 1; i <= n; i++) {
        // Ajout du carré de i à la somme
        somme += i * i;
    }
    return somme;
}

// Calcul de la somme des carrés de 1 à 10
console.log(sommeCarres(10));  // Output: 385

 

Vulgarisation de la Complexité des Algorithmes

La complexité d'un algorithme, c'est un peu comme évaluer combien de temps et d'énergie il faut pour accomplir une tâche. Imagine que tu es un chef cuisinier et que tu dois préparer des plats pour une fête. La complexité temporelle, c'est le temps que tu passes à cuisiner, et la complexité spatiale, c'est l'espace nécessaire dans ta cuisine (comme le nombre de casseroles, la taille du four, etc.).

1. Complexité Temporelle (Time Complexity)

Exemple amusant : Les Crêpes

Imagine que tu fais des crêpes. Chaque crêpe prend 2 minutes à cuire. Si tu dois faire 10 crêpes, tu passes 20 minutes à les cuire. Si tu dois en faire 20, tu passes 40 minutes. Le temps que tu passes à faire des crêpes augmente proportionnellement au nombre de crêpes. En algorithmie, on appelle ça une complexité linéaire, notée .

// Faire des crêpes avec une complexité linéaire
function faireCrepes(n) {
    for (let i = 0; i < n; i++) {
        console.log(`Cuire la crêpe ${i + 1}`);
        // Simuler 2 minutes de cuisson
    }
}

faireCrepes(5);  // Output: Cuire la crêpe 1 à 5

Autre exemple : Les Partitions de Pizza

Imagine que tu veux couper une pizza en morceaux. Si tu veux 4 morceaux, tu fais 4 coupures. Si tu veux 8 morceaux, tu fais 8 coupures. Le nombre de coupures augmente proportionnellement au nombre de morceaux. C'est aussi une complexité linéaire .

Imagine que tu veux couper une pizza en morceaux. Si tu veux 4 morceaux, tu fais 4 coupures. Si tu veux 8 morceaux, tu fais 8 coupures. Le nombre de coupures augmente proportionnellement au nombre de morceaux. C'est aussi une complexité linéaire .

Ecrit le code sourire

Modifié le: mardi 18 février 2025, 03:51