Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Обход доски конем / 25 сообщений из 30, страница 1 из 2
13.12.2011, 19:59
    #37573980
Damir_85
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Здравствуйте!
Многие знают задачу про обхо конем шахматной доски nxn размером побывав на каждом поле только один раз
Такой вопрос. В книге Вирта Алгоритмы и структуры данных есть этот алгоритм. Я его запустил если размер доски 5 на 5 или 6 на 6 то быстро выполняется а если 8 на 8 или даже 7 на 7 то я не мог дождаться окончания больше часа работал но так и не завершился
Неужели так долго он работает и есть ли более быстрые реализации этого алгоритма?
...
Рейтинг: 0 / 0
13.12.2011, 20:06
    #37573993
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
перебор - чо хочешь.

п.с. я на си писал - там очень зависело от первого хода. то есть если первый ход в переборе выбран верно, тогда решалось быстро, если нет - то очень долго...
...
Рейтинг: 0 / 0
13.12.2011, 20:23
    #37574026
Damir_85
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
а ты случайно про правило Варнсдорфа не слышал? там как то можно перебор сократить выбирая клетку с минимальным перемещением по моему
у себя случайно не реализовывал или ты тоже на сишнике прямым перебор делал?
...
Рейтинг: 0 / 0
13.12.2011, 20:44
    #37574056
Damir_85
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Вообщем по Вирту начиная с 7 на 7 размер доски начинает усиленно думать
есть ли какая нибудь оптимизация
...
Рейтинг: 0 / 0
13.12.2011, 20:58
    #37574070
Aleksandr Sharahov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Damir_85,

1. Есть "правило Варнсдорфа" для досок небольшого размера.
2. Для досок произвольного размера - разрезание на более мелкие.
...
Рейтинг: 0 / 0
14.12.2011, 00:43
    #37574370
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Damir_85Здравствуйте!
Многие знают задачу про обхо конем шахматной доски nxn размером побывав на каждом поле только один раз
Такой вопрос. В книге Вирта Алгоритмы и структуры данных есть этот алгоритм. Я его запустил если размер доски 5 на 5 или 6 на 6 то быстро выполняется а если 8 на 8 или даже 7 на 7 то я не мог дождаться окончания больше часа работал но так и не завершился
Неужели так долго он работает и есть ли более быстрые реализации этого алгоритма?
Да. Рекурсивный поиск в глубину для доски 7х7 работает долго. Кст.
эта ошибка в задачнике олимпиадных задач. Там условие было
более сложное (некоторые клетки поля недоступны) а время
было ограничено неск. секундами.
...
Рейтинг: 0 / 0
14.12.2011, 03:07
    #37574415
ZyK_BotaN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Aleksandr SharahovDamir_85,

2. Для досок произвольного размера - разрезание на более мелкие.

и кешировать результат.
...
Рейтинг: 0 / 0
14.12.2011, 06:43
    #37574451
Залетный
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Делал пару лет назад семестровое. Перебор с возвратом. На классической доске 8х8 с любой позиции за секунду находил решение. Ну и правило Варнсдорфа.
...
Рейтинг: 0 / 0
14.12.2011, 08:46
    #37574491
Aleksandr Sharahov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
ZyK_BotaNAleksandr SharahovDamir_85,

2. Для досок произвольного размера - разрезание на более мелкие.

и кешировать результат.

Нет. Все гораздо проще.
1. Выбирается несколько размеров досок (далее - набор),
которыми можно некоторым стандартным образом (далее - способ)
покрыть любую доску, начиная с некоторого размера.
2. Для всех досок меньше этого некоторого размера решение
находится обычным способом (Вансдорф).
3. Для больших досок наш способ характеризуется не только тем,
как мы режем, но тем как выбираем входные-выходные точки
для досок из набора. Для каждой доски из набора (около 20 штук)
заранее находится одно решение с заданными точками.
4. После этого решение любой задачи довольно просто выполняется
за секунды. Для маленьких досок - Вансдорф, для больших - склейка
готовых решений из набора.
...
Рейтинг: 0 / 0
14.12.2011, 09:30
    #37574536
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Вместо поиска обхода малых поддосок проще использовать предопределённый закнутый путь обхода по доске 4*4 (их и склеивать проще, чем незамкнутые). В результате после разрезки на доски 4*4 останутся фрагменты с размерами сторон в пределах от 4 до 7, на которых Вансдорф емнип гарантированно не сбоит.
На досках средних размеров (до где-то 100) можно также построить произвольный максимальный путь по Вансдорфу, после чего закрыть пропущенные клетки (если таковые будут) методом Эйлера.
...
Рейтинг: 0 / 0
14.12.2011, 09:35
    #37574543
