IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Теория графов.Оргдеревья., Разбиение оргдеревьев.
Fanat
сообщение 4.11.2006 11:48
Сообщение #1


Fanat
***

Группа: Пользователи
Сообщений: 261
Пол: Мужской
Реальное имя: Сергей

Репутация: -  5  +


Как разбить ориентированное дерево на все неизоморфные поддеревья?..Входные данные-например,FO представление.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Маня
сообщение 16.11.2006 22:40
Сообщение #2





Группа: Пользователи
Сообщений: 9
Пол: Женский

Репутация: -  1  +


Там все связано с разбиением деревьев на поддеревья...а мне это не нужно!


--------------------
Потому что, потому что
Всех нужнее и дороже,
Всех доверчивей и строже
В этом мире доброта
В этом мире ДОБРОТА
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 16.11.2006 23:25
Сообщение #3


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Там *не все* связано с разибиением на поддеревья. Просто проиндескируй оба дерева, и посмотри, равны ли индексы. Если ты потратишь хоть немного времени и разберешься в том, что я написал, ты поймешь, что это именно то, что тебе нужно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Маня
сообщение 18.11.2006 19:30
Сообщение #4





Группа: Пользователи
Сообщений: 9
Пол: Женский

Репутация: -  1  +


понимаешь,я уже несколько раз все твои сообщения прочитала,но толком ничего не поняла...
Во-первых как по матрице смежности мы будем находить корневую или концевые вершины?
Во-вторых, а если корневых вершин две?
Я поняла,что надо взять концевые вершины,проиндексировать их через (0)
Потом как мы достаиваем ребро? wacko.gif Всё...голова кругом... Эта курсовая меня в сумашедший дом загонит...Так,значит достаиваем ребро и как-то что-то индексируем (0,1)...а как же проверять изоморфность?


--------------------
Потому что, потому что
Всех нужнее и дороже,
Всех доверчивей и строже
В этом мире доброта
В этом мире ДОБРОТА
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 19.11.2006 2:01
Сообщение #5


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Давай разберемся с тем, что я называю индексацией. Индексация - это присвоение индексов (номеров) поддеревьям так, чтобы изоморфным поддеревьям соответствовали одинаковые индексы, а не изоморфным - разные.

В случае графа "без корня" это делается путем сворачивания листьев в каждом из двух графов.

Смотри. Пусть у нас есть графы А и В. На первом шагу ничего еще не свернули. Считаем, сколько листьев в А и в В. Если количества листьев - разные, то уже понятно, что графы неизоморфны.

Иначе говорим, что все листы получают индекс 0.

Теперь сворачиваем все листы. Сворачиваем - это значит "приклеиваем" индекс листа к той вершине, к которой ведет единственное ребро из этого листа, а сам лист удаляем вместе с этим ребром. Например, если какая-то вершина была соединена с двумя листьями и тремя не-листьями, то те два листа (с их индексами 0) мы приклеим к ней, а три других ребра останутся.

Теперь в каждом графе появились новые листья (благодаря сворачиванию листьев на предыдущем шаге). Листьев опять должно быть поровну (если нет - сразу не изоморфны). Но теперь этого уже не достаточно. Кроме того, что листьев должно быть поровну, листья должны быть еще и попарно равными. А именно: к некоторым листьям "приклеился" один лист на прошлом этапе, к некоторым - больше. Такие "свертыши" нужно отличать друг от друга. Вот здесь и начинается индексация. Берем любой лист-"свертыш". Смотрим, что к нему там приклеено, т.е. записываем индексы приклееных к нему листьев, например (0; 0; 0). Сортируем их (индексы) по возрастанию, и даем ему индекс 1. Теперь, если мы встретим когда-либо еще один лист-свертыш, к которому было приклеено (0; 0; 0), это будет означать, что он изоморфен этому, и ему мы тоже дадим индекс 1.

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

Чтобы узнать, изоморфны ли сравниваемые деревья, нужно просто посмотреть, равны ли их индексы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Fanat   Теория графов.Оргдеревья.   4.11.2006 11:48
Michael_Rybak   Идем от листов вверх к корню, и индексируем по ход...   4.11.2006 12:45
Fanat   Требуеться разбить на ВСЕ неизоморфные поддеревья....   6.11.2006 13:13
Michael_Rybak   Требуеться разбить на ВСЕ неизоморфные поддеревья...   6.11.2006 13:55
Fanat   Например,рассмотрим такое огрдерево. Дерево имее...   6.11.2006 21:00
Michael_Rybak   Приведи, пожалуйста, определения "FO представ...   6.11.2006 22:01
Fanat   Ориентированное дерево — это ориентированный граф ...   7.11.2006 1:17
Michael_Rybak   Я сейчас выхожу, подумаю над задачей в дороге. А т...   7.11.2006 9:40
Michael_Rybak   И еще: "без циклов" = без ориентированны...   7.11.2006 14:47
Fanat   И еще: "без циклов" = без ориентированн...   7.11.2006 18:48
Michael_Rybak   Алгоритм: как представляю себе я, подвесим граф з...   7.11.2006 20:36
Fanat   Можешь на примере показать что мы храним в массива...   7.11.2006 21:40
Michael_Rybak   Можешь на примере показать что мы храним в массив...   7.11.2006 22:05
Fanat   Сколько думал, а сделать ничё не могу..... :blink:   14.11.2006 17:49
Michael_Rybak   Давай шаг за шагом. 1. Напиши программу, которая ...   14.11.2006 18:58
Маня   Такая вот задача: требуется определить изоморфны л...   8.11.2006 0:15
Michael_Rybak   Прочти мой первый пост здесь. Алгоритм, который я...   8.11.2006 2:18
Маня   Послушайте! А если я сделаю так? Как всё это н...   15.11.2006 23:41
Michael_Rybak   Эвристики тут ни к чему. Сравнить два графа можно ...   16.11.2006 0:49
Маня   Там все связано с разбиением деревьев на поддеревь...   16.11.2006 22:40
Michael_Rybak   Там *не все* связано с разибиением на поддеревья. ...   16.11.2006 23:25
Маня   понимаешь,я уже несколько раз все твои сообщения п...   18.11.2006 19:30
Michael_Rybak   Давай разберемся с тем, что я называю индексацией....   19.11.2006 2:01
Маня   Ой !!! Спасибо огромное! Знаешь,а...   19.11.2006 23:48
Michael_Rybak   Молодец, Маня, порадовала! :) Да, очень прав...   20.11.2006 2:17
Маня   :good: :good: :good: Просто СУПЕР!!...   22.11.2006 22:26
Маня   О!!! У меня родилась идея,точнее мысль...   22.11.2006 23:26
Michael_Rybak   Молодец что придумала пример :) Видишь? Не зано...   23.11.2006 4:33
Маня   Значится так, вот как я поняла этот алгоритм: :...   28.11.2006 11:26
Michael_Rybak   Схему ты описала правильно, но вот правильно ли ты...   28.11.2006 14:46


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 17:13
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"