Le cœur de Triskele est un algorithme de construction d'arbre en complexité linéaire.
Pour maintenir une complexité linaire Triskele utilise le tri comptage
La construction d'un arbre utilise l'algorithme dérivé d'union-find
Schématiquement, tout les pixels font référence à un nœud et les nœuds font référence à un nœud (sauf la racine).
Représentation sous la forme de tableaux
Nous allons expliquer le fonctionnement de l'Algorithmes de construction d’un arbre par un exemple, en détaillant les différentes étapes.
![]() | Pour le quatrième couple, aucun des deux pixels n'a déjà été ajoutés à l'arbre, on ajoute donc le parent au tableau parents en créant un noeud sans le raccorder a un autre parent. On créé ici une autre branche. Comme pour chaque parent créé : - On ajoute le poid du couple dans le tableau weights - On ajoute le nombre d'enfant raccordé au parent dans le tableau child-count - Le short-cut désigne le leader - A la position du leader on insère la valeur correspondant au placement du noeud dans l'arbre (2éme tableau) |
![]() | Pour le cinquiéme couple, un des pixels est déjà utilisé par le parent 3 (vert), on ne crée pas de parent car la branche actuelle n'est pas reliée à l'arbre, on ajoute simplement le pixel qui n'est pas déjà utilisé, au parent 3, on incrément donc la valeur child-count de 1 (voir 4eme case du tableau child-count) |
![]() | Pour le cinquième couple, |
![]() | L'arbre se construit au fur et à mesure de cette manière. |
![]() | |
![]() | Voici le rendu final de l'arbre après le traitement de tout le tableau. Cet exemple est très simple mais il permet de bien comprendre la création d'un arbre. |
![]() |