Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Конкурс для любителей задач на оптимизацию алгоритмов и программ.  (Прочитано 7842 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« : 15-04-2010 13:12 » 

Меня попросили разместить объявление. Ничего плохого или коммерческого там не нашел.


Написал: Zealint.
Почта: flowproblem@mail.ru

Здравствуйте, уважаемые программисты. Предлагаю принять участие в очередном конкурсе для любителей задач на оптимизацию алгоритмов и программ. На этот раз решается задача на перечислительную комбинаторику: сколькими способами можно расположить 6 не бьющих друг друга шахматных ферзей на доске n x n? Месяц назад я вывел общую формулу для 5 ферзей, но для 6 пока не получается. Поэтому для начала хочется выяснить, кто сможет посчитать ответ для максимально возможного значения n. Разрешается использовать любые инструменты и средства программирования. Призовой фонд 3000 р. Подробные правила на моем сайте.

http://zealint.ru/sixqueens-comp.html


Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 15-04-2010 15:24 » 

Почитал, что там пишут, интересно. Молодец Zealint, что находит время заниматься организацией таких проектов и, что немаловажно, самому принимать в них активное участие. Одним словом, вызывает уважение.
« Последнее редактирование: 15-04-2010 15:53 от Sel » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 15-04-2010 17:21 » 

Ага, а в итоге решается задача для нахождения оптимальных целей самонаводящейся головкой крылатой ракеты. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 16-04-2010 05:35 » 

Попробовал руками в Excel - задачка решается просто:



Алгоритмизация тоже простая: беру матрицу 8х8, ставлю первую королеву в угол и помечаю все клетки, которые она простреливает, после выбираю по спирали следующее свободное угловое место.

Другой вопрос, что по условию нужно много вариантов...

* 6q.png (8.72 Кб - загружено 1003 раз.)
« Последнее редактирование: 16-04-2010 05:44 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #4 : 16-04-2010 06:13 » 

RXL, для "много вариантов", думаю, достаточно будет просто сдвигать это решение с ротацией по горизонтали и вертикали. Ну и покрутить..
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 16-04-2010 06:15 » 

Ром, а варианты получаются аналогично. Первый ферзь ставится на А2 (В1) и тд. Ага

Только спрашивается ещё и скорость решения. Те потом такой алгоритм надо оптимизировать.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 16-04-2010 06:19 » 

Тут, IMHO, задачка на перебор вариантов: 64 варианта позиции для первой точки + X оставшихся позиций для второй + Y для третье и т.д., с отвеиванием вариантов, когда все 6 точек разместить не удается. Получается дерево решений.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #7 : 16-04-2010 06:29 » 

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

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #8 : 16-04-2010 06:41 » 

Не, это-то понятно. Метод перебора даст абсолютно все возможные варианты. Более того он абсолютно универсален касаемо размерности доски и количества ферзей. Но будет ли он самым быстрым? Посмотри на сайте "Текущий рейтинг", там приведены результаты с временем.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Zealint
Интересующийся

ru
Offline Offline

« Ответ #9 : 16-04-2010 06:51 » 

Для того, чтобы отыскать частную расстановку, действительно, много усилий не нужно. Сейчас народ умеет делать это для доски миллион на миллион (ставят миллион ферзей) за секунду. Здесь необходимо сказать сколько способов. Причем для доски n x n (где n>5), а не 8 на 8. Посмотрите, пожалуйста, на числа, которые получаются. Для n=28 ответ уже равен 47398421913600. То есть это еще можно посчитать перебором, но дальше числа растут. Чтобы вывести формулу, мне нужно где-то до n=80 посчитать. Тут для начала нужно очень сильно оптимизировать + подключать комбинаторику + параллелить. Вот, кстати, в прошлом конкурсе меня долго пинали, что нельзя использовать CUDA. На этот раз можно, только специалисты по CUDA сразу куда-то делись : )

