1.19.1 EP01_01 📏 Trois métriques de distance en TNI
Dans cette activité, vous devez écrire un programme qui calcule les trois distances classiques en TNI : euclidienne (L2), City‑Block (L1) et Chessboard (L∞).
Lisez 4 nombres réels qui représentent les coordonnées : \(A_x, A_y, B_x, B_y\).
Calculez les trois distances à l’aide des formules :
Dans une image 1000×1000 pixels (1 million de pixels), calculer la distance de chaque pixel à un point de référence exige 1 million d’opérations. Le choix de la métrique affecte la performance :
La fonction sqrt est computationnellement plus coûteuse que des opérations comme l’addition, la soustraction, la multiplication et la valeur absolue. Sur les processeurs modernes, la différence peut être faible (environ 1,5× à 3×), mais dans les systèmes embarqués ou dans des boucles de millions d’itérations, tout gain compte. Pour cette raison, lorsque l’objectif est uniquement de comparer des distances (ex. : trouver le point le plus proche), utilisez la distance euclidienne au carré.
1.19.1.2 📋 Tâche (spécification pour VPL)
Entrée :
Une seule ligne avec quatre nombres réels : Ax Ay Bx By
Sortie :
Trois lignes, chacune avec un nombre réel à deux décimales (euclidienne, City‑block, Chessboard).
1.19.1.3 📌 Exemples
Entrée
Sortie
Observation
0 0 3 4
5.00 7.00 4.00
Triangle 3‑4‑5
0 0 1 1
1.41 2.00 1.00
Diagonale unitaire
Exemple de test de sqrt en Python, avec timeit isolant chaque opération :
import mathimport timeitN =50_000_000def apenas_soma(): a, b =3.0, 4.0return a + bdef soma_e_sqrt(): a, b =3.0, 4.0return math.sqrt(a*a + b*b)t_soma = timeit.timeit(apenas_soma, number=N)t_sqrt = timeit.timeit(soma_e_sqrt, number=N)print(f"Somme simple : {t_soma:.3f} s")print(f"Somme + sqrt : {t_sqrt:.3f} s")print(f"Rapport (sqrt/somme) : {t_sqrt/t_soma:.2f}x")
Somme simple : 2.742 s
Somme + sqrt : 4.836 s
Rapport (sqrt/somme) : 1.76x
🎮 Simulateur EP01_01 : Métriques de distance dans l'espace discretEuclidienne vs City-block vs Échiquier
Cliquez et faites glisser les points A ou B sur le plan cartésien ou ajustez leurs coordonnées ci-dessous pour comparer les trois métriques de distance en temps réel.
📐 EUCLIDIENNE (L2)
5.00
√(Δx² + Δy²)
🧱 CITY-BLOCK (L1)
7.00
|Δx| + |Δy|
🏁 ÉCHIQUIER (L∞)
4.00
max(|Δx|, |Δy|)
👆 Faites glisser les points A (Violet) ou B (Orange) sur la grille.
Point A
Point B
Légende géométrique : Ligne pointillée (Euclidienne), Chemin orthogonal en L (City-block) et Mise en évidence de la dimension maximale (Échiquier).
Euclidienne City-block Échiquier (Max)
Figure 1.11: Simulateur EP01_01 : Distances Euclidienne, City-block et Échiquier