Распределенный алгоритм поиска центра неориентированного дерева

Распределенные вычисления, рассматриваемые на примере модели синхронной отправки сообщений в сети, множество процессоров связанных модулями связи. Поиск центра неориентированного дерева, псевдокод алгоритма. Анализ трудоемкости разработанного алгоритма.

Рубрика Математика
Вид контрольная работа
Язык русский
Дата добавления 29.06.2012
Размер файла 482,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Аннотация

Предметом исследования в данной работе являются распределенные вычисления, рассматриваемые на примере модели синхронной отправки сообщений в сети (множество процессоров связанных модулями связи). Сеть представляется неориентированным деревом, при этом каждая вершина дерева знает лишь свой номер и степень. В заданной модели был разработан распределенный алгоритм поиска центра неориентированного дерева с трудоемкостью по числу шагов O(log(n)) и с трудоемкостью по числу сообщений O(n*log(n)).

Введение

Распределенные вычисления - это способ решения трудоемких вычислительных задач с использованием нескольких процессоров или компьютеров, чаще всего объединенных в параллельную вычислительную систему. [1]

Выполнение последовательных вычислений в распределенных системах имеет смысл в рамках решения многих задач одновременно, например, в распределенных системах управления. Особенностью распределенных многопроцессорных систем, в отличие от локальных суперкомпьютеров, является возможность неограниченного наращивания производительности за счет масштабирования. [2]

Появление распределенных вычислений относят к 1973 году, когда Джон Шох и Джон Хапп из калифорнийского научно-исследовательского центра Xerox PARC написали программу, которая по ночам запускалась в локальную сеть PARC и заставляла работающие компьютеры выполнять вычисления. [2]

В 1978 году советский математик Виктор Глушков работал над проблемой макроконвейерных распределённых вычислений. Он предложил ряд принципов распределения работы между процессорами. [2]

В 1988 году Арьен Ленстра и Марк Менес написали программу для факторизации длинных чисел. Для ускорения процесса программа могла запускаться на нескольких машинах, каждая из которых обрабатывала свой небольшой фрагмент. [2]

28 января 1997 года стартовал конкурс RSA Data Security на решение задачи взлома методом простого перебора 56-битного ключа шифрования информации RC5. Благодаря хорошей технической и организационной подготовке проект, организованный некоммерческим сообществом distributed.net, быстро получил широкую известность. [2]

Распределенные вычисления нашли свое применение в астрономии (проект SETI@home, целью которого является поиск внеземных цивилизаций путем распределения космического шума, записываемого радиотелескопом, на отдельные блоки), в биологии (проект Folding@home, целью которого является изучение строения дефектных белков), а также в других сферах науки включая и математику.

Целью данной работы является разработка распределенного алгоритма для поиска центра неориентированного дерева.

Описание модели

Пусть имеется множество процессоров связанных между собой модулями связи. Будем моделировать распределенную систему с помощью ориентированного графа G = (V,E), где:

· V - множество вершин графа, соответствующее множеству процессоров.

· Е - множество ребер графа, соответствующее модулям связи.

Введем следующие обозначения:

out_nbrsi - это множество соседних с i вершин, к которым выходят ребра из i;

in_nbrsi - это множество соседних вершин, ребра которых, ведут к i;

Введем в рассмотрение понятие расстояния. Под расстоянием от вершины i до вершины j (или distance(i,j)) мы будем понимать кратчайший ориентированный путь из i в j (если такой конечно существует, в противном случае distance(i,j) = ?).Также предположим, что имеется некоторый фиксированный алфавит A всевозможных сообщений, включая и пустое. Пусть каждая вершина графа имеет следующие компоненты:

· statesi - множество состояний вершины (необязательно конечное);

· starti - множество начальных состояний (непустое подмножество множества состояний);

· msgsi - это функция генерирования сообщений из A для всех out_nbrsi;

· transi - это функция перехода состояния, переводящая вершину из текущего состояния в последующее под воздействием сообщений от in_nbrsi;

Выполнение вычислений в распределенной системе начинается, когда все процессоры находятся в начальном состоянии, а каналы связи пусты. Тогда процессоры выполняют следующие действия:

1. Осуществляют генерацию сообщений для всех соседей, которым они могут их отправить. Отправляют сообщения по каналу связи.

2. Выполняют переход в последующее состояние под воздействием множества принятых сообщений.

