Algorithmes pour g´en´erer les conformations de surfaces
form´ees de triangles sans sommet interne
Alain Soyer
To cite this version:
Alain Soyer. Algorithmes pour g´en´erer les conformations de surfaces form´ees de triangles sans
sommet interne. 2015. <hal-01224740v2>
HAL Id: hal-01224740
https://hal.archives-ouvertes.fr/hal-01224740v2
Submitted on 25 May 2016
HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est
destin´ee au d´epˆot et `a la diffusion de documents
scientifiques de niveau recherche, publi´es ou non,
´emanant des ´etablissements d’enseignement et de
recherche fran¸cais ou ´etrangers, des laboratoires
publics ou priv´es.
Algorithmes pour générer les conformations de surfaces formées de triangles sans sommet
interne
Alain Soyer ([email protected])
Sorbonne Universités, UPMC Univ Paris 6, CNRS UMR7590, IRD, MNHN
Institut de Minéralogie, de Physique des Matériaux et de Cosmochimie (IMPMC)
4 place Jussieu, Case 115
75005 Paris - France
Introduction
Lors d'un travail sur la géométrie des protéines en collaboration avec J.-F. Sadoc, nous avons eu à
considérer des « surfaces internes » s'appuyant sur la chaine principale de petites protéines, ou de
fragments de protéines formant un contour fermé. Pour plus d'informations sur ce sujet nous
renvoyons le lecteur intéressé à l'article de J.-F. Sadoc [1] (en particulier le paragraphe 5).
C'est pour cette raison que je me suis intéressé de manière générale aux surfaces 2D (non
nécessairement planes) formées de triangles sans sommet interne, c'est-à-dire ayant tous leurs
sommets sur le bord de la surface. Les arrêtes du bord reliant ces sommets forment un contour
fermé.
Le but des algorithmes présentés ici est de générer toutes les Nc conformations possibles d'une
surface ayant un nombre donné Nt de triangles, soit un nombre de sommets Ns = Nt + 2 . Les
sommets sont indifférenciés c'est à dire non « étiquetés » mais on pourra, pour chaque conformation
trouvée, envisager ensuite tous les étiquetages possibles (ce qui a été fait dans le cas des protéines
en déplaçant les acides aminés sur les sommets du contour de la surface). D'autre part on ne se
préoccupe pas de l'éventuelle chiralité des surfaces (espace non orienté) car l'application qui était
faite était un calcul d'énergie.
Pour des raisons d'esthétique on a représenté des triangles équilatéraux dans les dessins qui suivent,
mais on s'intéresse à la topologie des surfaces (et non à la métrique) : les triangles peuvent donc
avoir des formes quelconques.
Remarque :
si on relie les barycentres des triangles d'une surface donnée on obtient son dual, soit un arbre
binaire non étiqueté.
Notation
Une conformation sera codée sous la forme d'une liste de chiffres représentant les nombres de
triangles aboutissant à chaque sommet lorsqu'on parcourt le contour de la surface. Pour minimiser la
mémoire utilisée ces chiffres ne sont pas rangés dans des entiers mais dans des octets non signés.
Figure 1 : 6 triangles, 8 sommets arbre dual
Puisque le contour est fermé, le dernier chiffre de la liste doit être considéré comme voisin du
premier (on peut estimer que la liste est périodique). De plus j'ai choisi la convention de rendre
maximum le nombre formé de la concaténation de ces chiffres.
Par exemple la conformation de la figure 1 sera notée {4, 2, 1, 4, 1, 3, 2, 1} et non pas
{4, 1, 3, 2, 1, 4, 2, 1} ni {4, 1, 2, 4, 1, 2, 3, 1} ni {4, 1, 2, 3, 1, 4, 1, 2} , car
42141321 > 41321421 > 41241231 > 41231412 .
Algorithme A1
La méthode qui vient naturellement à l'esprit pour générer toutes les conformations de Nt triangles
consiste à utiliser un algorithme itératif.
Partant d'une conformation formée d'un triangle unique, on ajoute un triangle de manière itérative
jusqu'à obtenir les conformations de Nt triangles.
Pour chaque conformation de l' itération courante, on envisage toutes les manières de coller un
triangle supplémentaire sur ses arêtes libres.
Le code d'une nouvelle conformation est obtenu en insérant un zéro dans le code de la conformation
de départ, entre les chiffres correspondant aux sommets extrémités de l'arête à laquelle le nouveau
triangle est collé, puis en ajoutant le code du nouveau triangle, soit {1, 1, 1}.
Par exemple pour ajouter un triangle supplémentaire à gauche de la conformation de la figure 1 et
obtenir celle de la figure 2, on insère 0 entre le 4 et le 1 ce qui donne le code
{4, 2, 1, 4, 0, 1, 3, 2, 1} puis on ajoute {1, 1, 1} centré sur le 0 .
Figure 2
On obtient {4, 2, 1, 5, 1, 2, 3, 2, 1} qui est un code qui ne suit pas la convention adoptée ci-dessus.
Il est donc nécessaire d'envisager une permutation circulaire et un éventuel changement de sens afin
d'obtenir le code « maximum » ; dans cet exemple {5, 1, 2, 4, 1, 2, 3, 2, 1}.
Le tableau 1 montre les conformations obtenues et leur code jusqu'à Nt = 6 (Ns = 8).
Le nombre de conformations Nc augmente vite avec le nombre de triangles (3ème colonne du
tableau 2) ce qui amène deux conséquences néfastes : une taille mémoire et un temps de calcul qui
croissent rapidement.
Je ne donnerai pas plus de tail sur cet algorithme car son intérêt est limité à cause de sa lenteur.
Ceci est du au fait que lorsqu'on trouve une nouvelle conformation on doit vérifier qu'elle n'a pas
déjà été générée précédemment. Cette vérification devient vite pénalisante en temps de calcul. Elle
peut être accélérée en utilisant une recherche par dichotomie, mais cela ne suffit pas si l'on désire
dépasser une vingtaine de sommets.
C'est ce que montre la 4ème colonne du tableau 2 les temps de calcul T(A1) obtenus avec un
programme en langage C implémentant cet algorithme sont indiqués pour un ordinateur équipé d'un
processeur Intel Xeon E5-4650 cadencé à 2.7GHz.
Tableau 1
Nt Ns Nc Conformations Codes Nt_max
1 3 1 {1,1,1} 1
2 4 1 {2,1,2,1} 2
3 5 1 {3,1,2,2,1} 3
4 6 3
{3,1,3,1,3,1}
{3,2,1,3,2,1}
3
{4,1,2,2,2,1} 4
5 7 4 {3,3,1,2,3,2,1} 3
{4,1,3,1,3,2,1}
{4,2,1,3,2,2,1}
4
{5,1,2,2,2,2,1} 5
Tableau 1 (suite)
Nt Ns Nc Conformations Codes Nt_max
6 8 12 {3,3,2,1,3,3,2,1} 3
{4,1,3,1,4,1,3,1}
{4,1,4,1,2,3,2,1}
{4,2,1,3,2,3,1,2}
{4,2,1,3,3,1,3,1}
{4,2,1,4,1,3,2,1}
{4,2,2,1,4,2,2,1}
{4,3,1,2,3,2,2,1}
4
{5,1,2,3,1,3,2,1}
{5,1,3,1,3,2,2,1}
{5,2,1,3,2,2,2,1}
5
{6,1,2,2,2,2,2,1} 6
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!