E629 : Les randonneurs
Puisque aucun dossard n’est à sa place, on peut faire remonter progressivement le dossard 1 au 1er rang, sans qu’il rencontre de blocage. Pour que le problème soit résolu par une récurrence immédiate, il suffit donc de montrer que l’on peut faire remonter le dossard 1 sans qu’aucun autre ne vienne à sa place.
Pour cela considérons e(k), écart entre le dossard et le rang du k-ième dans la file : e(k)=d(k)-k. Lorsque aucun n’est sa place, e(k)≠0 ; lorsque l’on permute k et k+1, les nouveaux écarts e’ sont e’(k)=e(k+1)+1 et e’(k+1)=e(k)-1. Il pourrait y avoir blocage au coup suivant si e(k)=1
Si c’est le cas, cherchons à inverser les randonneurs de rangs k-1 et k. Cela est
possible, sauf si e(k-1)=1 . Remarquons que l’on ne peut avoir e(k-1)=2 :en effet, e(k- 1)-e(k)=d(k-1)-k+1-d(k)+k=d(k-1)-d(k)+1≠1, donc si e(k-1)≠1, l’inversion débloquera effectivement le passage. Si e(k-1)=1, cherchons d’abord à inverser les randonneurs de rangs k-2 et k-1, ce qui sera possible si e(k-2)≠1 ; sinon, on continue à remonter dans la file…Au final,
• ou bien e(h)=1 pour tout 1≤h≤k, auquel cas l’on inverse les rangs k-1 et k, puis k- 2 et k-1,…jusqu’à 1 et 2, et les dossards de 1 à k se retrouvent à leurs places
• ou bien il existe un rang i<k tel que e(i)≠1 et e(j)=1 pour i<j≤k ; on inverse alors les rangs i et i+1, puis i+1 et i+2, …jusqu’à k-1 et k ; le dossard 1, qui est en position k+1 peut alors remonter jusqu’au rang i ; et jusqu’au rang 1 en itérant le procédé…
Il est donc possible de cette manière de remettre les 2006 randonneurs dans l’ordre de leurs dossards