Комбинация данных действий называется шагом. Выделим во множестве состояний особые состояния, называемые конечными - halting states. Они характеризуются отсутствием активности процессоров, то есть вершины перестают генерировать сообщения. Критерием остановки распределенных вычислений считается приход всех вершин в конечные состояния.

Возможны задачи, в которых распределенная система представляется неориентированным графом. Этот случай может быть описан моделью, приведенной выше, при условии, что все ребра являются двунаправленными, а множества out_nbrsi и in_nbrsi составляют множество nbrsi (множество соседей вершины i). В данной работе имеет место именно этот случай: распределенная система представлена неориентированным деревом. [9]

Целью данной работы является разработка распределенного алгоритма для поиска центра неориентированного дерева. Центром дерева называется множество вершин, для которых эксцентриситет совпадает с радиусом, т.е. Center(G) = {xV(G): ecc(x) = rad(G)}. Эксцентриситетом называют расстояние до самой удаленной вершины от заданной. Радиус - это наименьший из эксцентриситетов графа. [3]

Введем дополнительные обозначения для описания алгоритма:

Пусть Si - это множество сообщений, отправленных вершиной с номером i; Ri - это множество принятых сообщений вершины с номером i; degi - степень i-ой вершины; n_degi - степени вершин соседних с i-ой;

Xi - это состояние i-ой вершины; Xi = (или state и halting_state).

Заметим, что заблокированная вершина не может отправлять сообщения своим соседям (т.е. множество состояний вершин состоит из двух элементов, при чем Xi = 0 является конечным состоянием для вершины или halting_state).

Функция перехода состояния аналогична функции в модели с ориентированным графом (transi). Введем множество М незаблокированных вершин (это делается для наглядности, в реализации введение дополнительных структур данных не требуется, и только процессоры будут знать свое состояние).

Описание алгоритма

Разработанный распределенный алгоритм базируется на последовательном алгоритме поиска центра неориентированного дерева, основная идея которого заключается в следующем: на вход поступает дерево, с которого мы начинаем последовательно отрывать листы до тех пор, пока не останется либо одна, либо две центральные вершины. [3]

Опр. Лист - это вершина дерева, не имеющая потомков (ее степень равна единице). [3]

Приведем словесное описание алгоритма (поэтапное):

1. Первичная инициализация: множество незаблокированных вершин совпадает с множеством всех вершин дерева, степени всех вершин нулевые.

2. Отправка сообщений №1: каждая незаблокированная вершина отправляет соседям свой уникальный идентификационный номер - UID.

3. Подсчет степени вершин (синхронно).

4. Отправка сообщений №2: каждая незаблокированная вершина отправляет соседям свою степень - degi.

5. Для каждой незаблокированной вершины проверяем выполнение следующих условий: если степень вершины равна единице и степень соседа (единственного) не равна единице, то данная вершина блокируется (Xi = 0). Если степень вершины равна нулю (все соседние вершины заблокированы), то алгоритм завершает свою работу (первый критерий остановки, если центр состоит из одной вершины). Если степень вершины равна единице и степень соседа также равна единице, то алгоритм завершает свою работу (второй критерий остановки, если центр состоит из двух вершин).

6. Если алгоритм незавершен, то повторяются все пункты при условии, что часть вершин была заблокирована.

По завершении работы алгоритма будут найдены либо одна, либо две центральные вершины (при этом сами вершины будут знать, что они являются центром).

Псевдокод алгоритма:

1. Initialization(M); (это функция инициализации, в самом начале каждая вершина будет иметь нулевую степень degi = 0 и M:=V)

2. Sent(M, UID); (это функция синхронной отправки сообщений, где каждая незаблокированная вершина (процессор) отправит соседям свой UID)

3. Deg(M); (каждая вершина посчитает свою степень)

4. Sent(M, deg(M)); (каждая незаблокированная вершина отправит свою степень)

5. for i:=1 to N do

6. if (( deg i= 1)&&(degi != n_degi)) (блокировка вершин)

7. Xi = 0, M = M \ i;

8. if ((( degi= 1)&&(n_degi = 1))||(degi = 0)) (это критерии остановки)

9. Break;

Все пункты приведенного алгоритма выполняются распределено (для всех процессоров одновременно).

Пример

Рассмотрим разработанный распределенный алгоритм на конкретном примере.

Рис. 1.1

