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

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> задача про домино, поиск наибольшей замыкающейся последовательности
сообщение
Сообщение #1


Гость






Здравствуйте.
Поставили перед нами такую задачe. Дано n кубиков домино, как известно они имеют номера с двух сторон, но в задаче сказано, что для данного случая они не ограничены цифрой 6, т.е. значения с обеих сторон могут быть боле 6, например 16 и 12 и т.п. (какие - то разумные пределы конечно есть, но просто больше чем в настоящих, т.е. чем 6). Задние состоит в том, чтобы найти самую длинную замкнутую цепочку.... Если честно теряюсь в догадках и по вопросу алгоритма и по вопросу реализации....
Надеюсь на Вашу помощь.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
Кстати, volvo, мой ТС 3.0 не понимает "int m[max_num + 1][max_num + 1] = {};"
Ребят, вам шашечки, или ехать? Первая программа работала на TC - не понравилось, теперь работает в ICC/GCC - опять нехорошо...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Michael_Rybak
*****

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

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


Ура!

Короче я вот спросил на форуме TopCoder'a, и там ulzha родил гениальную мысль.

Вот полученная им цепочка рассуждений:

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

2. Пусть в графе n вершин и m ребер. Добавим к каждой вершине цикл длины m+1, т.е. m новых, фиктивных вершин.

Получится, что, если в начальном графе существовал замкнутый маршрут, проходящий через каждую вершину как минимум один раз, то в новом графе, дополненном циклами, обязательно существует маршрут длины большей, чем n*(m+1) - ведь из каждой вершины мы можем пройтись по ее дополнительному циклу.

Понятно, что верно и обратное утверждение: получить в новом графе маршрут длины большей, чем n*(m+1), можно *только* посетив каждую вершину оригинального графа как минимум один раз.

3. M. R. Garey, D. S. Johnson и R. Endre Tarjan показали, что поиск гамильтонова цикла в планарном, кубическом, 3-связном графе является NP-полной задачей.

4. Кубический граф - такой, у которого степень каждой вершины равна 3. Получается, замкнутый маршрут в таком графе не может побывать в какой-нибудь вершине больше одного раза - ведь это означало бы, что ее степень - как минимум 4.

5. Сведем это воедино.
  • Рассмотрим кубический, планарный, 3-связный (n, m) граф. Добавим к каждой вершине цикл длины m+1.
  • Найдя такой цикл, мы однозначно сможем определить (критерий - ребер в найденном цикле больше n(m+1)), существует ли в изначальном графе цикл, проходящий через каждую вершину как минимум 1 раз; если существует, то мы его уже построили - просто удаляем фиктивные ребра из ответа
  • В кубическом графе никакой цикл не может проходить в какую-нибудь вершину больше 1 раза, поэтому фактически мы научились строить гамильтонов цикл (в случае его существования)
  • Итак, мы свели NP-полную задачу к исходной, т.е. показали, что, умея решать задачу про доминошки за полиномиальное время, научимся решать за такое же время NP-полную задачу.

Браво, ulzha!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Zenon   задача про домино   8.10.2006 12:31
Michael_Rybak   Для перебора может быть полезен критерий: в графе …   8.10.2006 13:49
volvo   Ну, поскольку ты не написал, на каком языке тебе н…   8.10.2006 14:07
Гость   Извини не подскажешь решение этой задачи на Си, а …   8.10.2006 15:26
Nucris   2volvo Понимаешь (ничего, что на ты?) дело в том, …   8.10.2006 16:04
volvo   Что-то в этом духе: #include <stdio.h> #incl…   8.10.2006 17:50
Nucris   Огромнео спасибо, протестирую, но спасибо за это р…   8.10.2006 20:06
volvo   Ну, это во-первых, зависит от твоего компилятора. …   8.10.2006 20:49
Nucris   понятно, да на будущее учту, что точность формулир…   8.10.2006 21:50
Michael_Rybak   Погугли "поиск максимального цикла" ил…   9.10.2006 3:46
Nucris   Понятно, но все равно тебе спасибо Очень прошу vo…   9.10.2006 16:49
Michael_Rybak   Ты может BuildLog запости, не у всех ведь есть VC.   9.10.2006 17:14
volvo   А где, собственно, ты увидел отклонения от чистого…   9.10.2006 17:21
Nucris   Запустил, а этот visual собака ругается и вот это …   9.10.2006 18:35
Michael_Rybak   1>c:\documents and settings\vbproffi…   9.10.2006 19:39
volvo   Ребят, вам шашечки, или ехать? Первая программа ра…   9.10.2006 19:45
Michael_Rybak   Ура! Короче я вот спросил на форуме TopCoder…   10.10.2006 16:09
Nucris   Вышли пожалуйста на lit12@bk.ru   9.10.2006 19:48


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

 





- Текстовая версия 20.04.2024 12:15
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name