Aleksandr Sharahov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
AkinaВместо поиска обхода малых поддосок проще использовать предопределённый закнутый путь обхода по доске 4*4 (их и склеивать проще, чем незамкнутые). В результате после разрезки на доски 4*4 останутся фрагменты с размерами сторон в пределах от 4 до 7, на которых Вансдорф емнип гарантированно не сбоит.
На досках средних размеров (до где-то 100) можно также построить произвольный максимальный путь по Вансдорфу, после чего закрыть пропущенные клетки (если таковые будут) методом Эйлера.

Проблема не в том, чтобы обойти малые доски.
Проблема в том, чтобы их правильно обойти,
чтобы можно было склеит один непрерывный путь коня.
И потом доказать, что ты решил эту задачу для доски любого размера.
...
Рейтинг: 0 / 0
14.12.2011, 10:33
    #37574666
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Aleksandr Sharahovчтобы можно было склеит один непрерывный путь коня.
И потом доказать, что ты решил эту задачу для доски любого размера.
Две выровненные доски 4*4 с кольцевым обходом гарантированно склеиваются в единый путь. Следовательно, любое количество склеивается в один обход. В принципе можно перебрать все прилегания (4*5, 4-6, 4*7) и показать, что они приклеиваются, аналогично можно перебрать все варианты приклеивания последней "угловой" доски. Соответственно не только будет доказано, что любая прямоугольная доска со сторонами не менее 4 без вырезов может быть обойдена, но и будет полностью построен аглгоритм нахождения пути обхода.
...
Рейтинг: 0 / 0
14.12.2011, 11:04
    #37574760
Aleksandr Sharahov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
AkinaAleksandr Sharahovчтобы можно было склеит один непрерывный путь коня.
И потом доказать, что ты решил эту задачу для доски любого размера.
Две выровненные доски 4*4 с кольцевым обходом гарантированно склеиваются в единый путь. Следовательно, любое количество склеивается в один обход. В принципе можно перебрать все прилегания (4*5, 4-6, 4*7) и показать, что они приклеиваются, аналогично можно перебрать все варианты приклеивания последней "угловой" доски. Соответственно не только будет доказано, что любая прямоугольная доска со сторонами не менее 4 без вырезов может быть обойдена, но и будет полностью построен аглгоритм нахождения пути обхода.

Это не доказательство.

У меня получилось, если не изменяет склероз, 18 типоразмеров досок.
Плюс строгое доказательство. Для четной доски строю замкнутый путь.
...
Рейтинг: 0 / 0
14.12.2011, 12:51
    #37575106
ALKIR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
a1c2e3d1f2h1g3h5g7e8f6e4d2f1h2g4h6g8e7f5d4e2g1h3f4g2h4g6h8f7d8e6f8h7g5f3e1d3e5d7c5b7a5b3c1a2b4c6b8a6c7d5c3b1a3b5a7c8d6c4b2a4b6a8

8x8 - рекурсивный перебор с отсечением, Pentium 1.7Ghz, выполняется <2 секунд
...
Рейтинг: 0 / 0
14.12.2011, 13:46
    #37575273
DASTAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
я писал курсач на первом курсе обход конем для 8х8
на С++ 3.1 (под DOS) в 1998 году :)
работал мнгновенно на компах типа первый пень 90МГц
так что не поленитесь - поищите еще варианты:)