Пусть сеть представлена неориентированным деревом, изображенным на Рис. 1.1. На первом шаге алгоритма, множество незаблокированных вершин совпадает с множеством всех вершин дерева, т.е. M = {1,2,3,4,5,6,7,8,9,10,11,12,13}. Выполняя две последовательные отправки сообщений, а также подсчет степеней вершин (пункты 2 - 4 алгоритма), установили, что на первом шаге алгоритма будут заблокированы вершины с номерами 1,2,3,4,5,6. Действительно, степени этих вершин равны единице и степени их соседей отличны от единицы (например, для вершины с номером 5 deg = 1, а n_deg = 4), а значит они будут заблокированы. Вершины, заблокированные на первом шаге, отмечены на Рис. 1.2. красным цветом.

Рис. 1.2

На втором шаге алгоритма множество М = {7,8,9,10,11}. Все вершины вновь имеют степень равную нулю (инициализация). После двух последовательных отправок сообщений установили, что вершины с номерами 7,8,9,10 будут заблокированы на втором шаге. К примеру, для вершины с номером 9 deg = 1 (потому что вершина с номером 3 была заблокирована на предыдущем шаге и не может отправить сообщение), n_deg = 3, а значит, она должна быть заблокирована. Аналогичные рассуждения справедливы и для других вершин. Вершины, заблокированные на втором шаге, отмечены на Рис. 1.3. красным цветом.

Рис. 1.3

На третьем шаге алгоритма множество М = {11,12,13}. Для вершин вновь произведена инициализация. После двух последовательных отправок сообщений установили, что вершины с номерами 11 и 12 будут заблокированы на данном шаге. Для i = 11: deg = 1, n_deg = 2; для i = 12: deg = 1, n_deg = 2. Данные вершины отмечены красным цветом на Рис. 1.4. Проводя следующий шаг метода, установили, что вершина с номером 13 является центральной (выполнится первый критерий остановки, т.к. deg = 0).

Рис. 1.4

В рассмотренном примере, дерево имеет одну центральную вершину с номером 13. Не трудно предположить, что разработанный распределенный алгоритм дает правильный результат и в случае, когда дерево имеет две центральные вершины.

Размещено на http://www.allbest.ru/

Рис. 2

К примеру, рассмотрим дерево, представленное на Рис. 2. Число вершин дерева равно шести. На первом шаге метода множество незаблокированных вершин М = {1,2,3,4,5,6}, а степени всех вершин нулевые (первичная инициализация). После двух последовательных отправок сообщений и подсчета степеней вершин установили, что на первом шаге алгоритма будут заблокированы вершины с номерами 1,2,3,4 (их степени равны единице, а степени соседей равны трем). На следующем шаге алгоритма сработает второй критерий остановки (степени вершин 5 и 6 равны единице и они являются соседями), поэтому центр дерева состоит из двух вершин с номерами 5 и 6.

Заключение

неориентированное дерево псевдокод алгоритм

Проведем анализ трудоемкости разработанного алгоритма. Для распределенных алгоритмов используют две оценки трудоемкости: по числу шагов метода и по числу отправленных непустых сообщений. Оценка по числу шагов является более важной и предпочтительной на практике.

Оценим трудоемкость алгоритма по числу шагов. Очевидно, что число шагов метода совпадает с радиусом дерева (иначе это противоречило бы определению центра графа). Таким образом, для оценки числа шагов алгоритма необходимо провести оценку радиуса дерева с n вершинами. Предположим, что все вершины кроме листов имеют k потомков, где k - это максимальная из степеней вершин дерева или степень сети. Будем рассматривать уровни дерева от его центра и до листов. Тогда запишем общее число вершин дерева, суммируя количество вершин на каждом уровне, получим:

1 + k + k2 + … + kR = n, где R - это радиус дерева или число уровней, а n - это общее число вершин. Очевидно, что выражение слева представляет геометрическую прогрессию с множителем k. Запишем ее сумму в виде: kR - 1 = n*(k - 1) и выразим радиус R = logk(1 + n*(k - 1)) ? logk(n). Таким образом, оценка числа шагов имеет вид O(log(n)).

Аналогичным способом находится оценка по числу сообщений O(n*log(n)). На каждом шаге число сообщений можно оценить O(n), а оценка числа шагов O(log(n)).

Таким образом, результатом данной работы является распределенный алгоритм поиска центра неориентированного дерева, имеющий трудоемкость по числу шагов O(log(n)) и трудоемкость по числу сообщений O(n*log(n)).

Список литературы:

1. Эндрю Таненбаум, Мартин ван Стеен Распределенные системы. Принципы и парадигмы = Andrew S. Tanenbaum, Maarten van Steen. "Destributed systems. Principles and paradigms". -- Санкт-Петербург: Питер, 2003. -- 877 с.

