No jogo 2D com o qual estou trabalhando, o mecanismo de jogo pode me fornecer, para cada unidade, a lista de outras unidades que estão em seu alcance.
Eu gostaria de saber se existe um algoritmo estabelecido para classificar as unidades em grupos , onde cada grupo seria definido por todas as unidades que estão "conectadas" umas às outras (mesmo através de outras).
Um exemplo pode ajudar a entender melhor a pergunta (E = inimigo, O = unidade própria). Primeiro os dados que eu obteria do mecanismo de jogo:
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
Então devo calcular os grupos da seguinte maneira:
G1 = E1, E2, E3, E4, E5, O2, O5
G2 = O1, O9, E6, E7
Pode-se supor com segurança que existe uma propriedade comutativa para o campo de visão: [se A vê B, então B vê A].
Só para esclarecer: eu já escrevi uma implementação ingênua que circula em cada linha das informações do mecanismo de jogo, mas, pelo que parece, parece um problema geral o suficiente para ser estudado em profundidade e ter vários algoritmos estabelecidos (talvez passando através de alguma estrutura em forma de árvore?). Meu problema é que não consegui encontrar uma maneira de descrever meu problema que retornou hits úteis do Google.
Agradeço antecipadamente por sua ajuda!