PS я б выложил курсач да с первого курса ничего не осталось :(
...
Рейтинг: 0 / 0
14.12.2011, 13:49
    #37575288
ZyK_BotaN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Aleksandr SharahovZyK_BotaNпропущено...


и кешировать результат.

Нет. Все гораздо проще.
1. Выбирается несколько размеров досок (далее - набор),
которыми можно некоторым стандартным образом (далее - способ)
покрыть любую доску, начиная с некоторого размера.
2. Для всех досок меньше этого некоторого размера решение
находится обычным способом (Вансдорф).
3. Для больших досок наш способ характеризуется не только тем,
как мы режем, но тем как выбираем входные-выходные точки
для досок из набора. Для каждой доски из набора (около 20 штук)
заранее находится одно решение с заданными точками.

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

разве это не кеширование?
...
Рейтинг: 0 / 0
14.12.2011, 14:02
    #37575322
Aleksandr Sharahov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
ZyK_BotaN,

Кеширование подраумевает временное хранение однажды
выданного результата и его последующую выдачу.

В данном случае это больше похоже на таблицу умножения,
которая используется при вычислении очередного результата.
...
Рейтинг: 0 / 0
15.12.2011, 20:23
    #37578650
Damir_85
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
8 x 8 за секунду?? Очень даже хорошо
да надо варианты вот в книге Окулова Программирование в алгоритмах надо попробовать алгоритм там правило Варнсдорфа
Наверное быстро сработает
У Вирта в книге видимо классический алгоритм стандартный поэтому медлит без оптимизации
...
Рейтинг: 0 / 0
15.12.2011, 20:29
    #37578654
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Тоже бъёт на коридоры 4х4 ?
...
Рейтинг: 0 / 0
15.12.2011, 21:01
    #37578699
Damir_85
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
mayton,

всмысле бьет на коридоры 4 на 4?
...
Рейтинг: 0 / 0
15.12.2011, 23:52
    #37578883
Aleksandr Sharahov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Aleksandr SharahovУ меня получилось, если не изменяет склероз, 18 типоразмеров досок.


Склероз изменил. Сейчас посмотрел старые исходники.
Обход произвольной шахматной доски размерами 5x5 и более
выполняется путем разрезания доски на минидоски не более 4 типов.
Типы досок выбираются из множества 24 досок различных размеров:
Код: pascal
1.
2.
3.
4.
5.
6.
5х6  5х8  5х10   6х5  6х7  6х9
6х6  6х8  6х10   8х5  8х7  8х9
7х6  7х8  7х10  10х5 10х7 10х9
8х6  8х8  8х10   5х5  5х7  5х9
9х6  9х8  9х10   7х5  7х7  7х9
                       9х5  9х7  9х9



Например, доска 11х11 собирается так
Код: pascal
1.
2.
5х6 6х5
6х6 5х5
...
Рейтинг: 0 / 0
16.12.2011, 00:26
    #37578922
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Да что то типа того. Но этот алгоритм работает для досок без дыр.
Для общего случая, надо подумать, будет ли оптимизация кусками
4х4 лучше чем абстрактный обход в глубину.
...
Рейтинг: 0 / 0
16.12.2011, 00:38
    #37578931
Aleksandr Sharahov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
mayton,

Кусками 3*n и 4*n трудно оперировать,
они могут не иметь решения.
...
Рейтинг: 0 / 0
16.12.2011, 20:29
    #37580569
Damir_85
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Седня алгоритм из книги Вирта сработал очень быстро
оказывается все дело в расстановке
я сделал четыре теста
При Размещении коня в левом верхнем правом верхнем и нижнем правом углах тест сработал менее чем за секунду при размещении в нижнем левом углу сработал за 34 секунды
Но к сожалению если выбирать не уговые поля то очень долго работает
Слушайте а правило Варнсдорфа означает что начальное положение фигуры должно быть в угловых полях или начальное расположение любое а потом при переборе выбираются поля из которых можно сделать наименьшее кол-во ходов?
...
Рейтинг: 0 / 0
16.12.2011, 21:42
    #37580678
Aleksandr Sharahov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обход доски конем
Damir_85,

начальное положение любое,
на правило это не влияет - оно ведь ничего не гарантирует )
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Обход доски конем / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]