En el juego 2D con el que estoy trabajando, el motor del juego me puede dar, para cada unidad, la lista de otras unidades que están en su rango de visión.
Me gustaría saber si existe un algoritmo establecido para clasificar las unidades en grupos , donde cada grupo estaría definido por todas esas unidades que están "conectadas" entre sí (incluso a través de otras).
Un ejemplo podría ayudar a comprender mejor la pregunta (E = enemigo, O = propia unidad). Primero los datos que obtendría del motor del juego:
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
Entonces debería calcular los grupos de la siguiente manera:
G1 = E1, E2, E3, E4, E5, O2, O5
G2 = O1, O9, E6, E7
Se puede suponer con seguridad que existe una propiedad conmutativa para el campo de visión: [si A ve B, entonces B ve A].
Solo para aclarar: ya escribí una implementación ingenua que se repite en cada fila de la información del motor del juego, pero por lo que parece, parece un problema lo suficientemente general como para que se haya estudiado en profundidad y tenga varios algoritmos establecidos (tal vez pasando a través de alguna estructura en forma de árbol?). Mi problema es que no pude encontrar una manera de describir mi problema que arrojó resultados de Google útiles.
¡Gracias de antemano por su ayuda!