На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Шахматы и лошади...
    итак. ето дело, конечно же, основано на поиске в глубину. но при полном переборе всех вариантов не удаётся за разумное время получить даже одно решение квадрата 9х9. но мы можем заметить, что:

    1. если при ходе образуются клетки, из которых нельзя походить, и мы ещё не дошли до предпоследней клетки, то такой ход бесперспективен, ибо мы никогда не попадём в такую клетку, или напротив, сходим в неё и застрянем. ежели мы дошли до предпоследней клетки, то, понятное дело, такая клетка непременно образуется, и она будет последней. можно расширить сей критерий и сказать, что мы не будем рассматривать те ходы, при которых невозможно обойти конём все свободные клетки. такой критерий используется в horse7.exe, и, как показывает практика, не приносит особых дивидендов, к тому же считается медленно.

    2. свободных клеток, из которых существует только один вариант хода, может быть не больше одной, или же вторая должна быть следующей на пути коня. например
    CODE

    888888888888888
    88Ъ88888 888888
    888888888888888
    888 888 8888888
    88888 888888888
    888888888888888
    888888888888888
    888888888888888
    понятно, что конь сходит в клетку, которая под ним, и обойдёт все четыре оставшихся клетки. а сейчас
    CODE

    888888888888888
    88Ъ88888 888888
    888888888888888
    888 888 8888888
    88888 888888888
    888888888888888
    888888 88888888
    888888888888888
    конь остановится на распутье, и куда бы он ни пошёл, ему не суждено обойти все клетки.

    понятное дело, она не ищет на каждом ходе все варианты путей из каждой клетки. существует специальный массив zakr[0..32, 0..32], в котором записывается число клеток, в которые конь не может походить из данной клетки (хотя было бы логичнее записывать число клеток, в которые он может походить). стало быть, на каждом шаге сей параметр изменяется только у восьми соседних с конём клеток, и на вышеописанные критерии надо проверять только их.
      QUOTE
      итак. ето дело, конечно же, основано на поиске в глубину. но при полном переборе всех вариантов не удаётся за разумное время получить даже одно решение квадрата 9х9. но мы можем заметить, что:


      бедный wormball sad.gif

      я написал не в ту тему, повторюсь:

      QUOTE
      для примера возмем шахматную доску и поставим коня куда-нибудь в центр, можно заметить что конь держит под ударом _только_ клетки противоположного цвета, другими словами если доску покрасить "в клетку", то при четном кол-ве клеток конь в конце обхода (если таковой будет) будет находится на клетке противоположного цвета, тоесть может, теоретически вернутся в начало. А если кол-во клеток нечетно, то конь закончит свой путь на клетке того же цвета что и начал, а значит вернуться у него никак не выдет.


      для 9х9 решения нет. wink.gif
        QUOTE
        для 9х9 решения нет

        ето если с приходом в ту же точку, а так есь:
        CODE
          1   62  77  54  3   60  25  36  5
          76  55  2   61  78  49  4   23  26
          63  80  53  48  59  24  35  6   37
          56  75  64  79  50  39  22  27  12
          81  52  47  58  65  34  13  38  7
          74  57  72  51  40  21  28  11  14
          71  46  69  66  33  42  17  8   29
          68  73  44  41  20  31  10  15  18
          45  70  67  32  43  16  19  30  9
        можешь проверить на досуге smile.gif
          что "_так_есь_" я знаю smile.gif
            QUOTE (wormball @ 19.11.03, 12:58)
            QUOTE
            для 9х9 решения нет

            ето если с приходом в ту же точку, а так есь:
            CODE
              1   62  77  54  3   60  25  36  5
              76  55  2   61  78  49  4   23  26
              63  80  53  48  59  24  35  6   37
              56  75  64  79  50  39  22  27  12
              81  52  47  58  65  34  13  38  7
              74  57  72  51  40  21  28  11  14
              71  46  69  66  33  42  17  8   29
              68  73  44  41  20  31  10  15  18
              45  70  67  32  43  16  19  30  9
            можешь проверить на досуге smile.gif

            Так последовательность ходов вроде получается циклической?
            Тогда переносим клетку с 1 в любую другую и последовательность снова останется циклической.
            Т.е. я хочу сказать, что если для начальной клетки (1, 1) удалось найти цикл по всем клеткам, то и для любой клетки (x, y) таковая тоже есть.
            PS: масло маслянное...
              А циклической в случай нечетного числа клеток она никогда не будет smile.gif wormball же сказал, что конь ходит на клетку противоположного цвета (если брать цветА из шахмат), а на доске с нечетным числом клеток нельзя сделать так, чтобы конь вернулся.
              А если цикл все же есть, как например на 8х8 smile.gif тогда да.
                Я имел в виду классический случай 8 на 8.
                Да, вот еще возник вопросик: а сколько всего способов обхода для поля NxN? Может, получиться найти математическую формулу, или тут тоько полный перебор?
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0221 ]   [ 15 queries used ]   [ Generated: 3.05.24, 13:16 GMT ]