У 2D грі, з якою я працюю, ігровий движок може надати мені для кожної одиниці список інших одиниць, які знаходяться в її зоні перегляду.
Мені хотілося б знати, чи існує встановлений алгоритм для сортування одиниць за групами , де кожна група буде визначена всіма тими одиницями, які "пов'язані" один з одним (навіть через інші).
Приклад може допомогти зрозуміти питання краще (E = ворог, O = власна одиниця). Спочатку дані, які я отримаю від ігрового двигуна:
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
Тоді я повинен обчислити групи так:
G1 = E1, E2, E3, E4, E5, O2, O5
G2 = O1, O9, E6, E7
Можна з упевненістю припустити, що для поля зору існує комутативна властивість: [якщо A бачить B, то B бачить A].
Просто для уточнення: я вже написав наївну реалізацію, яка циклічно підходить до кожного ряду інформації про ігровий движок, але з погляду на це, здається, достатньо загальною проблемою, щоб вона була глибоко вивчена і мала різні встановлені алгоритми (можливо, проходження через якусь деревоподібну будову?). Моя проблема полягає в тому, що я не зміг знайти спосіб описати свою проблему, яка повертає корисні звернення Google.
Заздалегідь дякую за допомогу!