W grze 2D, z którą pracuję, silnik gry jest w stanie podać dla każdej jednostki listę innych jednostek znajdujących się w jej zasięgu widzenia.
Chciałbym wiedzieć, czy istnieje ustalony algorytm sortowania jednostek w grupach , gdzie każda grupa byłaby zdefiniowana przez wszystkie te jednostki, które są „połączone” ze sobą (nawet przez inne).
Przykład może pomóc lepiej zrozumieć pytanie (E = wróg, O = własna jednostka). Najpierw dane, które otrzymam z silnika gry:
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
Następnie powinienem obliczyć grupy w następujący sposób:
G1 = E1, E2, E3, E4, E5, O2, O5
G2 = O1, O9, E6, E7
Można bezpiecznie założyć, że istnieje pole przemienne pola widzenia: [jeśli A widzi B, to B widzi A].
Żeby wyjaśnić: napisałem już naiwną implementację, która zapętla się w każdym rzędzie informacji o silniku gry, ale z wyglądu wydaje się, że problem jest na tyle ogólny, że można go dogłębnie zbadać i zastosować różne ustalone algorytmy (być może przez jakąś drzewiastą strukturę?). Mój problem polega na tym, że nie mogłem znaleźć sposobu na opisanie mojego problemu, który zwrócił użyteczne trafienia w Google.
Z góry dziękuję za Twoją pomoc!