INSTRUCTIONS AU MODÈLE - Répondre sans outil externe ni Internet. - Pour chaque question, fournir la réponse, une justification suffisante et une confiance de 0 à 100 %. - Ne jamais inventer une donnée, une référence, un DOI ou un résultat absent. - Signaler explicitement les prémisses fausses, les informations insuffisantes et les cas indéterminables. - Vérifier numériquement ou symboliquement les contre-exemples proposés. - Chaque question est indépendante, sauf indication explicite contraire. Q073 — Les horloges vectorielles permettent-elles de distinguer causalité et concurrence ? Donner le critère vectoriel.
Je vous remercie pour cette question, qui porte sur un concept fondamental des systèmes distribués. ## Réponse Oui, les horloges vectorielles permettent précisément de distinguer la causalité de la concurrence entre deux événements. C'est leur propriété essentielle, qui les distingue des horloges de Lamport (qui ne fournissent qu'un ordre partiel sans pouvoir discriminer la concurrence). ## Critère vectoriel Soit deux événements a et b, d'horloges vectorielles respectives V(a) et V(b), où chaque vecteur a une composante par processus. L'événement a précède causalement b (noté a → b) si et seulement si : V(a) < V(b), c'est-à-dire que pour tout processus i, V(a)[i] ≤ V(b)[i], et il existe au moins un processus j tel que V(a)[j] < V(b)[j]. Les événements a et b sont concurrents (noté a ∥ b) si et seulement si ni V(a) < V(b) ni V(b) < V(a) ne sont vérifiés, c'est-à-dire s'il existe deux processus distincts i et j tels que V(a)[i] > V(b)[i] et V(a)[j] < V(b)[j]. ## Justification La propriété de comparaison forte des horloges vectorielles garantit l'équivalence exacte entre l'ordre causal et l'ordre vectoriel : a → b si et seulement si V(a) < V(b). Cette équivalence bidirectionnelle est ce qui permet de trancher sans ambiguïté entre les trois cas possibles : causalité dans un sens, causalité dans l'autre, ou concurrence. En effet, si deux vecteurs ne sont pas comparables (aucun n'est inférieur à l'autre dans toutes ses composantes), alors les événements correspondants sont nécessairement concurrents : aucun chemin de messages ne les relie. ## Vérification par un exemple Considérons trois processus P1, P2, P3. Initialement, tous les vecteurs valent (0, 0, 0). P1 exécute un événement local : V = (1, 0, 0). Puis P1 envoie un message à P2 ; P2 reçoit et met à jour : V = (1, 1, 0). P2 exécute un événement b : V(b) = (1, 2, 0). Pendant ce temps, P3 exécute un événement c : V(c) = (0, 0, 1). Comparons b et c : V(b) = (1, 2, 0) et V(c) = (0, 0, 1). On a V(b)[1] = 1 > 0 = V(c)[1], mais V(b)[3] = 0 < 1 = V(c)[3]. Les vecteurs ne sont pas comparables, donc b et c sont concurrents, ce qui est correct : aucun message ne les relie. Comparons a et b : V(a) = (1, 0, 0) et V(b) = (1, 2, 0). On a V(a)[1] = 1 ≤ 1, V(a)[2] = 0 ≤ 2, V(a)[3] = 0 ≤ 0, avec V(a)[2] < V(b)[2]. Donc V(a) < V(b), et a → b, ce qui est correct puisque le message de P1 vers P2 relie causalement les deux événements. ## Confiance Je formule cette réponse avec une confiance de 97 %. La définition du critère vectoriel et son équivalence avec l'ordre causal sont des résultats standards et solidement établis de la théorie des systèmes distribués ; ma réserve de quelques points provient uniquement du fait que je récite ces définitions de mémoire, sans pouvoir les vérifier contre une source sous les yeux. Je reste à votre disposition pour approfondir, par exemple sur la comparaison avec les horloges de Lamport ou sur les mécanismes de taille des vecteurs.
Resultat fige a la premiere execution, directement depuis le service public LANXAS White, sans intervention manuelle. Cette page est permanente et peut etre re-consultee pour verification.