вимогливий в плані використання оперативної пам'яті.
Висновки:
Жоден з представлених класичних алгоритмів в явному вигляді не дозволяє вирішувати поставлену задачу. Найбільш підходящим був визнаний пошук в глибину. Модифікований алгоритм буде будуватися на його основі.
3. РЕАЛІЗАЦІЯ МОДЕЛІ
3.1 Вибір середовища розробки
Для реалізації програмного комплексу використовувався мова високого рівня C # і середовище розробки MS Visual Studio 2010. Цей вибір обумовлений виходячи з наступних критеріїв:
. Середа розробки і мова дозволяють швидко і якісно створювати користувальницький інтерфейс високого рівня, використовуючи дизайнер форм, зводячи до мінімуму працю програміста.
. Мова C # так само володіє рядом переваг в порівнянні з Object Pascal, тому є новішим і більш розвиненим мовою.
. У ньому на дуже високому рівні реалізовані механізми безпеки коду.
. Ще одним безсумнівним плюсом є наявність російськомовної розвиненою довідкової системи, що значно спрощує процес програмування.
3.2 Візуалізація транспортної мережі
Розглянемо алгоритм візуалізації транспортної мережі.
У функцію передаються два прапора, які дозволяють тимчасово приховувати частини транспортної мережі помічені як невидимі і як вилучені.
Поточні об'єкти (вершини і ребра) отрісовиваємих з використанням напівжирного ліній і шрифтів.
Перейдемо безпосередньо до алгоритму.
Спочатку отрісовиваємих ребра, тому вершини їх перекривають і візуально знаходяться на один рівень вище.
Кожне ребро визначається парою вершин, вершини мають координати. Вони і визначають розташування ребра. Контури ребра отрісовиваємих кольором графа. Внутрішнє заповнення може бути вибрано індивідуально для кожного з ребер.
У середині ребра малюється кружечок, в який вписується числове значення, що характеризує вагу ребра.
Т.к. ребро може з'єднувати два графа і кожен з цих двох графів може мати власний колір, то половина ребра матиме контур одного кольору, а друга полвіни матиме контур іншого кольору. Кружечок в цьому випадку малюється пунктирним з чергуванням двох кольорів.
Передбачена система позначень у вигляді суфіксів ваги: ??
?- Ребро недоступно;
° - ребро помічене як невидиме;
† - ребро позначено для видалення.
Після того, як отрісовани ребра, починається візуалізація вершин.
Контури вершини мають колір графа, внутрішня заливка може бути встановлена ??індивідуально для кожної вершини.
Для вершин передбачена та ж система позначень, що і для ребер. Крім цього передбачено ще два можливих суфікса.
»- вершина є стартовою;
«- вершина є кінцевою.
3.3 Редагування транспортної мережі
.3.1 Додавання елементів
При додаванні нового графа в кінець списку додається ще одні елемент, і він стає поточним, після чого користувач може задати ім'я графа, опис, колір та інші характеристики.
Всі вершини додаються в лівий верхній кут транспортної мережі, звідки вони можуть бути переміщені на необхідне місце. Вершини додаються в поточний граф.
Додавання ребра здійснюється у два етапи. При натисканні на кнопку «Додати» поточна вершина вважається стартовою, і користувач переходить в режим додавання ребра, в якому він двічі повинен клікнути на вершині кінцевої. Передбачено заборону на створення петель і дублюються ребер.
3.3.2 Видалення елементів
Видалення елементів пов'язано з низкою складнощів. По-перше, для зберігання об'єктів використовується спискова структура і її реорганізація може зажадати досить великого часу. Тому обрана стратегія, згідно з якою елементи позначаються на видалення, а саме видалення відкладається до прямої вимоги користувача. По-друге, видалення елементів може зажадати видалення залежних елементів. У зв'язку з цим передбачені наступні правила:
· якщо граф позначений на видалення, всі ребра і вершини в нього входять так само позначаються на видалення;
· якщо вершина позначена на видалення, всі ребра їй інцідентние також позначаються на видалення;
Реалізація цих правил здійснюється за допомогою властивостей, які змінюють ознака ...