Построение распределенного алгоритма поиска структурных различий в категориях изоморфизма
Разработка распределенного алгоритма для решения задачи поиска различий в графах с точки зрения изоморфизма. Применение алгоритма на примере поиска структурных различий в web-графах. Поиск взаимнооднозначного соответствия между вершинами двух графов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 30.04.2018 |
Размер файла | 560,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Построение распределенного алгоритма поиска структурных различий в категориях изоморфизма
Воробьева М.С.1, Воробьев А.М.2, Егоров Ю.А.3
1Кандидат технических наук, доцент, 2Аспирант, 2Магистрант, Тюменский государственный университет
Аннотация
Цель работы: разработать распределенный алгоритм для решения задачи поиска структурных различий в графах с точки зрения изоморфиза, показать применение алгоритма на примере поиска структурных различий в web-графах. В результате сформулирована задача поиска различий в графах, описан алгоритм поиска структурных различий и проведен эксперимент, подтверждающий, что структуры ресурсов имеют значение для продвижения.
Ключевые слова: Изоморфизм подграфов, сравнение графов, объекты сложной структуры, поиск структурных различий, web-графы
Abstract
The main goal of this work is to develop a distributed algorithm for solution of the problem of search for structural differences in graphs from the point of view of isomorphism, and to show the application of the algorithm on the example of search for structural differences in web-graphs. The problem of search for differences in graphs is formulated as a result, the algorithm for structural differences searching is described as well, and finally the experiment was conducted, confirming the resource structures are important for progression.
Keywords: Isomorphism of subgraphs, comparison of graphs, objects of complex structure, search for structural differences, web-graphs
По различным оценкам основная доля сети Интернет - 60-90% - приходит на интернет-ресурсы через поисковые системы, такие как Google, Яндекс и Baidu. С ростом конкуренции на интернет-площадках поисковые системы с каждым годом ужесточают требования к интернет-ресурсам: поисковые системы отслеживают тысячи факторов, на основании которых формируется поисковая выдача. Постоянная разработка и внедрение новых алгоритмов ранжирования обязывают владельцев интернет-ресурсов уделять особое внимание множеству факторов ранжирования.
Кроме того, в современных алгоритмах ранжирования наиболее простые для манипуляции факторы стали менее весомы для поисковых роботов, и изменение их теперь уже не столь значимо отражается на позициях сайта. Например, если раньше для попадания сайта на первое место достаточно было иметь большую ссылочную массу (количество ссылающихся внешний ресурсов на сайт), превышающую конкурентов, то сейчас значимость этого фактора сильно занижена в силу появления различных инструментов воздействия на этот фактор и, как следствие, выведение в лидирующие позиции сайтов, которые могут не в полной мере отвечать запросам пользователей.
Если рассмотреть каждый отдельный сайт в виде графа, где вершиной графа является страница интернет-сайта, а ребром - ссылка на страницу, то при сравнении эталонного интернет-ресурса и продвигаемого сайта можно определить параметры и их значения, необходимые для достижения желаемых результатов.
Пусть даны объекты сложной структуры S и T, где каждый объект представляет собой граф , где - множество вершин, - множество ребер графа. Каждая вершина является HTML-страницей и имеет кортеж признаков , где - характеристика HTML-страницы. - множество ребер графа, где - это функция перехода от страницы u к странице v.
Необходимо провести сравнение графов S и T и найти граф такой, что:
1) - множество вершин графа S, соответствующих условиям:
· Вершина не имеет соответствующей вершины в графе T;
· Вершина имеет различные значения соответствующих признаков с соответствующей вершиной ;
2) - множество ребер графа S, не имеющих соответствующих ребер в графе T.
Для сравнения структур графов S и T решается задача изоморфизма графов - поиск взаимнооднозначного соответствия между вершинами двух графов. Для решения разработан распределенный алгоритм поиска структурных различий, в основу которого легли подходы и методы, описанные в работах [1], [3], [4]. Входными данными являются графы представленных с помощью матриц достижимости . Выходными -множество всех матриц перестановок для графов S и T, где каждая матрица перестановок представляет собой биекцию между вершинами графов. Асимптотическая сложность составляет , где N - количество вершин в графе S, M - количество вершин в графе T.
Алгоритм был разработан для модели акторов и включает в себя:
· управляющий актор, порождающий конечное количество вычислительных акторов и управляющий списком заданий;
· вычислительные акторы могут отправлять управляющему актору новые задания и запрашивать задания на выполнение
· актор вывода, осуществляющий формирование и обработку конечного результата.
Задание, которое выполняется вычислительным актором, представляет собой кортеж из двух элементов:
· промежуточная матрица перестановок P, которая потенциально может быть искомой матрицей перестановок, удовлетворяющей условию ;
· K - номер строки матрицы P, которую необходимо заполнить.
Управляющий актор инициализирует решение задачи, управляет списком заданий и пулом акторов, завершает решение задачи.
Инициализация осуществляется с помощью функции start(M1,M2,Workers_count), где M1 - матрица смежности графа S, M2 - матрица смежности графа T, Workers_count - количество потоков, которые необходимы для решения задачи. Данная функция осуществляет создание первого задания {P,0}, где P - матрица перестановок, регистрацию глобального имени актора (server), создание вычислительных акторов.
Функция loop(Workers,Tasks,Workers_count) получает и обрабатывает сообщения, где Workers - список вычислительных акторов, запросивших новое задание, Tasks - список заданий, ожидающих выполнения, Workers_count - количество вычислительных акторов. Форматы сообщений, которые принимает актор и вызовы функций, осуществляются при получении сообщений (Таблица 1).
Таблица 1 - Сообщения, принимаемые управляющим актором
Формат сообщения |
Описание |
|
{take_task, Wpid} |
Запрос от вычислительного актора на получение задания, где Wpid - адрес, по которому нужно отправить задание. Вызывает функцию send_task, после - функцию loop |
|
{new_task, Newp, K} |
Запрос от вычислительного актора на добавление задания в список, где Newp - одна из матриц перестановок для обработки, K - строка Newp для заполнения. Вызывает функцию add_task, после - функцию loop |
Выдачу заданий вычислительнымакторам осуществляет функция send_task(Workers,Tasks,Wpid,Workers_count), где Workers - список акторов, ожидающих новое задание; Tasks - список заданий; Wpid - адрес, по которому нужно отправить новое задание; Workers_count - общее количество вычислительных потоков. Данная функция выбирает одно из трех поведений в зависимости от входных данных:
· если список заданий, ожидающих обработку, пуст, управляющий актор добавляет вычислительный актор в список ожидающих новое задание;
· если список заданий, ожидающих обработку, пуст, и все вычислительные акторы ожидают нового задания, значит, все задания выполнены, и управляющий актор вызывает функцию завершения решения;
· если список заданий не пуст, первое задание из списка заданий отправляется запросившемуактору.
Функция send_task возвращает Nworkers - новый список акторов, ожидающих новое задание и Ntasks - новый список заданий.
Функция add_task(Workers,Tasks,P,K), где Workers - список акторов, ожидающих новое задание; Tasks - список заданий; P - матрица перестановок, полученная от вычислительного актора; K - номер строки матрицы P, который необходимо заполнить, добавляет задания в очередь и реализует одно из двух поведений в зависимости от входных данных:
· если список акторов, ожидающих задание не пуст, новое задание разу же отправляется первому актору из списка, минуя список заданий;
· если список акторов, ожидающих задание пуст, новое задание записывается в начало списка заданий.
Функция возвращает Nworkers - новый список акторов, ожидающих новое задание; Ntasks - новый список заданий.
Терминарция работы алгоритма осуществляется с функцией close(Workers), где Workers - список акторов, ожидающих новое задание, выполняя которую, актор отправляет всем ожидающим акторам сообщение о том, что задача решена и завершает работу управляющего актора.
Вычислительный актор, выполняющий поиск матриц перестановок, осуществляет следующие функции: инициализации, получения задания, поиска матрицы перестановок.
Функция инициализации start(M1,M2) получает исходные данные и вызывает функцию take_task, где M1 - матрица смежности графа S, M2 - матрица смежности графа T.
Функция получения задания take_task(M1,M2) (M1 - матрица смежности графа S, M2 - матрица смежности графа T) отправляет управляющему актору запрос на получение нового задания и ожидает ответа. Дальнейшее поведение, которое выбирает актор, зависит от ответа управляющего актора. Форматы сообщений и поведение при их обработке представлены в таблице 2.
Таблица 2 - Сообщения, принимаемые вычислительнымактором
Формат сообщения |
Описание |
|
{run, {P, K}} |
Ответ от управляющего актора, инициализирующий выполнение нового задания, где P - матрица перестановок, K - строка матрицы перестановок для заполнения. Вызывает функцию backtrack |
|
{close} |
Ответ от управляющего актора, сигнализирующий о том, что задача решена. Вызывает функцию exit, завершающую работу актора |
Функция поиска матрицы перестановок backtrack(M1,M2,P,K) выполняет следующие этапы:
a. если K>m, то P - искомая матрица перестановок, актор отправляет актору вывода полученный результат и запрашивает у управляющего актора новое задание;
b. иначе, для каждого выполняем следующее:
· , остальные элементы i-й строки равны 0;
· если выполняется условие , то актор отправляет управляющему актору новое задание, содержащее полученную матрицу и K +1 - номер следующей строки, которую необходимо заполнить;
c. управляющему актору отправляется запрос на получение нового задания.
Параметрами функции являются: матрица смежности M1 графа S, матрица смежности M2 графа T, промежуточная матрица перестановок P, K - номер строки, которую необходимо заполнить в матрице P. Актор вывода получает найденные матрицы перестановок отвычислительныхакторов и осуществляет их сохранение в массив и вывод результата.
В результате тестирования работы алгоритма поиска структурных различий было выявлено три типа результатов сравнения двух графов.
Результат 1 типа: Алгоритм вернул одну матрицу перестановок (рис.1). Между вершинами графов S и T существует единственное взаимнооднозначное соответствие: объекты имеют одинаковую структуру, значит, первый уровень соответствия выполнен, и сравнивать необходимо внутренние характеристики каждого ребра и вершины графа, т.е. показатели конкретных страниц и ссылок между страницами сайта.
Результат 2 типа: Алгоритм вернул несколько матриц перестановок (рис.2). В данном случае из нескольких матриц перестановок нужно выбрать одну, наиболее релевантную исследуемому графу. Для того чтобы правильно определить релевантную структуру, для каждой вершины задается параметр , который позволяет однозначно сопоставить вершины графов S и T. Как только всем вершинам находится однозначное соответствие, можно утверждать, что найдена матрица перестановок P, противном случае, если не удается найти матрицу P, переходим к случаю 3.
Результат 3 типа: Матрица перестановок не найдена (рис.3). В этом случае, для соответствующей вершины с параметрами исследуемого графа T применяются функция или функция , которые представляют собой объединение, добавление, удаления соответствующей вершины графа, таким образом, чтобы привести структуру исследуемого графа T к виду эталонного графа S.
Рис. 1 - Результат работы алгоритма (1 тип)
Рис. 2 - Результат работы алгоритма (2 тип)
Рис. 3 - Результат работы алгоритма (3 тип)
Для реализации алгоритма поиска структурных различий разработано приложение на языке Erlang. В качестве данных для эксперимента использованы данные интернет-ресурсов, связность которых не контролировалась. Уровень вложенности доменов исследуемых сайтов варьировался от 2 до 4, количество страниц, исходя из предоставленной карты сайта, составляло не более 1000.
Для анализа подбиралось случайное ключевое слово, по которому проходил отбор сайта, находящегося на первой позиции в поисковых системах Яндекс и Google и рассматривался как эталон. Эксперимент проводился с целью проверки, является ли параметр «структура интернет-сайта» необходимым при ранжировании в поисковой системе.
В ходе эксперимента были отобраны интернет-ресурсы по тематике «получение дополнительного высшего образования в регионе», занимающие лидирующие позиции в поисковых системах Яндекс и Google. Для блока высокочастотных фраз, по которым пользователи находят данные услуги, найдены 15 фраз, по каждой из которых в поисковых системах есть сайт, который располагается на первой строчке поиска, принятый за эталон.
По каждой фразе из заданного блока были взяты интернет-сайты, не попавшие в выдачу поисковиков на первое место. Каждый из таких сайтов и являлся исследуемым. Таким образом, каждый исследуемый сайт сравнивался сэталонным по ключевому запросу, и каждое сравнение было отнесено к одному из типов нахождения изоморфизма.
По данной тематике было проведено 135 сравнений, из которых 25 дали результат первого типа, 34 - результат второго типа и 76 - результат третьего типа. Причем 80% изоморфизмам по 1 типу было определено в первых трех строчках выдачи, что подтверждает гипотезу о факторе ранжирования по структуре.
граф структурный различие поиск
Список литературы
1. Воробьев, А. М. Интеллектуальный анализ и кластеризация WEB данных / А. М. Воробьев // Математическое и информационное моделирование: сборник научных трудов. - Тюмень: Издательство ТюмГУ - 2014. - №14. - 313 с.
2. Егоров, Ю. А. Модификация алгоритма Ульмана для многопроцессорных систем / Ю. А. Егоров // Материалы XVII Всероссийской конференции молодых ученых по математическому моделированию и информационным технологиям. - 2016. - С. 86-87.
3. Ullmann J. R. An Algorithm for Subgraph Isomorphism Problem /J. R. Ulmann. - Journal of the Association for Computing Machinery. - 1976. - VoI 23(1). - P. 31-42.
4. Cordella L.P. A (sub)graph isomorphism algorithm for matching large graphs / L.P. Cordella, P. Foggia, C. Sansone // IEEE Transactions on Pattern Analysis and Machine Intelligence. - 2004. - vol. 26. - P. 1367-1372.
Размещено на Allbest.ur
Подобные документы
Разработка алгоритма реализации на ЭВМ процесса поиска кратчайшего пути в графе методом Дейкстры. Программная реализация алгоритма поиска кратчайшего пути между двумя любыми вершинами графа. Проверка работоспособности программы на тестовых примерах.
реферат [929,8 K], добавлен 23.09.2013Способы построения остовного дерева (алгоритма поиска в глубину и поиска в ширину). Вид неориентированного графа. Понятие и алгоритмы нахождения минимальных остовных деревьев. Последовательность построения дерева графов по алгоритмам Крускала и Прима.
презентация [22,8 K], добавлен 16.09.2013Алгоритм сортировки Шейкер: математическое описание задачи и описание алгоритма. Алгоритм покрытия: построение одного кратчайшего покрытия. Описание схемы и работы алгоритма на графах: нахождение кратчайшего пути. Контрольные примеры работы алгоритмов.
курсовая работа [43,8 K], добавлен 19.10.2010Понятие алгоритма как набора инструкций, описывающего порядок действий. Поиск в ширину - метод обхода графа и поиска пути в нем. Пример работы алгоритма поиска в ширину, его неформальное и формальное описание. Реализация с помощью структуры "очередь".
курсовая работа [684,8 K], добавлен 05.04.2015Области применения теории графов. Алгоритм решения задачи поиска инвариантного и полного графа. Реализация программы с графическим интерфейсом пользователя на основе алгоритма. Реализация редактора графа и вывод полученных результатов в понятной форме.
курсовая работа [493,3 K], добавлен 27.12.2008Способ представления графа в информатике. Алгоритмы поиска элементарных циклов в глубину в неориентированных графах. Описание среды wxDev-C++, последовательность создания проекта. Руководство пользователю программы поиска и вывода на экран простых циклов.
курсовая работа [783,2 K], добавлен 18.02.2013Восприятие формы и паттерна. Эффективность зрительного поиска в условиях возникновения "эффекта выскакивания". Детекция ориентации линий. Метод измерения различий между стимулами. Применимость модели векторного кодирования к задачам зрительного поиска.
дипломная работа [777,6 K], добавлен 25.05.2013Блок-схема алгоритма Флойда. Разработка его псевдокода в программе Microsoft Visual Studio. Программа реализации алгоритмов Беллмана-Форда. Анализ трудоемкости роста функции. Протокол тестирования правильности работы программы по алгоритму Флойда.
курсовая работа [653,5 K], добавлен 18.02.2013Алгоритмы, использующие решение дополнительных подзадач. Основные определения теории графов. Поиск пути между парой вершин невзвешенного графа. Пути минимальной длины во взвешенном графе. Понятие кратчайшего пути для графов с помощью алгоритма Флойда.
реферат [39,6 K], добавлен 06.03.2010Обзор алгоритмов распознания объектов на двумерных изображениях. Выбор языка программирования. Обнаружение устойчивых признаков изображения. Исследование алгоритмов поиска объектов на плоскости. Модификация алгоритма поиска максимума дискретной функции.
дипломная работа [1,0 M], добавлен 16.06.2013