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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

всмысле бьет на коридоры 4 на 4?
...
Рейтинг: 0 / 0
Обход доски конем
    #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
Обход доски конем
    #37578922
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да что то типа того. Но этот алгоритм работает для досок без дыр.
Для общего случая, надо подумать, будет ли оптимизация кусками
4х4 лучше чем абстрактный обход в глубину.
...
Рейтинг: 0 / 0
Обход доски конем
    #37578931
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

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

начальное положение любое,
на правило это не влияет - оно ведь ничего не гарантирует )
...
Рейтинг: 0 / 0
Обход доски конем
    #37585701
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура! Седня проверил алгоритм быстро работает даже на доске 80 на 80)
правда если размерность 90 на 90 в проге уже возникает ошибка Stack Overflow но это уже не важно ) меня устраивает и размерность 80 на 80 завтра вот проверю еще диапазон от 80 до 90 посмотрю какая максимальная размерность поддерживается алгоритмом
небольшой вопрос: я хочу проверить алгоритм на прямоугольной доске N*M седня пару тестов запустил на доске 80 на 60 решения не нашел
Есть у вас какие нибудь тесты с найденными решениями на прямоугольных досках дайте пожалуйста размерность досок и номера полей с которых запускали а то я че то перебирал поля пока положительный тест не обнаружил ну т.е чтобы решение было
и второй вопрос например при обходе доски ферзем правило Варнсдорфа также даст сокращение перебора или здесь уже без разницы прямой перебор или с Варнсдорфом?
...
Рейтинг: 0 / 0
Обход доски конем
    #37585790
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Damir_85Ура! Седня проверил алгоритм быстро работает даже на доске 80 на 80)
правда если размерность 90 на 90 в проге уже возникает ошибка Stack Overflow но это уже не важно ) меня устраивает и размерность 80 на 80 завтра вот проверю еще диапазон от 80 до 90 посмотрю какая максимальная размерность поддерживается алгоритмом
небольшой вопрос: я хочу проверить алгоритм на прямоугольной доске N*M седня пару тестов запустил на доске 80 на 60 решения не нашел
Есть у вас какие нибудь тесты с найденными решениями на прямоугольных досках дайте пожалуйста размерность досок и номера полей с которых запускали а то я че то перебирал поля пока положительный тест не обнаружил ну т.е чтобы решение было
и второй вопрос например при обходе доски ферзем правило Варнсдорфа также даст сокращение перебора или здесь уже без разницы прямой перебор или с Варнсдорфом?

Stack Overflow - ты че-то глубоко забрался )
Во-первых, рекурсия не нужна тут.
Во-вторых, подумай о других оптимизациях, маленькие хитрости могут существенно экономить время.
Решение Вансдорфом (без склеек) для доски 1000х1000 находится примерно за секунду.
А насчет ферзя ты, конечно, пошутил, да?
...
Рейтинг: 0 / 0
Обход доски конем
    #37585825
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

завтра посмотрю из за чего там ошибка да алгоритм действительно рекурсивный))
попробую перевести его в итерацию может из за рекурсии ошибка возникает
Кстати что это за склейки? о них я слышу впервый раз:
алгоритм который у меня просто ищет поле откуда можно сделать минимальное кол-во ходов и перемещает фигуру на это поле
Склейка вроде не используется никакая
и прямоугольная доска! дайте какие ниибудть тесты которые дают решение
а насчет ферзя..)) ..я знаю что задача не представляет такого интереса как обход конем.но просто интересно правило Варнсдорфа также сократит перебор или нет..т.е распространяется ли это правило на другие фигуры
...
Рейтинг: 0 / 0
Обход доски конем
    #37585854
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Кстати что это за склейки?

Про разрезание доски (т.е. решение при помощи склеивания решений для мелких досок) см. выше.


> алгоритм который у меня просто ищет поле откуда можно сделать минимальное кол-во ходов

У Варнсдорфа есть тонкость - какое из полей с одинаковым весом выбрать. Тут простор для твоих подправил.


> дайте какие ниибудть тесты которые дают решение

Да просто бери любую доску, например, квадрат или прямоугольник со стороной 5 или больше. Там всегда есть решение.
Более того, если произведение сторон четное - есть замкнутый путь. Его проще искать, если начинать из центра.


> а насчет ферзя

Просто змейкой ходи - вот и все правило.
...
Рейтинг: 0 / 0
Обход доски конем
    #37585860
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

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


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