Полный перебор имеет сложность O(n^12). Это слишком много. Надо как-то понижать порядок. То есть это задача не совсем на тупой перебор. Поэтому я и обращаюсь в большей степени либо к тем, у кого кластер есть, либо к тем, у кого есть опыт в комбинаторике. Что-то подсказывает, что порядок перебора можно сократить до O(n^8). Думаю...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #10 : 16-04-2010 07:04 » 

Цитата
ответ уже равен 47398421913600. То есть это еще можно посчитать перебором
ага... прикинем: если рассчитывать по 1000000 решений в СЕКУНДУ, это всё займёт всего лишь полтора годика Улыбаюсь
Записан

Zealint
Интересующийся

ru
Offline Offline

« Ответ #11 : 16-04-2010 07:06 » 

Только спрашивается ещё и скорость решения. Те потом такой алгоритм надо оптимизировать.
Скорость решения мне не важна, я её спрашиваю только ради того, чтобы другие участники могли сверить со своим алгоритмом. Мне нужны только числа - ответы. А считать их можно хоть сутками. Побеждает ведь тот, кто раньше всех даст ответы для максимально возможного n. Кстати, обычный перебор работает дольше суток где-то для n>25. Значит до 30 будет работать как раз до конца конкурса : )
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 16-04-2010 07:07 » 

При тупом переборе количество элементов перебора велико, потому что ферзей мало, а позиций для проверок много.

А никто не пробовал поставить на доску ферзи сразу во всех возможных комбинациях? Интересно, останутся ли при этом незанятые клетки, и если останутся, нельзя ли определять условия их расположения на доске и подойти к задаче с другой стороны? При фиксированном числе ферзей и росте размеров доски таких "дырок" будет всё меньше и меньше.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Zealint
Интересующийся

ru
Offline Offline

« Ответ #13 : 16-04-2010 07:08 » 

ага... прикинем: если рассчитывать по 1000000 решений в СЕКУНДУ, это всё займёт всего лишь полтора годика Улыбаюсь
Возможно, но программа текущего лидера работает заметно быстрее.

Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #14 : 16-04-2010 07:10 » 

Zealint, ну, значит, либо считает 365,25 * 10^6 ходов с секунду, либо не все варианты перебирает. Коли за день справляется
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 16-04-2010 07:11 » 

Zealint, если вопрос только в вычислительных ресурсах, то можно было бы использовать boinc, написать генератор заданий, клиентский обработчик и останется только задача привлекать народ.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Zealint
Интересующийся

ru
Offline Offline

« Ответ #16 : 16-04-2010 07:26 » 

Zealint, ну, значит, либо считает 365,25 * 10^6 ходов с секунду, либо не все варианты перебирает. Коли за день справляется
Я об этом и говорю: не надо перебирать все варианты. Надо только сказать их количество. Это гораздо проще (в смысле, быстрее). Мне кажется, что обсуждать что-то в таком ключе сложно и бессмысленно: надо пробовать и смотреть что получается.


Zealint, если вопрос только в вычислительных ресурсах, то можно было бы использовать boinc, написать генератор заданий, клиентский обработчик и останется только задача привлекать народ.
Нет, дело не только в них. Во-первых, если хотите, можете сделать это сами. Это не запрещено по условиям конкурса. Во-вторых, интерес представляет не только решить эту задачу, но и придумать метод её эффективного решения. Чтобы потом атаковать 7 ферзей. Даже если 7 тоже можно решить перебором на мощном кластере, то для 8 вам не хватит суммарной мощности всех машин Планеты. Это не совсем тупая задача, тут есть научных интерес. Просто 6 ферзей - это самая простая задача из огромного класса задач такого рода.
Записан
Zealint
Интересующийся

ru
Offline Offline

« Ответ #17 : 11-05-2010 03:13 » new

Конкурс завершён. Всем спасибо. Результаты приводятся здесь: http://zealint.ru/sixqueens-results.html
Удалось вывести явную формулу.

Уже и ссылку то без всяких теорий поставить не можем?  Ага Пришлось поправить.
« Последнее редактирование: 11-05-2010 03:44 от RXL » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines