Dans le jeu 2D avec lequel je travaille, le moteur de jeu est en mesure de me donner, pour chaque unité, la liste des autres unités qui sont dans sa plage de vue.
Je voudrais savoir s'il existe un algorithme établi pour trier les unités en groupes , où chaque groupe serait défini par toutes ces unités qui sont «connectées» les unes aux autres (même par d'autres).
Un exemple pourrait aider à mieux comprendre la question (E = ennemi, O = propre unité). D'abord les données que j'obtiendrais du moteur de jeu:
E1 can see E2, E3, O5
E2 can see E1
E3 can see E1
E4 can see O5
E5 can see O2
E6 can see E7, O9, O1
E7 can see E6
O1 can see E6
O2 can see O5, E5
O5 can see E1, E4, O2
O9 can see E6
Ensuite, je devrais calculer les groupes comme suit:
G1 = E1, E2, E3, E4, E5, O2, O5
G2 = O1, O9, E6, E7
On peut supposer sans risque qu'il existe une propriété commutative pour le champ de vision: [si A voit B, alors B voit A].
Juste pour clarifier: j'ai déjà écrit une implémentation naïve qui boucle sur chaque ligne des informations sur le moteur de jeu, mais à première vue, cela semble un problème assez général pour qu'il ait été étudié en profondeur et dispose de divers algorithmes établis (peut-être en passant à travers une structure arborescente?). Mon problème est que je n'ai pas pu trouver un moyen de décrire mon problème qui a renvoyé des hits google utiles.
Merci d'avance pour votre aide!