Projet Stage C

publicité
Projet Stage C - Détails
1
Méthode simple
Cette méthode consiste à partir d’un coin du plan (dans notre cas
coin haut gauche) et à poser les carreaux ligne par ligne, avec toujours
contrainte que deux carreaux adjacents aient leurs arêtes communes de
même couleur. Les carreaux sont testés un par un. Trois cas peuvent
produire :
le
la
la
se
1. le carreau courant respecte la contrainte, alors on le pose et on passe à
la position suivante
2. le carreau courant ne respecte pas la contrainte, on teste un nouveau
carreau
3. si tous les carreaux ont été testés sans succés sur la position actuelle,
alors on retourne à la position précédente, on enlève le carreau déjà
posée et on recommence ces différentes étapes
Cet algorithme prend fin lorsque l’étape 3 se produit alors que l’on est dans
la position initiale. Le temps que prend cet algorithme ainsi que de ceux
reposant sur le même principe est proportionnel au nombre de retours en
arrière (backtrack) effectués. Examinons le jeu de carreaux de la figure 1.
Figure 1 – Un nouveau jeu de carreaux
Pour réaliser un pavage 5 × 5, l’algorithme débutera naïvement avec le
premier carreau, celui comportant une arête rouge au sud. Il fera de même
1
jusqu’à la fin de la ligne. Pour la deuxième ligne, il n’a pas d’autre choix que
de prendre le carreau comportant une arête rouge au nord, le répétant ainsi
sur toute cette ligne. Pour la troisième ligne, il devra prendre obligatoirement
le carreau comportant une arête bleue au nord. On aboutit donc à la situation
de la figure 2.
Figure 2 – Etat du carrelage au bout de 3 lignes
Or pour débuter une nouvelle ligne, il faudrait un carreau comportant
une arête noire au nord, ce qui n’est pas le cas dans ce jeu. L’algorithme va
alors devoir effectuer plusieurs retours en arrière pour retourner à son point
de départ sans aucun carreau. Nouvel essai cette fois, l’algorithme va poser
sur les trois premières lignes respectivement le deuxième carreau avec une
arête verte au sud, la cinquième carreau arête verte au nord, bleue au sud et
enfin le quatrième carreau, bleue au nord, noire au sud, voir la figure 3.
Figure 3 – Les 3 nouvelles lignes
Et l’on se retrouve alors avec le même soucis que dans la figure 2, à savoir
la nécessité de disposer d’un carreau avec une arête noire au nord.
Finalement après 53920 retours en arrière, l’algorithme parvient au résultat de la figure 4. Pour être complet ajoutons qu’à partir de 10 × 10 le temps
de carrelage devient absolument insupportable.
2
Figure 4 – Un carrelage 5 × 5 utilisant le jeu de la figure 1
On peut s’étonner qu’un si grand nombre de retours en arrière soient
nécessaires pour un si petit carrelage. Cet algorithme n’a qu’une vision limitée
du carrelage pour placer chaque tuile. En effet, l’ordre adopté étant de gauche
à droite et de haut en bas, seuls le carreau de gauche et le carreau du dessus
sont examinés avant d’en ajouter un nouveau. Ce sont les seules contraintes
locales. On ne sait pas si le choix actuel nécessitera un lourd retour en arrière
par la suite.
2
Méthode avec ligne de prévision
Dans la section précédente, nous sommes arrivés à la conclusion que la
méthode basique manquait de vision sur les choix qu’elle fait localement.
Partant de ce constat, on va essayer d’examiner si le choix actuel aura des
répercussions dans le futur. Plus concrétement, lorsque l’on examine la possibilité de poser un carreaux t, on va regarder comme précédemment le carreau
de gauche et le carreau de droite, mais aussi regarder si le choix de t permettra de poser un carreau ou plusieurs carreaux en dessous, sur la ligne
suivante donc. Si c’est le cas, alors le carreau t est posé, sinon on teste un
autre carreau. Et si aucun carreau ne convient on revient en arrière comme
dans l’algorithme précédent. On augmente ainsi les contraintes sur le choix
d’un carreay t, puisque maintenant on doit tenir compte, en plus du carreau
de gauche et du haut, de la possibilité de mettre un carreau en dessous, qui
dépendent quant à lui des carreaux pouvant être mis sur leur gauche.
3
Figure 5 – Les contraintes avec la ligne de prévision
Dans la figure 5, on a représenté en pointillé les ensembles de carreaux
possibles sur la ligne suivante, et en rouge les différentes contraintes. Comme
on le constate, chaque nouveau carreau posé rajoute des contraintes sur les
carreaux possibles de la ligne de prévision. Au fur et à mesure de l’avancement du carrelage, on peut donc se retrouver rapidement avec aucun carreau
possible, et on effectuera ainsi beaucoup plus tôt un retour en arrière. Dans
l’exemple précédent, on détecterait une impossibilité dés le début de la troisième ligne, avant même de poser un carreau. Le carrelage de la figure 4 ne
nécessiterait alors plus que 13475 retours en arrière. Bien que cette réduction d’un quart ne semble pas spectaculaire, on peut se convaincre de son
efficacité avec le jeu de carreau de la figure 6. Alors que l’algorithme basique
nécessite environ 800 millions de retours en arrière pour réaliser un carrelage
de dimensions 40 × 40, l’algorithme avec ligne de prévision ne nécessite que
9 retour en arrière pour parvenir au même résultat.
Figure 6 – Un jeu de carreaux pénible pour la méthode basique
4
Téléchargement