2. Словарь по кибернетике Под редакцией академика В. С. Михалевича. -- 2-е. -- Киев: Главная редакция Украинской Советской Энциклопедии имени М. П. Бажана, 1989. -- 751 с.

3. Алексеев В.Е., Таланов В.А. Графы. Модели вычислений. Структуры данных: Учебник. - Нижний Новгород: изд-во ННГУ, 2005. 307 с.

4. A. Goldberg, M. Luby, S. Plotkin and G.E. Shannon, Parallel symmetry breaking in sparse graphs SIAM J. Disc. Math. Vol. 1, No. 4, pp. 434-446, November 1988.

5. Panconesi A. and Rizzi R., Some simple distributed algorithms for sparse networks. , 2001. p7.

6. David A. Patterson and John L. Hennessy. Computer Organization and Design (Second Edition) Morgan Kaufmann Publishers, 1998. ISBN 1-55860-428-6, pg 715

7. В.А. Крюков «Операционные системы распределённых вычислительных систем (распределённые ОС)». Лекции для 4 курса факультета ВМК МГУ.

8. David W. Walker, "The design of a standard message-passing interface for distributed memory concurrent computers", Parallel Computing, v.20, n 4, April 1994, 657-673.

9. Nancy Lynch, Distributed Algorithms, San Francisco Morgan Kaufmann Publishers, 1996 , pp 904.

Размещено на Allbest.ru


Подобные документы

  • Остовное дерево связного неориентированного графа. Алгоритм создания остовного дерева, его нахождение. Сущность и главные особенности алгоритма Крускала. Порядок построения алгоритма Прима, вершина наименьшего веса. Промежуточная структура данных.

    презентация [140,8 K], добавлен 16.09.2013

  • Описание заданного графа множествами вершин V и дуг X, списками смежности, матрицей инцидентности и смежности. Матрица весов соответствующего неориентированного графа. Определение дерева кратчайших путей по алгоритму Дейкстры. Поиск деревьев на графе.

    курсовая работа [625,4 K], добавлен 30.09.2014

  • Алгоритм перехода к графическому представлению для неориентированного графа. Количество вершин неориентированного графа. Чтение из матрицы смежностей. Связи между вершинами в матрице. Задание координат вершин в зависимости от количества секторов.

    лабораторная работа [34,0 K], добавлен 29.04.2011

  • Алгоритм построения минимального остовного дерева. Последовательность выполнения алгоритма Прима, его содержание и назначение. Процедура рисования графа. Порядок составления и тестирования программы, ее интерфейс, реализация и правила эксплуатации.

    курсовая работа [225,0 K], добавлен 30.04.2011

  • Общая характеристика распространенных проблем поиска величины максимального потока в сети при помощи алгоритма Форда-Фалкерсона. Знакомство с задачами по дискретной математике. Рассмотрение особенностей и этапов постройки дерева кратчайших расстояний.

    контрольная работа [740,3 K], добавлен 09.03.2015

  • Изучение основных вопросов теории графов и области ее применения на практике. Разработка алгоритма кластеризации по предельному расстоянию и построение минимального остовного дерева каждого кластера. Результаты тестирований работы данного алгоритма.

    курсовая работа [362,9 K], добавлен 24.11.2010

  • Минимальное остовное дерево связного взвешенного графа и его нахождение с помощью алгоритмов. Описание алгоритма Краскала, возможность строить дерево одновременно для нескольких компонент связности. Пример работы алгоритма Краскала, код программы.

    курсовая работа [192,5 K], добавлен 27.03.2011

  • Понятия и определения орграфа и неориентированного графа, методы решения. Неориентированные и ориентированные деревья. Подробное описание алгоритмов нахождения кратчайших путей в графе: мультиграф, псевдограф. Матрица достижимостей и контрдостижимостей.

    курсовая работа [251,0 K], добавлен 16.01.2012

  • Математическое обоснование алгоритма вычисления интеграла. Принцип работы метода Монте–Карло. Применение данного метода для вычисления n–мерного интеграла. Алгоритм расчета интеграла. Генератор псевдослучайных чисел применительно к методу Монте–Карло.

    курсовая работа [100,4 K], добавлен 12.05.2009

  • Теория динамического программирования. Понятие об оптимальной подструктуре. Независимое и полностью зависимое множество вершин. Задача о поиске максимального независимого множества в дереве. Алгоритм Брона-Кербоша как метод ветвей, границ для поиска клик.

    реферат [224,1 K], добавлен 09.10.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.