dazibao/Notes.md

58 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Notes et recherches sur le projet
Arithétique et ordres modulo
s ⊕ n = (s+n) % 2^(16)
s ⊕ n = (s + n) and 65535
s ≼ s lorsque ((s s) mod 2 16 ) < 32768
s s lorsque ((s s) and 32768) = 0
-------
Le sujet l'exprime de façon mathématique certes, mais c'est facile, si j'essaie de faire une aussi belle histoire que M. Chroboczek : imaginez que Paul et Gudule, qui sont dans une relation compliquée, se poursuivent en vociférant et en tournant autour d'un arbre. Est-ce que Paul est devant Gudule, ou Gudule devant Paul ? Imaginez en plus que la circonférence de l'arbre est 65536 millimètres (c'est un gros banian). Si Paul doit parcourir moins de millimètres pour attraper Gudule que l'inverse, alors on dit qu'il est derrière Gudule. Imaginez maintenant qu'il y a une graduation en millimètres autour du tronc du banian. Paul est à la graduation 10000, Gudule 20000. Ils courent dans le sens des graduations croissantes (dans quelques millisecondes, Paul sera à la graduation 10001 mm). Paul doit parcourir (20000 - 10000) mod 65536 = 10000 mm pour attraper Gudule, et Gudule,(10000-20000 ) mod 65536 = 55536 mm pour attraper Paul. 10000 < 55536. Donc Paul Gudule.
----
Alors voilà, toi et moi on veut connaître le statut Facebook de notre ami
Paul. On se rencontre dans la rue (un jour, on aura le droit de nous
rencontrer dans la rue), et tu me dis que la dernière fois que t'as
regardé, il était « en couple », moi, je dis que la dernière fois, il
était « c'est compliqué ». Qui de nous a l'information la plus récente ?
Comme Paul change son statut très souvent, il le publie avec un numéro de
séquence. Il publie :
1. en couple
2. c'est compliqué
3. célibataire
4. en couple
5. célibataire
6. c'est compliqué
Moi, j'ai l'information « 2. c'est compliqué ». Toi, tu me dis non,
« 4. en couple ». Je compare les deux numéros de séquence, je vois que
2 < 4, donc tu as l'information la plus récente, et je mets à jour ma
donnée qui vaut maintenant « 4. en couple ». (Attention, on utilise ici
l'ordre cyclique modulo 2^16, pas l'ordre usuel sur les entiers.)
Si par contre j'avais l'information « 6. c'est compliqué » et tu m'avais
dit « 4. en couple », je me serais dit que c'est moi qui ai l'information
la plus récente, et j'aurais ignoré l'information que tu me donnes.
Tu remarqueras qu'il y a trois morceaux d'information qui apparaissent :
(i) Paul est l'id de la personne qui publie la donnée ;
(ii) Le numéro de séquence (2, 4, 6 etc.)
(iii) La donnée elle-même en couple », etc.)
Maintenant, si tout le monde fait ça, et si Paul ne change pas son statut
tout le temps, un jour on se sera mis d'accord : on aura tous la même
information. L'algorithme aura convergé.
---
jch.irif.fr port UDP 1212
http://jch.irif.fr:8082/