2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Неподвижная точка(нт) в графе
Сообщение07.01.2016, 05:33 


24/12/09
25
Дается ориентированный граф в котором могут быть циклы в том числе и петли. Каждая вершина имеет одинаковое количество исходящих ребер. Можно задать граф таблицой $g$ размером $n \times m$, где $n$ - количество вершин пронумерованных от $0$, $m$ - количество исходящих ребер у вершин, пронумерованных также от $0$. Тогда элемент таблицы $g[v][e]$ показывает номер вершины(место назначения) eсли мы перешли по ветке $e$ из вершины $v$.
Каждый путь характеризуется набором ребер начиная с некоторой вершины. Если найдется хотябы какой-нибудь путь(длина тут не важна) стартующая с любой вершиной и заканчивающая в одной и той же вершине то эту вершину мы называем нт. Требуется определить сущ. ли в графе нт.
Пример:
$n = 4$, $m = 2$. Таблица $g = [ [1, 2], [3, 2], [1, 3], [1, 2] ]$, где $g[0][1] = 2$, означает что у вершин $0$ и $2$ есть ветка с номером $1$. Ответ будет да(true), т.к. сущ. нт $2$, можно взять путь(набор ребер) $(0, 1)$, тогда если применить этот путь к любой вершине включая саму нт, то мы попадем всегда в нее.
Я ее решил простым перебором, но хотелось бы узнать есть ли лучший метод ?

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение07.01.2016, 13:32 


13/05/14
476
jhendrix
jhendrix в сообщении #1088644 писал(а):
Если найдется хотябы какой-нибудь путь(длина тут не важна) стартующая с любой вершиной и заканчивающая в одной и той же вершине

Что-то не понятно: «путь»… «стартующая», путь обычно стартует поэтому он стартующий. А вот это - «стартующая с любой вершиной». Он(путь) что, стартует вместе с любой вершиной, или стартует с нее? И, наконец, ударная концовка - "заканчивающая в одной и той же вершине". Sic! :!:
jhendrix в сообщении #1088644 писал(а):
$n = 4$, $m = 2$. Таблица $g = [ [1, 2], [3, 2], [1, 3], [1, 2] ]$, где $g[0][1] = 2$, означает что у вершин $0$ и $2$ есть ветка

Какая-то странная у вас таблица. Вы не находите? И что такое «ветка»? Это ребро, или последовательность попарно смежных ребер?
Мне кажется, что для большей наглядности необходимо привести тут диаграмму графа из этого примера или его матрицу смежности.

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение07.01.2016, 19:43 


24/12/09
25
sqribner48, матрица смежности не нужна, т.к. мы должны учитывать номера ребер. Ветка это ребро графа. У каждой ветки есть вес - номер этой ветки. Представьте, что у каждой вершины есть состояния и в зависимости от того какое вы состояние выберите вы попадете в некоторую вершину. Путь это последовательность веток. Если найдется путь в независимости от того откуда вы стартуете и получите в конце одну и ту же вершину, то нам повезло.

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение07.01.2016, 23:54 
Заслуженный участник


27/04/09
28128
Похоже, всё-таки не стоило выкидывать «лишнюю» информацию о состояниях из графа. Верните её, пожалуйста, назад. А то получается весьма странная задача. Если в графе есть цикл, все его вершины в интересующем смысле неподвижные точки? Или надо рассматривать только пути, которые нельзя продолжить? Но о последнем не упомянуто.

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 00:25 


24/12/09
25
arseniiv, мы же путь фиксируем для каждой стартовой вершины.

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 00:26 


22/12/08
17
Санкт-Петербург
jhendrix в сообщении #1088644 писал(а):
Пример:
$n = 4$, $m = 2$. Таблица $g = [ [1, 2], [3, 2], [1, 3], [1, 2] ]$, где $g[0][1] = 2$, означает что у вершин $0$ и $2$ есть ветка с номером $1$. Ответ будет да(true), т.к. сущ. нт $2$, можно взять путь(набор ребер) $(0, 1)$, тогда если применить этот путь к любой вершине включая саму нт, то мы попадем всегда в нее.
Я ее решил простым перебором, но хотелось бы узнать есть ли лучший метод ?

Условие на самом деле можно понять. Есть матрица $A$ размера $n \times m$. Путь - это последовательность чисел от $0$ до $m - 1$. Чтобы пройти по пути $P = (p_1, p_2, \ldots, p_k)$, начиная из вершины $u$, нужно сначала пойти по ребру номер $p_1$ из вершины $u$, то есть оказаться в $v = A[u][p_1]$. Далее нужно сделать шаг по ребру номер $p_2$ из новой вершины, то есть оказаться в $w = A[v][p_2] = A[A[u][p_1]][p_2]$. И так далее. Назовём $P (u)$ конечную вершину пути $P$, который мы начали в вершие $u$.

