|
|
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Многие знают задачу про обхо конем шахматной доски nxn размером побывав на каждом поле только один раз Такой вопрос. В книге Вирта Алгоритмы и структуры данных есть этот алгоритм. Я его запустил если размер доски 5 на 5 или 6 на 6 то быстро выполняется а если 8 на 8 или даже 7 на 7 то я не мог дождаться окончания больше часа работал но так и не завершился Неужели так долго он работает и есть ли более быстрые реализации этого алгоритма? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 19:59 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
перебор - чо хочешь. п.с. я на си писал - там очень зависело от первого хода. то есть если первый ход в переборе выбран верно, тогда решалось быстро, если нет - то очень долго... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 20:06 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
а ты случайно про правило Варнсдорфа не слышал? там как то можно перебор сократить выбирая клетку с минимальным перемещением по моему у себя случайно не реализовывал или ты тоже на сишнике прямым перебор делал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 20:23 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Вообщем по Вирту начиная с 7 на 7 размер доски начинает усиленно думать есть ли какая нибудь оптимизация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 20:44 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Damir_85, 1. Есть "правило Варнсдорфа" для досок небольшого размера. 2. Для досок произвольного размера - разрезание на более мелкие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 20:58 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Damir_85Здравствуйте! Многие знают задачу про обхо конем шахматной доски nxn размером побывав на каждом поле только один раз Такой вопрос. В книге Вирта Алгоритмы и структуры данных есть этот алгоритм. Я его запустил если размер доски 5 на 5 или 6 на 6 то быстро выполняется а если 8 на 8 или даже 7 на 7 то я не мог дождаться окончания больше часа работал но так и не завершился Неужели так долго он работает и есть ли более быстрые реализации этого алгоритма? Да. Рекурсивный поиск в глубину для доски 7х7 работает долго. Кст. эта ошибка в задачнике олимпиадных задач. Там условие было более сложное (некоторые клетки поля недоступны) а время было ограничено неск. секундами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 00:43 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovDamir_85, 2. Для досок произвольного размера - разрезание на более мелкие. и кешировать результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 03:07 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Делал пару лет назад семестровое. Перебор с возвратом. На классической доске 8х8 с любой позиции за секунду находил решение. Ну и правило Варнсдорфа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 06:43 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNAleksandr SharahovDamir_85, 2. Для досок произвольного размера - разрезание на более мелкие. и кешировать результат. Нет. Все гораздо проще. 1. Выбирается несколько размеров досок (далее - набор), которыми можно некоторым стандартным образом (далее - способ) покрыть любую доску, начиная с некоторого размера. 2. Для всех досок меньше этого некоторого размера решение находится обычным способом (Вансдорф). 3. Для больших досок наш способ характеризуется не только тем, как мы режем, но тем как выбираем входные-выходные точки для досок из набора. Для каждой доски из набора (около 20 штук) заранее находится одно решение с заданными точками. 4. После этого решение любой задачи довольно просто выполняется за секунды. Для маленьких досок - Вансдорф, для больших - склейка готовых решений из набора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 08:46 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Вместо поиска обхода малых поддосок проще использовать предопределённый закнутый путь обхода по доске 4*4 (их и склеивать проще, чем незамкнутые). В результате после разрезки на доски 4*4 останутся фрагменты с размерами сторон в пределах от 4 до 7, на которых Вансдорф емнип гарантированно не сбоит. На досках средних размеров (до где-то 100) можно также построить произвольный максимальный путь по Вансдорфу, после чего закрыть пропущенные клетки (если таковые будут) методом Эйлера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 09:30 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
AkinaВместо поиска обхода малых поддосок проще использовать предопределённый закнутый путь обхода по доске 4*4 (их и склеивать проще, чем незамкнутые). В результате после разрезки на доски 4*4 останутся фрагменты с размерами сторон в пределах от 4 до 7, на которых Вансдорф емнип гарантированно не сбоит. На досках средних размеров (до где-то 100) можно также построить произвольный максимальный путь по Вансдорфу, после чего закрыть пропущенные клетки (если таковые будут) методом Эйлера. Проблема не в том, чтобы обойти малые доски. Проблема в том, чтобы их правильно обойти, чтобы можно было склеит один непрерывный путь коня. И потом доказать, что ты решил эту задачу для доски любого размера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 09:35 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahovчтобы можно было склеит один непрерывный путь коня. И потом доказать, что ты решил эту задачу для доски любого размера. Две выровненные доски 4*4 с кольцевым обходом гарантированно склеиваются в единый путь. Следовательно, любое количество склеивается в один обход. В принципе можно перебрать все прилегания (4*5, 4-6, 4*7) и показать, что они приклеиваются, аналогично можно перебрать все варианты приклеивания последней "угловой" доски. Соответственно не только будет доказано, что любая прямоугольная доска со сторонами не менее 4 без вырезов может быть обойдена, но и будет полностью построен аглгоритм нахождения пути обхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 10:33 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
AkinaAleksandr Sharahovчтобы можно было склеит один непрерывный путь коня. И потом доказать, что ты решил эту задачу для доски любого размера. Две выровненные доски 4*4 с кольцевым обходом гарантированно склеиваются в единый путь. Следовательно, любое количество склеивается в один обход. В принципе можно перебрать все прилегания (4*5, 4-6, 4*7) и показать, что они приклеиваются, аналогично можно перебрать все варианты приклеивания последней "угловой" доски. Соответственно не только будет доказано, что любая прямоугольная доска со сторонами не менее 4 без вырезов может быть обойдена, но и будет полностью построен аглгоритм нахождения пути обхода. Это не доказательство. У меня получилось, если не изменяет склероз, 18 типоразмеров досок. Плюс строгое доказательство. Для четной доски строю замкнутый путь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 11:04 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
a1c2e3d1f2h1g3h5g7e8f6e4d2f1h2g4h6g8e7f5d4e2g1h3f4g2h4g6h8f7d8e6f8h7g5f3e1d3e5d7c5b7a5b3c1a2b4c6b8a6c7d5c3b1a3b5a7c8d6c4b2a4b6a8 8x8 - рекурсивный перебор с отсечением, Pentium 1.7Ghz, выполняется <2 секунд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 12:51 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
я писал курсач на первом курсе обход конем для 8х8 на С++ 3.1 (под DOS) в 1998 году :) работал мнгновенно на компах типа первый пень 90МГц так что не поленитесь - поищите еще варианты:) PS я б выложил курсач да с первого курса ничего не осталось :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 13:46 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovZyK_BotaNпропущено... и кешировать результат. Нет. Все гораздо проще. 1. Выбирается несколько размеров досок (далее - набор), которыми можно некоторым стандартным образом (далее - способ) покрыть любую доску, начиная с некоторого размера. 2. Для всех досок меньше этого некоторого размера решение находится обычным способом (Вансдорф). 3. Для больших досок наш способ характеризуется не только тем, как мы режем, но тем как выбираем входные-выходные точки для досок из набора. Для каждой доски из набора (около 20 штук) заранее находится одно решение с заданными точками. 4. После этого решение любой задачи довольно просто выполняется за секунды. Для маленьких досок - Вансдорф, для больших - склейка готовых решений из набора. разве это не кеширование? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 13:49 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN, Кеширование подраумевает временное хранение однажды выданного результата и его последующую выдачу. В данном случае это больше похоже на таблицу умножения, которая используется при вычислении очередного результата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 14:02 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
8 x 8 за секунду?? Очень даже хорошо да надо варианты вот в книге Окулова Программирование в алгоритмах надо попробовать алгоритм там правило Варнсдорфа Наверное быстро сработает У Вирта в книге видимо классический алгоритм стандартный поэтому медлит без оптимизации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 20:23 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Тоже бъёт на коридоры 4х4 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 20:29 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
mayton, всмысле бьет на коридоры 4 на 4? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 21:01 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovУ меня получилось, если не изменяет склероз, 18 типоразмеров досок. Склероз изменил. Сейчас посмотрел старые исходники. Обход произвольной шахматной доски размерами 5x5 и более выполняется путем разрезания доски на минидоски не более 4 типов. Типы досок выбираются из множества 24 досок различных размеров: Код: pascal 1. 2. 3. 4. 5. 6. Например, доска 11х11 собирается так Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 23:52 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Да что то типа того. Но этот алгоритм работает для досок без дыр. Для общего случая, надо подумать, будет ли оптимизация кусками 4х4 лучше чем абстрактный обход в глубину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2011, 00:26 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
mayton, Кусками 3*n и 4*n трудно оперировать, они могут не иметь решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2011, 00:38 |
|
||
|
Обход доски конем
|
|||
|---|---|---|---|
|
#18+
Седня алгоритм из книги Вирта сработал очень быстро оказывается все дело в расстановке я сделал четыре теста При Размещении коня в левом верхнем правом верхнем и нижнем правом углах тест сработал менее чем за секунду при размещении в нижнем левом углу сработал за 34 секунды Но к сожалению если выбирать не уговые поля то очень долго работает Слушайте а правило Варнсдорфа означает что начальное положение фигуры должно быть в угловых полях или начальное расположение любое а потом при переборе выбираются поля из которых можно сделать наименьшее кол-во ходов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2011, 20:29 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37574536&tid=1342548]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
184ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 554ms |

| 0 / 0 |
