Методические указания к выполнению лабораторной работы
Проектирование глобальных вычислительных сетей
Рекомендовано для студентов направления 230100 и смежных специальностей
Составители: Кузьмин в.С., Соловьев н.В.
Цель работы - ознакомление с методами проектирования структуры вычислительной сети минимальной стоимости при заданном количестве узлов и числе независимых путей передачи данных для каждой пары узлов.
Теоретические пояснения.
Вычислительная сеть – в самом общем смысле, это система связи вычислительных машин, позволяющая им тем или иным способом обмениваться информацией между собой. Далее для простоты будем использовать термины «сеть» вместо «вычислительная сеть» и «узел» вместо «вычислительная машина, подключенная к сети»
Сети можно классифицировать по множеству признаков, например:
-
тип физического носителя (витая пара, оптоволокно, беспроводные сети);
-
топология сети;
-
масштаб охватываемой территории;
-
протокол взаимодействия узлов сети между собой.
С точки зрения оптимизации – все эти характеристики имеют лишь косвенное значение, так как оптимизация сети, как правило, выполняется по трем показателям эффективности:
-
Скорость передачи данных (время задержки при передачи сообщений) - показывает с какой максимальной (средней или гарантированной) скоростью узлы сети могут обмениваться данными между собой. Эта величина не является постоянной для любой пары узлов, т.к. зависит от загрузки сети и возможных сбоев в работе активных и пассивных элементов сети.
-
Надежность сети (отказоустойчивость) – показывает вероятность того, что в произвольный момент времени два произвольных узла сети смогут связаться друг с другом. Зависит в первую очередь от количества независимых путей передачи данных в сети и качества каждого из этих путей, что определяется вероятностью доставки сообщения по данному пути.
-
Стоимость сети - показывает объем денежных средств, требуемых для прокладки и/или поддержания работоспособности сети.
Соответственно этим трем характеристикам можно выделить и три способа постановки задачи оптимизации сети:
-
Оптимизация по скорости - добиться максимальной скорости передачи данных, при надежности сети не меньше требуемой и стоимости не больше заданной.
-
Оптимизация по надежности - добиться максимальной надежности сети, при скорости передаче данных не меньше требуемой и стоимости не больше заданной.
-
Оптимизация по стоимости - добиться минимальной стоимости сети, при надежности сети и скорости передачи данных не меньше требуемых.
Указание других характеристик сети лишь накладывает определенные ограничения на задачу оптимизации. Например, масштаб сети повлияет на выбор физического носителя, что в свою очередь определит зависимость скорости передачи данных от стоимости для данной категории носителя, а также задаст соотношение стоимости и расстояний между узлами.
Указание конкретной топологии сети ограничивает задачу оптимизации еще сильнее, т.к. топология достаточно жестко определяет практически все параметры сети. Например, для топологий звезда и шина добиться существенного повышения надежности практически невозможно – все узлы сети будут соединены между собой одним единственным путем и при выходе его из строя сеть не сможет выполнять свои функции.
Гораздо больший простор для оптимизации оставляет так называемая распределенная (ячеистая) топология, допускающая соединение узлов произвольным образом (см. рис. 1). В этом случае, выбирая схему соединения узлов, можно регулировать количество независимых путей, причем, учитывая стоимость каждого соединения, можно произвести оптимизацию сети по стоимости.
Рисунок 1. Пример графа сети ячеистой топологии.
Отметим, что сеть с ячеистой топологией имеет ряд проблем, которых лишены сети с другой топологией, например, сложность организации протокола общения узлов. Необходимо обеспечить сеть аппаратно-программными средствами определения путей доставки сообщений (маршрутизации), время от времени обновляющими эту информацию, поскольку оптимальный маршрут, как уже было сказано, меняется со временем, в зависимости от загруженности и степени работоспособности сети. Кроме того, каждый узел должен осуществлять пересылку сообщения дальше по сети, согласно составленным для данного сообщения маршрутам, что требует пересылки дополнительной информации.
Основная область применения ячеистой топологии – глобальные сети, которые как раз и требуют практически полной отказоустойчивости (выход из строя такой сети окажет влияние на значительное число пользователей). Кроме того, в силу неорганизованности глобальные сети просто не могут быть построены по одной из строгих топологий (звезда или шина). Ячеистая топология может быть построена на основе уже существующих коммуникаций, которые дополняются до заданной степени надежности, и более того может строиться нецентрализованно. Например, если сеть A связана с сетью B с достаточной надежностью, то будет достаточно связать сеть C с необходимой надежностью с сетью В, чтобы получить надежную связь А с С. Непосредственных контактов при этом между организаторами сетей А и C не требуется, что значительно облегчает работу в отношении глобальных сетей.
Любая ячеистая сеть (как, впрочем и вообще любая другая сеть) может быть получена с помощью удаления определенного количества связей между узлам из так называемой полносвязной сети, приведенной на рисунке 2.
Рисунок 2. Пример графа полносвязной сети
Важная особенность полносвязной сети – обеспечение максимально возможного количества независимых путей между узлами. Другими словами, построить сеть более надежную, чем полносвязная по количеству путей невозможно, поскольку, даже вводя дублирующие связи между узлами, можно добиться лишь повышения надежности одного пути, т. е. фактически качества путей, а не их количества. В силу этого свойства при решении задачи оптимизации сети по стоимости в качестве начального варианта следует взять полносвязную сеть, оптимизация которой выполняется уменьшением количества путей до тех пор, пока надежность сети будет оставаться выше требуемой.
Наилучшей формой для представления сети в задаче оптимизации является взвешенный граф, в котором:
-
узлам сопоставляются вершины графа;
-
участки сети, непосредственно связывающие отдельные пары узлов – ребра графа;
-
характеризующие эти связи показатели (стоимость) – веса ребер.
Представив сеть в виде графа, можно описать и задачу ее оптимизации в терминах теории графов. Напомним некоторые определения.
Граф, считается связным, если для любых вершин , есть путь из в . Для любой вычислительной сети, соответствующий ей граф должен быть связным. Невыполнение этого условие нарушает само предназначение сети. Непосредственной значимости для постановки задачи оптимизации это условие не несет, так как в скрытом виде входит в необходимость соблюсти заданную надежность (в сети с несвязным графом для части узлов надежность и скорость связи равны нулю). Для проверки связности сети можно использовать, например, алгоритм Дейкстры.
Путём или цепью в графе называют конечную последовательность вершин, в которой каждая вершина кроме последней соединена ребром со следующей вершиной в данной последовательности вершин. Путь называют простым, если ребра в нём не повторяются, и элементарным, если он простой, и вершины в нём не повторяются.
Путь между парой узлов в сети в терминах теории графов соответствует элементарной цепи. Любой другой вид пути подразумевает наличие петель (циклов в теории графов) на пути сообщения, что хотя и возможно для отдельных сообщении в процессе работы сети, но не влияет на результат оптимизации сети по стоимости.
В теории графов существует два понятия непересекающихся цепей:
-
вершинно-непересекающиеся цепи – цепи, не содержащие общих вершин;
-
непересекающиеся по ребрам цепи – цепи, не содержащие общих ребер.
Для неориентированных графов с этими определениями связаны две теоремы Менгера о реберной и о вершинной связности. Прежде, чем рассматривать сами теоремы необходимо ввести еще следующие понятия:
-
VW-отделяющее множество – такое множество вершин графа, что для любой простой цепи из V в W, хотя бы одна вершина содержится в данном множестве;
-
VW-разделяющее множество – такое множество ребер графа, что для любой простой цепи из V в W, хотя бы одно ребро содержится в данном множестве.
-
разрез – такое VW-разделяющее множество, что любое его подмножество не является VW-разделяющим множеством. Другими словами, в разрез входит ровно по одному ребру от каждой элементарной цепи из V в W.
Опираясь на эти определения, теоремы Менгера будут звучать следующим образом:
Теорема о вершинной связности – максимальное число вершинно-непересекающихся элементарных цепей, соединяющих две различные несмежные вершины V и W графа G, равно минимальному числу вершин в VW-отделяющем множестве
Теорема о реберной связности – максимальное число непересекающихся по ребрам элементарных цепей, соединяющих две различные несмежные вершины V и W графа G, равно минимальному числу ребер в VW-разделяющем множестве
Используя понятие «разрез» теорему о реберной связности можно сформулировать так – число независимых путей из одного узла в другой, равняется мощности разреза между этими двумя узлами. Таким образом, ограничение по надежности сети, в нашей постановке задачи как раз и задаваемое количеством независимых путей между узлами, сводится к определению размеров разрезов между каждой парой узлов в сети.
На рисунках 3 и 4 приведены примеры разделяющего и отделяющего множеств. Следует отметить, что хотя мощность разреза между парой конкретных узлов в заданной сети есть величина постоянная, но состав множества ребер для соответствующего разреза в общем случае может быть разным. Как видно из графа на рисунке 5 мощность любого разреза и количество независимых путей между узлами С и Е равно двум.
Можно сказать, что разрез это наиболее узкое место в сети. Именно на ребра, входящие в разрез, следует в первую очередь обратить внимание при анализе причин недостаточной надежности и пропускной способности сети. Например, на рисунке 6 видно, что разрез между узлами А и Н есть ребро D-E, по которому проходит любой маршрут между этими узлами.
Рисунок 3. Пример СE-разделяющего множества
Рисунок 4. Пример СE-отделяющего множества
Рисунок 5. Пример разреза между узлами С и Е.
Рисунок 6. Пример разреза между узлами A и H.
Для определения мощности разрезов можно использовать теорему Форда-Фалкерсона, которая формулируется на основе понятия транспортной сети.
Транспортная сеть – это граф или ориентированный граф, где каждому ребру соотнесено некое число, называемое пропускной способностью. По каждому ребру сети может протекать поток, при этом он не может быть больше пропускной способности ребра. Для каждой вершины, кроме истока и стока сети, сумма потоков по всем ребрам равна 0. Т. е. все входящие потоки полностью компенсируются исходящими. В математическом выражении это записывается как:
Где - поток по ребру из узла i в узел j
- пропускная способность ребра между узлами i и j
Ns – узел истока, Nt – узел стока
В узел истока направлен бесконечный поток. Узла стока достигает конечный поток, размер которого определяется пропускными способностями цепей между узлами стока и истока.
Теорема Форда-Фалкерсона звучит следующим образом. Если в сети существует по крайней мере одна цепь, идущая из узла истока в узел стока, то максимальный поток в такой цепи, равен минимальной пропускной способности разреза между узлами истока и стока.
Минимальная пропускная способность разреза равна минимуму из пропускных способностей разрезов между данной парой узлов (напомним, что состав разреза может быть разным при одинаковом количестве ребер). Пропускная способность разреза в свою очередь равна сумме пропускных способностей ребер, входящих в него.
Если положить пропускную способность каждого ребра в сети единице, то в соответствии с теоремой Форда-Фалкерсона минимальная пропускная способность разреза будет равна количеству ребер в минимальном разрезе, т.е. количеству независимых по ребрам элементарных цепей, исходя из теоремы Менгера.
Таким образом, для проверки критерия надежности по количеству независимых путей, необходимо рассчитать максимальные потоки для каждой пары узлов на исследуемом графе, положив пропускную способность каждого ребра в сети равной единице. Данный расчет можно сделать с помощью алгоритма Форда-Фалкерсона.
Теория графов предоставляет удобные средства для проверки соблюдения требований по надежности сети, но этого недостаточно для оптимизации, т.к. не учитывается стоимость ребер проектируемой сети. Для поведения оптимизации с учетом этих критериев, следует минимизировать полносвязный граф, удаляя произвольные ребра, а затем оптимизировать, полученный минимальный граф неким способом, не нарушая количество независимых по ребрам цепей в графе.
В качестве метода оптимизации минимального графа можно применить Х-трансформации Стейглица, позволяющие оптимизировать минимальный граф. К сожалению сам по себе алгоритм Х-трансформации не гарантирует сохранение количества независимых путей, поэтому при каждой трансформации надо повторять проверку графа по критерию надежности.
Таким образом, алгоритм обработки графа, соответствующего полносвязной оптимизируемой сети с заданной стоимостью всех ребер заключается в следующем:
-
на первом этапе обрабатывается невзвещенный граф, из которого до тех пор удаляются случайные ребра, пока оставшаяся часть графа проходит проверку по критерию надежности;
-
на втором этапе полученному минимальному графу сопоставляются веса ребер, и он оптимизируется Х-трансформациями.
В программной реализации граф можно представить в виде матрицы, содержащей либо логические значения (если граф невзвешенный), либо вещественный числа (если граф взвешенный). В данной задаче используются сразу две матрицы – одна, заполненная логическими значениями, показывающими наличие/отсутствие связи между двумя конкретными вершинами графа, и вторая, содержащая веса ребер. Поскольку граф не подразумевает наличия петель (ребер, которые соединяют вершину саму с собой) диагонали обеих матриц должны быть заполнены нулями. Обработка графа при таком представлении заменяется изменением значений элементов первой матрицы, так как вторая матрица используется, исключительно для хранения входных данных – весовые коэффициенты ребер не меняются в ходе оптимизации.
Использование алгоритма Дейкстры для проверки связности сети. Основное назначение алгоритма Дейкстры – это вычисление кратчайших расстояний от одного узла до другого, но поскольку сам факт существования кратчайшего расстояния между двумя узлами говорит о том, что они связаны, то данный алгоритм можно использовать и для проверки связности графа.
Рассматривая неориентированный граф, достаточно применить алгоритм Дейкстры для любой из вершин, т.к. если одна вершина связана со всеми, то и все остальные вершины связаны между собой, хотя бы через нее.
Разберем алгоритм Дейкстры по шагам:
-
Каждому узлу сопоставляется метка. Для исходного узла она считается равной нулю, для всех остальных бесконечности. Исходный узел выбирается текущим.
-
Для текущего узла, перебираются все ребра. Если сумма метки текущего узла с весом связи (ее длиной) меньше метки того узла, к которому ведет связь, то его метка заменяется на эту сумму. После перебора текущий узел помечается как проверенный.
-
Выбирается новый текущий узел – непроверенный и с меткой не равной бесконечности. Если такой удалось найти – переходим к шагу два, иначе – к шагу 4.
-
Проверка завершена. Все узлы у которых остались метки равные бесконечности – не связаны с исходным. До остальных кратчайшие расстояния равны их меткам.
При использовании алгоритма Дейкстры для проверки связности сети все веса ребер принимаются равными единице.
Использование алгоритма Форда-Фалкерсона для проверки числа реберно-независимых путей. Особенность алгоритма Форда-Фалкерсона заключается в том, что в нем каждое ребро представлено в виде пары ориентированных ребер, направленных в противоположные стороны, и каждое с пропускной способностью равной способности исходного неориентированного ребра. Однако, при этом суммарный поток по ним никогда не превысит пропускную способность исходного ребра, что достигается следующим образом. Если по одному из этих ребер пускают поток, когда поток по другому не равен нулю, то сначала уменьшается поток на этом втором ребре, а уже затем на оставшеюся величину увеличивается поток на первом. На пример, пусть по ребру АБ направлен поток в 3 условные единицы. По ребру БА необходимо направить поток в 4 условные единицы. В таком случае сначала поток на ребре АБ снизится до нуля, а затем поток на ребре БА возрастет на условную единицу (4 – 3 = 1).
Алгоритм Форда-Фалкерсона может быть описан следующим образом:
-
Устанавливаем все пропускные способности ребер в соответствии с начальными условиями (обнуляем все потоки). Выбираем узел истока и узел стока.
-
Находим очередной путь из узла истока в узел стока, такой на котором все пропускные способности больше нуля (поиском пути занимается отдельный алгоритм, выбираемый заранее). Если путь не найден то переходим к шагу шесть.
-
Определяем наименьшую пропускную способность на выбранном пути.
-
Модифицируем потоки на выбранном пути на величину этого минимального значения с учетом сказанного выше, т.е. потоки по направлению пути возрастут, а против направления пути – уменьшатся.
-
Вычисляем из величин потоков новые пропускные способности, равные разнице изначальной пропускной способности и потока по ребру. При этом поток в противоположном направлении берется с обратным знаком. Например, если по ребру БА с исходной пропускной способностью 5 течет поток в 1 единицу, то у ребра АБ текущая пропускная способность равна 6 единицам.
Рассмотрим работу алгоритма на примере. Исходный граф с пропускными способностями показан на рисунке 7.
Рисунок 7. Исходные пропускные способности ребер
В соответствии с графом построим таблицу 1, где будут указаны текущие пропускные способности между каждой парой узлов с учетом замечания, сделанного выше.
Таблица 1. Пропускные способности ребер на первом шаге.
Узлы |
A |
B |
C |
D |
A |
- |
1 |
101 |
- |
B |
1 |
- |
100 |
101 |
C |
101 |
100 |
- |
1 |
D |
- |
101 |
1 |
- |
Пусть некий алгоритм найдет нам путь из А в D, показанный на рисунке 8.
Рис. 8. Первый найденный путь из A в D.
Минимальная пропускная способность на нем единица, следовательно поток по пути также составит одну единицу. Изменим в соответствии с этим пропускные способности ребер, как показано в таблице 2.
Таблица 2. Пропускные способности ребер после первого шага
Узлы |
A |
B |
C |
D |
A |
- |
0 |
101 |
- |
B |
2 |
- |
99 |
101 |
C |
101 |
101 |
- |
0 |
D |
- |
101 |
2 |
- |
Следует учитывать, что алгоритм поиска пути, пользуется именно этими значениями, а не исходными, т.е. на этом шаге ребра AB и CD не будут рассматриваться при поиске пути. Второй найденный путь показан на рисунке 9.
Рисунок 9. Второй найденный путь.
Опять определим минимальную пропускную способность на этом пути. Это минимум из пропускных способностей AC,CB,BD. Согласно таблице он равен 101, не смотря на то, что исходная пропускная способность для CB была равна 100. Пустив поток в 101 единицу по пути получим результирующие пропускные способности, приведенные в таблице 3.
Таблица 3. Пропускные способности ребер после второго шага
Узлы |
A |
B |
C |
D |
A |
- |
0 |
0 |
- |
B |
2 |
- |
202 |
0 |
C |
202 |
0 |
- |
0 |
D |
- |
202 |
2 |
- |
Третьего прохода алгоритма не будет, поскольку новый путь найти невозможно (все ребра выходящие из А имеют нулевую пропускную способность). Суммарный поток в такой сети будет равен 102 условным единицам.
Важно отметить, что хотя в алгоритме все время идет речь о трех наборах величин: исходных пропускных способностях, текущих пропускных способностях и потоках по ребрам, хранить достаточно только две, поскольку любая из них может быть получена из двух других. Более того, хотя в таблице для наглядности и указывались пропускные способности в обе стороны, но если хранить информацию не о них, а потоках, то поскольку поток идет всегда только в одном направлении, то достаточно хранить только одну величину, а направление указывать знаком. Однако, при реализации такого подхода программно, следует понимать, что отрицательный знак показывает лишь, что поток идет из узла с большим номер в узел с меньшим номером, а никак не отрицательность самого потока. Тогда для вычисления максимального потока эти величины при суммировании следует брать по модулю.
Помимо этого, в программной реализации алгоритма Форда-Фалкерсона для проверки числа реберно-независимых путей используются, как уже говорилось ранее, пропускные способности ребер равные единице, поэтому хранить начальные пропускные способности не имеет смысла (это просто матрица из единиц, с нулями на главной диагонали).
Для поиска очередного пути используется обычно один из двух алгоритмов: «Поиск в ширину» или «Поиск в глубину». Выбор алгоритма никак не влияет на конечный результат, т.к. для алгоритма Форда-Фалкерсона доказана сходимость за конечное время при любом алгоритме поиска при условии, что пропускные способности целые числа. Единственная разница будет заключаться в виде находимых путей.
Алгоритм поиска в глубину заключается в следующем:
-
Все узлы помечаются как непросмотренные. Текущим узлом объявляется исходный (узел истока). Он помечается, как просмотренный.
-
Если текущий узел – конечный, то алгоритм завершен успехом. Возвращается путь, включающий все узлы, которые объявлялись по очереди текущими.
-
Иначе новым текущим выбирается непросмотренный узел, соединенный ребром с текущим. После этого возврат к шагу два.
-
Если не существует непросмотренных узлов, соединенных ребром с текущим, то текущий узел помечается, как просмотренный и происходит возврат к предыдущему текущему узлу.
-
Если возвращаться некуда (текущий узел – это узел истока), то алгоритм завершен неудачей.
Следует отметить, что алгоритм Форда-Фалкерсона, а вернее используемый им алгоритм поиска пути, справляется с задачей проверки связности графа, ни чуть не хуже алгоритма Дейкстры, применение которого в общем избыточно, хотя и может быть оправдано, если связность нарушена у последних узлов, поскольку выполнение алгоритма Форда-Фалкерсона для одного узла происходит значительно медленнее выполнения алгоритма Дейкстры для одного узла.
Использование Х-трансформаций Стейглица для оптимизации минимизированной сети. По сути Х-транформации, позволяют выполнить в определенных пределах минимизацию/максимизацию графа по суммарному весу ребер с сохранением их общего числа. В общем виде алгоритм Х-трансформаций выглядит следующим образом:
-
Находим четыре узла A, B, C, D такие, что существуют ребра AB и CD и не существует ребер AD и CB. При этом эти две пары не должны быть помечены, как рассмотренные вместе. Если подобной четверки нет – то заканчиваем алгоритм.
-
Проверяем выполнение условия – сумма стоимости AB и CD меньше суммы стоимости AD и CB. Если это не так, помечаем пары, как рассмотренные вместе и возвращаемся к первому шагу
-
Если условие выполняется, то делаем замену первой пары ребер на вторую и модифицированный граф проверяем на количество реберно-независимых путей.
-
Если граф прошел проверку – сохраняем изменения, сбрасываем пометки о просмотренности пар и возвращаемся к первому шагу. Иначе – отменяем изменения, помечаем четыре узла, как рассмотренные вместе и возвращаемся к первому шагу.
Как видно, из представленного алгоритма – существует необходимость хранить информацию о том, какие пары уже были рассмотрены вместе друг с другом. В программной реализации это требование может быть сведено к менее эффективному, но более простому в реализации, т.е. последовательному перебору всех размещений (упорядоченных наборов) из 4 узлов из всего множества узлов графа. При каждой удачной трансформации, перебор начинается сначала. Это приводит к удвоению числа проверок по сравнению с необходимым. Хотя порядок узлов внутри пар и важен, но порядок самих пар нет, что избавляет от необходимости содержать в памяти громоздкую структуру, показывающую какие из четверок уже были рассмотрены.
Описание программы, моделирующей процесс оптимизации
Программа ARTNET, моделирующая процесс оптимизации сети по стоимости разработана на основе приведенных выше алгоритмов. Порядок работы программы выглядит следующим образом:
-
Ввод пользователем входных данных: целочисленной матрицы требуемого количества независимых путей между узлами ║А║ (симметричной матрицы, поскольку программа обрабатывает только неориентированные графы, т .е. дуплексные и полудуплексные сети) и целочисленной матрицы стоимостей связей между узлами ║D║ (с точки зрения анализа - треугольной, но для удобства восприятия, достраиваемой до симметричной). Вторая матрица может быть заменена на матрицу, показывающую связь скоростей со стоимостью каналов без внесения каких-либо изменений в программу, поскольку алгоритмы никак не зависят от смыслового значения, стоящего за весовыми характеристиками, соотносимыми ребрам.
-
Минимизация матрицы (графа), путем случайного удаления ребер и последующей проверки остаточного графа с помощью алгоритмов Дейкстры и Форда-Фалкерсона.
-
Оптимизация полученной матрицы с помощью Х-трансформацией Стейгница до получения локально оптимальной матрицы.
Входные данные в виде матриц, упомянутых в п.1, формируются автоматически, согласно номеру варианта i, заданному студенту. В зависимости от этого номера программа вычисляет следующие значения:
-
Количество узлов, как N=7+i(mod 4);
-
Количество реберно-независимых путеей между узлами, как :
Akm = max {|(k+i)(mod 4) – (m+i)(mod 4)|, i2 (mod 4), 1}
-
Стоимость связи между узлами, как:
Dkm = 5[(k+m)(mod 5)] + 20(i)(mod 6) + i2(mod 10);
Студент имеет возможность отследить ход выполнения программы в пошаговом режиме с заданной степенью детализации.
Интерфейс программы состоит из трех вкладок, каждая из которых соответствует одному из трех блоков – обработки входных данных, минимизации и оптимизации.
На вкладке входных данных, приведенной на рисунке 10, присутствуют следующие элементы управления:
-
Поле «Количество узлов» и кнопка «Изменить размеры сети», позволяющие задать новое количество узлов в сети, как целое положительное число.
-
Поле «Номер варианта» и кнопка «Заполнить таблицы согласно варианту» - позволяет автоматическое заполнение таблиц по номеру варианта выбранного пользователем.
-
Таблица количества реберно-независимых связей между узлами сети - позволяет ручной ввод/модификацию автоматически введенных значений числа реберно-независимых связей для каждой пары в узлов сети. Представляет собой симметричную матрицу, что автоматически поддерживается при пользовательском вводе (попытки изменить значение диагональных элементов блокируются).
-
Таблица количества стоимостей связей между узлами сети - позволяет ручной ввод/модификацию автоматически введенных значений числа реберно-независимых связей для каждой пары в узлов сети. Представляет собой треугольную матрицу, автоматически дополняемую до симметричной при вводе (попытки изменить значение диагональных элементов блокируются).
-
Кнопка «Завершить ввод», передающая управление блоку обработки входных данных, который считывает данные из таблиц и при необходимости сообщает о некорректности введенных данных.
Рисунок 10. Вкладка «Ввод данных»
Вкладка минимизации, приведенная на рисунке 11, помимо предоставления средств управления блоком минимизации, также содержит и средства графического отображения состояния алгоритмов минимизации.
На данной вкладке присутствуют следующие элементы:
-
Кнопка «Минимизировать/Продолжить» вызывает блок минимизации, передавая ему выбранный пользователем режим, после чего отображается новое состояние оптимизируемой сети.
-
Группа переключателей «Режимы», позволяющая выбрать один из трех режимов детализации работы алгоритмов.
-
Текстовое поле вывода, поясняющее текущие действия алгоритма.
-
Графическое поле, отображающее текущее состояние графа и пометки, соответствующие текущему состоянию алгоритма.
Рисунок 11. Вкладка «Минимизация»
Вкладка оптимизации, приведенная на рисунке 12, аналогично вкладке минимизации, содержит как управляющие элементы, так и средства графического отображения состояния алгоритма, а также поля вывода окончательной информации по минимизации/оптимизации сети.
На данной вкладке присутствуют следующие элементы:
-
Кнопка «Оптимизировать/Продолжить» вызывает блок оптимизации, передавая ему номер выбранного пользователем режима, после чего отображается новое состояние.
-
Группа переключателей «Режимы», позволяющая выбрать один из трех режимов детализации работы алгоритмов.
-
Текстовое поле вывода, поясняющее текущие действия алгоритма.
-
Графическое поле, отображающее текущее состояние графа и пометки, соответствующие текущему состояния алгоритма.
-
Текстовые поля «Стоимость минимизированной сети» и «Стоимость оптимизированной сети» - предоставляющие окончательную оценку стоимости сети после минимизации и оптимизации соответственно и равную сумме стоимостей всех связей в сети (заполняются после завершения процедур минимизации/оптимизации).
Рисунок 12. Вкладка «Оптимизация»
Рекомендуется следующий порядок действий при работе с программой:
-
Перейдите на вкладку «Ввод данных» и выберите для себя способ заполнения входных таблиц – ручной или автоматический.
-
В случае автоматического способа введите номер варианта и нажмите на кнопку «Заполнить таблицы согласно варианту».
-
В случае ручного ввода, заполните обе таблицы положительными целыми числами, не оставляя пустых мест. Достаточно заполнить только половину таблицы, относительно главной диагонали – вторая будет заполненная автоматически при вводе первой. Значения на главной диагонали изменить нельзя.
-
Нажмите кнопку «Завершить ввод» и в случае сообщения об ошибке исправьте неверное значение, указанное в сообщении. Повторяйте данный шаг, пока ввод не будет завершен без сообщений об ошибках.
-
Перейдите на вкладку «Минимизация» и выберите предпочитаемую степень детализации.
-
Нажмите кнопку «Минимизировать», чтобы начать процесс минимизации. В случае степеней детализации «Пошаговый» и «Детализованный» для переходу к следующему шагу необходимо нажимать кнопку «Продолжить». В этом случае также можно менять степень детализации по мере выполнения алгоритма. Однако, следует учесть, что смена режима на «Автоматический» и нажатие кнопки «Продолжить» приведет к немедленному автоматическому завершению работы алгоритма без возможности прервать этот процесс, т.е. вернуться после этого назад уже нельзя.
-
После завершения минимизации перейдите на вкладку «Оптимизация».
-
Нажмите кнопку «Оптимизировать», чтобы начать процесс «Оптимизации». К этому пункту применимы все замечания, указанные в пункте «6».
-
После завершения оптимизации, вы можете найти окончательную стоимость локально оптимальной сети в правом нижнем углу вкладки «Оптимизация». Помните, что это именно локально оптимальное значение и последующее выполнение минимизации и оптимизации на тех же входных данных могут дать другой, возможно лучший результат. Программа не гарантирует нахождение глобального минимума стоимости за конечное число использований.
Порядок выполнения работы
-
Запустить программу ARTNET и ввести исходные данные в соответствии с номером варианта задания i.
-
Используя программу ARTNET, получить три локально оптимальные структуры сети.
-
Используя алгоритм Форда–Фалкерсона, проверить правильность определения числа реберно-независимых цепей между парой вершин, имеющих наибольшее значение в матрице ║А║, по одной из полученных локально оптимальных структур.
-
Для выбранной в п.3 пары вершин в соответствии с определениями построить:
-
VW-отделяющее множество;
-
VW-разделяющее множество;
-
разрез.
Сделать выводы по результатам выполненной работы, сравнив по стоимости локально оптимальные структуры и проверив правильность соблюдения условий при выполнении Х-трансформаций для одной из локально оптимальных структур.
Сдать отчет преподавателю.
Содержание отчета
-
Формулировка задания.
-
Краткое описание алгоритма оптимизации.
-
Полученные в результате работы программы локально оптимальные структуры сети.
-
Сформированные для выбранной пары вершин множества ребер (VW-отделяющее множество, VW-разделяющее множество, разрез).
-
Выводы.
Литература
-
Компьютерные сети : принципы, технологии, протоколы: учебное пособие/ В. Г. Олифер, Н. А. Олифер. - 3-е изд.. - СПб.: ПИТЕР, 2007. - 957 с.
-
Вычислительные сети: учебное пособие/ Ю. Д. Крылов; С.-Петерб. гос. ун-т аэрокосм. приборостроения. - СПб.: ГОУ ВПО "СПбГУАП", 2006. - 124 с.
-
Вычислительные системы, сети и телекоммуникации: учебник/ А. П. Пятибратов, Л. П. Гудыно, А. А. Кириченко; Ред. А. П. Пятибратов. - 4-е изд., перераб. и доп.. - М.: Финансы и статистика: Инфра-М, 2008. - 736 с.