Я намагаюся розібратися, яку структуру даних використовувати для моделювання гіпотетичного, ідеалізованого використання мережі.
За моїм сценарієм, кількість користувачів, які ворогують один з одним, намагаються сформувати мережі комп’ютерів, де відомі всі потенційні зв’язки. Комп'ютери, до яких потрібно підключити одного користувача, можуть бути не такими, як ті, з якими потребує інший користувач; користувачеві 1 може знадобитися підключити комп'ютери A, B і D, тоді як користувачеві 2 може знадобитися підключити комп'ютери B, C і E.
Зображення, створене за допомогою NCTM Graph Creator
Я думаю, що стрижнем цього стане непрямий циклічний графік, у якому вузли представляють комп'ютери та краї, що представляють кабелі Ethernet. Однак, через характер сценарію, є кілька незвичайних особливостей, які виключають списки суміжності та матриці суміжності (принаймні, без нетривіальних модифікацій):
- краї можуть стати обмеженими; тобто якщо один користувач набуває задане мережеве з'єднання, жоден інший користувач не може використовувати це з'єднання
- у прикладі, зелений користувач не може підключитися до комп'ютера A, але червоний користувач підключив B до E, незважаючи на відсутність прямого зв’язку між ними
- в деяких випадках дана пара вузлів буде з'єднана більш ніж одним ребром
- у прикладі є два незалежні кабелі, що працюють від D до E, тому користувачі зеленого та синього кольорів мали змогу безпосередньо підключити ці машини; проте червоний вже не може здійснювати таке з'єднання
- якщо два комп’ютери підключені більш ніж одним кабелем, кожен користувач може мати не більше одного з цих кабелів
На цьому графіку потрібно буде виконати кілька операцій, таких як:
- визначення того, яка певна пара комп'ютерів підключена для даного користувача
- визначення оптимального шляху для даного користувача для підключення цільових комп'ютерів
- ідентифікація з’єднання з найвищою затримкою для даного користувача (тобто найдовший шлях без розгалуження)
Першою моєю думкою було просто створити колекцію всіх країв, але це страшно для пошуку. Найкраще, що я можу зробити зараз, - це зміни списку суміжності, щоб кожен елемент у списку містив не тільки довжину краю, але і його вартість та поточного власника. Це розумний підхід? Якщо припущення простір не викликає занепокоєнь, чи було б розумним створити кілька копій графіка (по одному для кожного користувача), а не один графік?