Вернуться   Форумы УРФИНГРАМ > Любимая возня > Мир РС
Имя
Пароль


Ответ
 
Опции темы Опции просмотра
Старый 21.05.2008, 23:21   #1
Super Moderator
 
Аватар для Sanyok
Помогите с алгоритмом

Возможно кто-нибудь сможет помочь с алгоритмом дискретной математики. Просьба тех, кто не знает что такое графы дальше не читать. )


Итак, нужен алгоритм(!) построения эйлерова цикла. НО! Чтобы алгоритм не портил граф. Есть самый известный способ (Липский, Иванов), но в нем присутствует удаление ребра при построении. Нужен соответственно алгоритм без удалений )
Представление графа - списком ребер. Хотя можно и матрицей смежности впринципе. ) Граф - связный, неориентированный.

Последний раз редактировалось Sanyok, 21.05.2008 в 23:41.
Sanyok вне форума   Ответить с цитированием
Старый 22.05.2008, 00:02   #2
Guest
Ты программу чтоле создаёшь или для себя алгорит выбираешь?
  Ответить с цитированием
Старый 22.05.2008, 00:14   #3
Super Moderator
 
Аватар для Sanyok
Цитата:
Сообщение от 2garin
Ты программу чтоле создаёшь или для себя алгорит выбираешь?

На С++ реализовать надо алгоритм этот самый ) реализовать-то не долго, труднее найти алгоритм...
Sanyok вне форума   Ответить с цитированием
Старый 22.05.2008, 00:21   #4
Guest
Как я вас понимаю
Я подумаю, если что придумаю, то отпишу...
  Ответить с цитированием
Старый 22.05.2008, 00:36   #5
Guest
тож посижу..
с графами знаком, выступал на конкурсе по ним.
с++ в вижуале ноу проблэм сэр.
  Ответить с цитированием
Старый 22.05.2008, 00:56   #6
Guest
2 стэка - a,b
ЦИКЛ:
{
берём вершину x0, идём от неё по непройденному ранее ребру, записываем вершины в a.
ЕСЛИ x последняя = a, ТО
ЦИКЛ { перекладываем вершины из a в b ПОКА не наткнемся на x последнюю } ИНАЧЕ
ЕСЛИ стэк а - пустой, ТО в стэке b лежит путь эйлерова цикла
}


Сань, проверь только выход из 2ого цикла.. а то тут на бесконечный смахивает.. либо не делай ПОКА(while, for), а чисто проверку и число операций..
  Ответить с цитированием
Старый 22.05.2008, 01:47   #7
Super Moderator
 
Аватар для Sanyok
Цитата:
Сообщение от torrie
2 стэка - a,b
ЦИКЛ:
{
берём вершину x0, идём от неё по непройденному ранее ребру, записываем вершины в a.
ЕСЛИ x последняя = a, ТО
ЦИКЛ { перекладываем вершины из a в b ПОКА не наткнемся на x последнюю } ИНАЧЕ
ЕСЛИ стэк а - пустой, ТО в стэке b лежит путь эйлерова цикла
}

не очень понял, как это работает, если честно )

ЦИКЛ:
{
берём вершину x0, идём от неё по непройденному ранее ребру


Ну как раз условие ЦИКЛа получается ПОКА ребёр > 0

"ЕСЛИ x последняя = a, ТО" что здесь есть "x последняя"? и имеется ввиду видимо top стека a?)
Sanyok вне форума   Ответить с цитированием
Старый 22.05.2008, 15:03   #8
Вице-президент
 
Аватар для UrVag
Могу написать алгоритм на бэйсике
__________________
Благотворительные уроки финансовой грамотности
UrVag вне форума   Ответить с цитированием
Старый 22.05.2008, 21:55   #9
Guest
выбираем вершину x0
заносим эту вершину в стэк a
пока a ≠ Ø
{
x = top(a)
если есть непройденное ребро (x,y) то "проходим его" то есть просто помечаем
y заносим в а
иначе перемещаем x из а в b
}

когда а будет пустое, что в b будет лежать последовательность вершин эйлерова цикла
  Ответить с цитированием
Старый 22.05.2008, 22:52   #10
Магистр
 
Аватар для Alex-19
ну вы уманы
__________________
Перепрыгнуть пропасть на 98% и на 100% - разные вещи
Alex-19 вне форума   Ответить с цитированием
Ответ



Ваши права в разделе
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Часовой пояс GMT +5, время: 11:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2007, Jelsoft Enterprises Ltd.

Мы живем в Тольятти Rambler's Top100