Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.226.165.131] |
|
Сообщ.
#1
,
|
|
|
Программа собрала информацию: что находится в локальной сети.
Надо вывести на экран эту информацию наглядно в виде схемы (полная информация выводится в виде таблицы). Есть много объектов и часть из них (определенного типа: коммутатор) соединяется между собою. Берем такой коммутатор, у него есть N входов/выходов. Часть из них пустует (не выводиться), часть из них соединена с компьютерами (конечный объект), часть с другими коммутаторами, у которых такие же подобные соединения. На картинке показано, как это примерно выглядит. Есть объекты, которые не удалось соединить, могут быть любого типа: как отдельный объект/компьютер, так и коммутатор, где подключены компьютеры, но он сам ни к кому не подключен (кусок схемы)... Надо разместить объекты на схеме так, чтоб это было компактно и без пересечения линий и накладывания объектов друг на друга. И наверно, общая схема должна приближаться к квадратной, а не вытянутой в одну линию. Возможны упрощения: порядок соединений (выходящих линий из объекта) не обязательно по порядковому номеру, на них будет писаться нужный номер. Не задан ключевой/опорный объект: рисуется максимальная схема, где-нибудь пришлепком размещаются не соединенные маленькие схемы. Есть общая база (map) где хранятся все объекты и еще два map-а: где описывается связь между компьютером и коммутатором, и второй, где связь между каждый коммутатором (ключи на основной map) Есть ли готовые алгоритмы для изучения? + На схеме (очень древняя) показаны только коммутаторы без конечных объектов... ++ Не исключается, что возможен функционал, когда некоторые элементы "зафиксированы", т.е. после автоматического размещения, руками по передвигал часть объектов. Прикреплённая картинка
|
Сообщ.
#2
,
|
|
|
Сообщ.
#3
,
|
|
|
Хорошо, когда схема не имеет резервных/избыточных связей. Но в современных сетях резервирование со всякими STP да OSPF - обычное дело, а там без пересечений ну никак не построить...
|
Сообщ.
#4
,
|
|
|
Подумала, на что это похоже. Вот на что.
Экспертную систему просят объяснить, как был получен вывод. Трасса вывода - огромное дерево. Показывается схематично блоками. Щёлкнешь на блок - открывается подробная картинка этого блока. Наверно, и тут не надо вываливать всю картинку на плоскость, а делать хотя бы двухуровневую схему. |
Сообщ.
#5
,
|
|
|
Согласен с Akina'й - на 100% от пересечений не уйти, если не строить схемы в 3D
Но на счет частных решений - мысли есть ... Любая схема состоит из множества блоков и "под-схем". Блок - понятно, он одиночный, у него есть размеры и отступы для рисования связей. Чем больше связей - тем больше нужно отступов (как правило). А что такое "под-схема"? Тот же "блок", только гораздо большего размера, и в котором уже все внутреннее размещение составляющих предопределено. Ну и каков будет ваш алгоритм, если вот так вот подходить? |
Сообщ.
#6
,
|
|
|
Akina
У нас пока этого нет (чем выше офис, тем дольше все он делает) Но тут проблема не в схеме, а что удастся автоматически прочитать. Но в будущем не исключается. Тогда просто как-то более прилично раскидать. swf JoeUser Подсхемы не нужны, нужна именно развернутая схема. |
Сообщ.
#7
,
|
|
|
Как-то это хозяйство в концентрические окружности вписывать, а радиусы высчитывать.
Тут есть корень дерева, центральная вершина, из которой все эти ветви растут? Её сделать центром. Далее, запускаем из корня поиск в ширину, считаем количество "соседей" первого уровня. Рисуем окружность такого радиуса, чтобы на окружности уместились все вершины 1-го уровня. Затем из каждой вершины первого уровня запускаем поиск в ширину, подсчитываем кол-во "соседей" второго уровня. Суммируем все вершины 2-го уровня, рисуем окружность подходящего радиуса, размещаем все вершины 2-го уровня. Делая радиус достаточно большим, всё разместим. Наверно |
Сообщ.
#8
,
|
|
|
Воспользуйтесь GraphViz. Ещё введение
Для него нужно будет подготовить текстовый файл, содержащий описание графа соединений и параметры рисования узлов. Также можно указать предпочтительную раскладку (layout) и т.д. Результат будет графическим файлом или файлом для специальных просмотрщиков (тут подробностей не помню) |
Сообщ.
#9
,
|
|
|
swf
Цитата swf @ Её сделать центром Все должно быть автоматически. И желательно сделать так, чтоб при изменениях не колбасило схему. В планах приделать опцию, чтоб объект(ы) можно было зафиксировать от последующих автоматических "перестановок". Но схема нужна для быстрой наглядности и для последующего экспорта, для ручной правки в ставки в другие системы. MBo Спасибо, почитаю. Если там с открытым кодом, то попробую к себе внедрить. Добавлено + Программа работает постоянно, и так же постоянно считывает "окружающею" информацию из локальной сети - типа эхо-локатор. Информация динамическая, но в основном связи статические, но есть такие проблемы, которые сказываются на автоматическом анализе: 1) Коммутатор может быть выключен (есть такие объекты с выключением на ночь) - его перестают видеть - выставленный интервал считывания информации - 15 минут (от последнего считывания), могут быть не стыковки 2) Проблема с электропитанием, отваливаются целые ветки - перестают видеться куча коммутаторов - выставленный интервал считывания информации - 15 минут (от последнего считывания), могут быть существенные не стыковки, например, после восстановления питания, согласно разному времени считывания информации, нарушиться цепочка связей. 3) WiFi-мосты, из-за которых связь между коммутаторами, которые они соединяют, на считывается. - тут обычно один линк. 4) Долбанные коммутаторы, которые поставили подрядчики, не предоставляют информацию о связях. - тут целые участки сети в неизвестном состоянии. П. 4 вообще не решаемый для автоматического анализа, как физически там сделано, нам известно, и на нашей схеме нарисовано. П. 3 как бы решаемый. П. 1 и 2 могут вызвать временные не стыковки связей в период пока восстанавливается информация. Вообще схема так же нужна и для отладки алгоритмов, чтоб визуально видеть как отрабатываются выше указанные проблемы. Добавлено ++ Количество коммутаторов 320+ Количество всех объектов 2500+ (Да, и все это в одной сети. Один наш проект нам зарубили, другой, не наш, пока вяло текущий) |
Сообщ.
#10
,
|
|
|
Цитата Black_Dragon @ Подсхемы не нужны, нужна именно развернутая схема. Ты немного не понял. Я расписал подход, как можно начать рисовать схему - просто рекурсивное вычисление и размещение элементов. Ну я бы так попытался начать. С пошаговым "разворачиванием" под-схем. |
Сообщ.
#11
,
|
|
|
JoeUser
Пока попробую поизучать чужую работу, потом буду думать. |
Сообщ.
#12
,
|
|
|
Цитата Black_Dragon @ приделать опцию, чтоб объект(ы) можно было зафиксировать от последующих автоматических "перестановок". Объявляем некий уже построенный агломерат "супер-коммутатором" и оперируем им как единым объектом. |