Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Гамильтонов путь двумерной целочисленной решетки, Решение частного случая NP-полной задачи 
:(
    Опции темы
MoDErahN
Дата 14.10.2010, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.6.2009

Репутация: нет
Всего: нет



Облазил пол интернета, так и не нашел решения.

Представьте себе листик в клеточку, вот у меня есть поле N*M клеток, мне нужно провести из клетки (X1, Y1) в клетку (X2, Y2) линию так, чтобы она проходила через все остальные клетки поля (кроме, быть может, одной), ходить можно вверх/вправо/вниз/влево, ну и, естественно, за границы выходить нельзя.

Эта задача сводится к нахождению Гамильтонова пути на графе, где вершины = клетки, ну а дуги, соответственно, соединяют соседние клетки. Фактически такой граф - это двумерная целочисленная решетка.

В общем случае нахождение Гамильтонова пути на графе это NP полная задача.
Но у меня очень частный случай графа - двумерная решетка, и я почти уверен, что для такого случая уже разработаны алгоритмы нахождения Гамильтонова пути (например для тех же игр, где игровое поле это лабиринт без ответвлений от основного пути). Уже не одну неделю убил в поисках решения. Может здесь кто знает, как подступиться к этой задачке?


PS: Алгоритм должен позволять находить произвольный путь, а не какое-то частное решение (ну или хотя бы возможность доработать алгоритм в этом направлении), т.е. чтобы за счет генератора случайных чисел можно было бы при каждом запуске этого алгоритма получать разные пути, в идеале вообще произвольный путь из всего множества Гамильтоновых путей для заданного размера решетки и точек начала/конца.

PSPS: Если кто знает решение не для нахождения Гамильтонова пути, а хотя бы для нахождения Гамильтонова цикла - пишите, тоже буду премного благодарен.

Это сообщение отредактировал(а) MoDErahN - 14.10.2010, 18:28
PM MAIL   Вверх
Lipetsk
  Дата 15.10.2010, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: 2
Всего: 5



здесь совсем недавно было, посмотрите
http://forum.vingrad.ru/forum/topic-311321.html
PM   Вверх
MoDErahN
Дата 15.10.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.6.2009

Репутация: нет
Всего: нет



Спасибо, сейчас консультируюсь у автора конкурса.

Вот задам заодно вопрос и здесь.

В статье на хабре говорится о построении циклов при помощи конечного автомата, но метод его построения не изложен. Быть может вы подскажете, где можно прочесть именно метод построения данного автомата для циклов, а еще лучше, для Гамильтоновых путей.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.