Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Flip-Game, Расширение алгоритма 
:(
    Опции темы
Isaev
Дата 10.11.2014, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток!

Была такая игрушка, когда-то в детстве сталкивался: link
Там ввиду того, что вертикаль и горизонталь были чётные, всё было просто
На сколько я помню, выписывал не правильные положения, нажимал их и, если эта операция не приводила к правильному ответу, повторял ещё раз
Так максимум за 2 итерации решалось произвольная матрица с чётными сторонами.
Алго было получено изучением способа инвертирования одной позиции и применения его ко всем не правильным
Это довольно быстро и просто для человека, но скорее всего не оптимально, т.к. при таком подходе приходится нажимать на те же позиции по несколько раз, а это "пустые ходы", которые ни к чему не приводят

Интересует развитие алгоритма:
1. Как математически определить существует ли решение вообще?
2. Как решить за минимальное количество ходов?
3. Как изменится алгоритм, если стороны могут быть как чётными, так и не чётными
4. Как подойти к алго, если на поле появятся преграды?

Для начала интересует пункты 1-3... И как эта задача вообще выражается математически?
Пункт 4 думаю не получится описать формулой и хоть частично придётся прибегать к бруту?

Это сообщение отредактировал(а) Isaev - 12.11.2014, 14:34
PM MAIL ICQ   Вверх
Lipetsk
  Дата 10.11.2014, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


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

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



по-моему, нужно заметить некоторые закономерности и пользоваться ими

закономерность 1:
выберем 2 строки и 2 столбца
щёлкая по 1 разу по клеткам в их пересечении развернём только эти 4 клетки

закономерность 2:
выберем 2 строки и 1 столбец
щёлкая по 1 разу по клеткам в их пересечении развернём 6 клеток -- в выбранных строках и оставшихся 3 столбцах

Далее, используя эти две закономерности можно развернуть любые две клетки в одном столбце
Тоже самое можно делать с любыми двумя клетками в одной строке
А с учётом того, что щелчок по клетке разворачивает 7 клеток, теперь можно 6 из них развернуть обратно и научиться разворачивать одну произвольную клетку


PM   Вверх
Akina
Дата 10.11.2014, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Lipetsk @  10.11.2014,  18:42 Найти цитируемый пост)
по-моему, нужно заметить некоторые закономерности 

Кому нужны закономерности в частной задаче?
Коли уж на то пошло - то для инверсии одного выключателя надо переключить все выключатели в его строке и столбце, вклячая и его самого, по одному разу. Порядок неважен. 
Для поиска оптимума надо подобрать все перевороты в любом порядке, и выбросить все парные.

Цитата(Isaev @  10.11.2014,  12:47 Найти цитируемый пост)
1. Как математически определить существует ли решение вообще?
3. Как изменится алгоритм, если стороны могут быть как чётными, так и не чётными

Проработай изменение чётности всего поля при однократном перевороте.
Проработай отдельно чётности столбцов и строк.
Учти, что в конечной позиции они должны быть равны чётности строки/столбца/поля по всем чётностям.
Это позволит увидеть некоторые закономерности и в частности возможность существования нерешаемой начальной позиции.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Isaev
Дата 11.11.2014, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Lipetsk, закономерности это тоже больше для визуального решения, а не для математики
Наверняка решение можно свести к матрицам или к решению системы уравнений с Х неизвестными

Цитата(Akina @  10.11.2014,  18:24 Найти цитируемый пост)
Для поиска оптимума надо подобрать все перевороты в любом порядке, и выбросить все парные.

Это ясно, но подход не оптимален, как мне кажется... Хотя нужно иметь несколько идей, чтобы было что тестировать по скорости

Цитата(Akina @  10.11.2014,  18:24 Найти цитируемый пост)
Учти, что в конечной позиции они должны быть равны чётности строки/столбца/поля по всем чётностям.

вот смысла этой фразы не уловил
PM MAIL ICQ   Вверх
Akina
Дата 11.11.2014, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Isaev @  11.11.2014,  13:03 Найти цитируемый пост)
подход не оптимален, как мне кажется... 

Найдите более оптиальный.