Вопрос в том, есть ли такая последовательность $P$, что $P (0) = P (1) = \ldots = P (n - 1)$.

Это комментарий для тех, кому сложно понять условие (я тоже не с первого раза понял, но разобрался). Как решать - не знаю.

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 00:30 


24/12/09
25
arseniiv, что вам не понятно конкретно ? Берем путь(фиксируем его), начинаем проверять для каждой вершины куда этот путь ведет. Если он ведет для всех вершин в одну и ту же вершиу $x$, то $x$ - нт.

-- Пт янв 08, 2016 00:50:38 --

Gassa, да вы правильно поняли условие.
Решить ее можно перебором, но сложность будет экспонента. Ясно, что можно сгенерировать все пути(наборы) длины равной не больше количеству вершин $n$, со значениями $[0, m - 1]$. Т.е. ${ {(0), (1), \dots (m-1)}, {(0, 0), (0, 1), \dots (m-1, m-1)}, \dots (m-1, \dots  m - 1)}$ и проверять для каждой вершины. Сложность $O(m^{n + 1} \cdot n)$

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 01:14 
Заслуженный участник


27/04/09
28128
Gassa в сообщении #1088846 писал(а):
Это комментарий для тех, кому сложно понять условие (я тоже не с первого раза понял, но разобрался). Как решать - не знаю.
Спасибо! Мне в терминах конечного автомата, которому на вход подаётся одна и та же строка, но начинает который из разных состояний, кажется более ясной. Вопрос в том, есть ли такая строка, которая приведёт из чего угодно в одно и то же, OK.

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

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 09:58 


01/12/11

1047
jhendrix в сообщении #1088644 писал(а):
Дается ориентированный граф в котором могут быть циклы в том числе и петли. Каждая вершина имеет одинаковое количество исходящих ребер. Можно задать граф таблицой $g$ размером $n \times m$, где $n$ - количество вершин пронумерованных от $0$, $m$ - количество исходящих ребер у вершин, пронумерованных также от $0$. Тогда элемент таблицы $g[v][e]$ показывает номер вершины(место назначения) eсли мы перешли по ветке $e$ из вершины $v$.
Каждый путь характеризуется набором ребер начиная с некоторой вершины. Если найдется хотя бы какой-нибудь путь(длина тут не важна) стартующая с любой вершиной и заканчивающая в одной и той же вершине то эту вершину мы называем нт. Требуется определить сущ. ли в графе нт

Решение надо начинать с анализа постановки задачи.
Заменим словосочетание "нт" на "вершина, из которой достижимы все остальные". Выбросим из графа петли, т.к. они не влияют на связность графа. Тогда задача будет звучать так:
Имеется ориентированный граф. Найти в графе вершину(ны), из которой(ых) достижимы все остальные.
Задача решается возведением в степень исходной матрицы смежности.

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 13:24 


24/12/09
25
Skeptic, принцип понятен, но надо еще рассмотреть краевой случай когда у нас граф представляется ввиде колца($v_1 \to v_2 \to \dots v_n \to v_1$).

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 14:53 


01/12/11

1047
jhendrix, для возведения матрицы смежности в степень конкретная форма графа безразлична.

(Оффтоп)

Из вершин графа может исходить разное количество рёбер, связывающих вершины.

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 14:54 
Заслуженный участник


27/04/09
28128
Skeptic
Уже ведь стало известно, что задача не такая простая.

Skeptic в сообщении #1088975 писал(а):
Из вершин графа может исходить разное количество рёбер, связывающих вершины.
jhendrix в сообщении #1088644 писал(а):
Каждая вершина имеет одинаковое количество исходящих ребер.

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 20:31 


24/12/09
25
arseniiv, у Skeptic все равно правильный подход, но нужно как то проверить краевой случай, дело в том что когда мы получаем матрицу достижимости в котором есть строка $i$ состоящая только из $1$, это еще не означает что $v_i$ - нт. Как это преодолеть я не понимаю, т.к в графе слишком много циклов, а нужно проверит наличие замкнутой цепи.

Как вы говорили arseniiv, я меняю направления ребер на противоположное и строю мд.

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 20:56 
Заслуженный участник


27/04/09
28128

(Оффтоп)

jhendrix в сообщении #1089076 писал(а):
у Skeptic все равно правильный подход
Значит, я всё-таки не понял Gassa, или вы не поняли, понял ли вас Gassa, или что-то в этом роде.

 Профиль  
                  
 
 Re: Неподвижная точка(нт) в графе
Сообщение08.01.2016, 21:11 


24/12/09
25
arseniiv, в смысле ? Ваш подход и у Skeptic одинаковый и условие кот. Gassa переформулировал правильное. Даже если там будет разные кол. исходящих ребер как Skeptic говорил этот подход все равно правильный, проблема только возникает в краевом случае.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Mikhail_K


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group