Цитата(Isaev @  11.11.2014,  13:03 Найти цитируемый пост)
смысла этой фразы не уловил 

Обозначьте, например, горизонтальное положение нулём, а вертикальное единицей. Посчитайте суммарную чётность столбца, строки, всего поля. Если позиция - не конечная, то в этом наборе минимум 2 элемента отличаются от набора для конечно позиции.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Lipetsk
  Дата 12.11.2014, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


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

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



А вы думаете, что решений, в которых каждая клетка не нажимается повторно (нажимается 0 или 1 раз), может быть несколько?


Это сообщение отредактировал(а) Lipetsk - 12.11.2014, 08:52
PM   Вверх
Akina
Дата 12.11.2014, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Lipetsk @  12.11.2014,  09:51 Найти цитируемый пост)
вы думаете, что решений, в которых каждая клетка не нажимается повторно (нажимается 0 или 1 раз), может быть несколько?

Если решения различать в т.ч. и по порядку нажатия - да, иначе нет.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Lipetsk
Дата 12.11.2014, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


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

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



но от порядка нажатия результат не меняется!
здесь каждый набор нажатых клеток соответствует уникальному изменению поля, и порядок не важен
PM   Вверх
Akina
Дата 12.11.2014, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Lipetsk @  12.11.2014,  10:28 Найти цитируемый пост)
 от порядка нажатия результат не меняется

Я с прицелом на 
Цитата(Isaev @  10.11.2014,  12:47 Найти цитируемый пост)
4. Как подойти к алго, если на поле появятся преграды?

Потому как непонятно, что разумеется под "преградами". Это вполне может оказаться стенка, разрушающаяся при первом флипе сквозь неё.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Isaev
Дата 12.11.2014, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



[deleted]

Это сообщение отредактировал(а) Isaev - 12.11.2014, 14:34
PM MAIL ICQ   Вверх
Isaev
Дата 12.11.2014, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Lipetsk @ 12.11.2014,  08:51)
А вы думаете, что решений, в которых каждая клетка не нажимается повторно (нажимается 0 или 1 раз), может быть несколько?

Логично, второй пункт нужно вычеркнуть, не подумавши написал

Я о том, что повторные нажатия должны отсеиваться на этапе решения, а не составлением всех возможных нажатий и отсеиванием дублей

Цитата(Akina @  12.11.2014,  12:32 Найти цитируемый пост)
Я с прицелом на 
Цитата(Isaev @  10.11.2014,  12:47 Найти цитируемый пост)
4. Как подойти к алго, если на поле появятся преграды?

Под преградой подразумевается Клетка имеющая значение отличное от 0 и 1, например 2
И инвертирование происходит до сталкновения с ней и не дальше
Пример в аттаче
т.ч. в принципе решение всегда одно


Это сообщение отредактировал(а) Isaev - 12.11.2014, 14:40

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  beisp.png 2,51 Kb
PM MAIL ICQ   Вверх
Akina
Дата 12.11.2014, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Isaev @  12.11.2014,  15:33 Найти цитируемый пост)
Под преградой подразумевается Клетка имеющая значение отличное от 0 и 1, например 2И инвертирование происходит до сталкновения с ней и не дальше

Такая преграда не разрушает независимости решения от порядка ходов.

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

В общем случае для решения задачи необходимо выполнить поиск решения системы битовых уравнений. Количество уравнений и переменных равно количеству клеток, переменные битовые - область значений переменных ограничивается множеством {0;1}. Система либо имеет решение, либо нет.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Isaev
Дата 13.11.2014, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Посидел вечерок порисовал)
Пришёл к следующим выводам:
а. При четных сторонах матрицы за 1 ход инвертируется не чётное кол-во позиций
    потому мы можем всегда добиться изменения 1 позиции ---> решение есть всегда.
б. Если одна из сторон не чётная, за 1 ход инвертируется четное количество позиций
    и изменения 1 позиции мы достигнуть не можем никак!
   Вместо этого можем менять по 2 (вроде любые 2 на выбор, если ничего не просмотрел)
   т.е. если кол-во не правильных положений изначально не чётное ---> решений нет

когда обе стороны не четные, пока не разобрался к какому случаю относится
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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