powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пятничная задачка для ума за 1 миллион $
491 сообщений из 491, показаны все 20 страниц
Пятничная задачка для ума за 1 миллион $
    #39514586
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://news.mail.ru/society/30876968/?frommail=10

«задача о восьми ферзях» на доске 1000х1000
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514705
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

В новости нет ни ссылки на оригинал, ни внятно сформулированного условия задачи (сколько королев надо разместить?). И еще они хотят платную подписку за право оставлять комментарии к новостями.

mail.ru такой mail.ru.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514706
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подобные премии в истории математики - не редкость. Их обычно вводят не для
того чтобы решить задачу. А для того чтобы подогреть интерес общества к науке.
Так - же было с поиском волшебной тройки чисел для Великой Теоремы Ферма.
Так же было с пятнашками (при этом хитрый создатель этой головоломки
предложил заведомо тупиковую стартовую комбинацию из которой не было
решения). И сейчас ЕМНИП между известными в мире университетами идет
соревнование на тему поиска следущего простого числа Мерсенна. А с ними
вообще треш. На обычных серверах они не решаются. Нужно как-то кластеризовать
задачку на кусочки и решить в параллелизме.

В данной задаче (идет речь о 1000 ферзей на 1000х1000 клеток) стоит не решать
ее а просто оценить время решения. К примеру мы знаем время ее решения на С++
для всех полей до 16х16 и оно экспоненциально.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514803
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо посмотреть алгоритм. Может он хорошо ляжет на рендеринговые возможности GPU
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514805
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scf,

По моему идея очень хороша брать деньги за тупые комменты типа "поясните как нагуглить условие задачи" =)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514810
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

https://geektimes.ru/post/292631/
Задачу о N ферзях признали NP-полной задачей
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514811
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решать задачу в лоб переборным алгоритмом как в wiki будет "долговато".

Я взял последние сведения по time-статистике для С-программы для
нескольких значений доски (N) и попробовал экстраполировать. Вобщем
примерно с ростом N на единицу расчетное время умножается на
приблизительно на 7.

LibreOffice не смог мне показать число секунд сколько мы будем искать
все решения для 1000 на 1000. У него не хватило экспоненты.

В формуле получается что-то вроде:



Я даже не могу его ни с чем сравнить. Для этого надо его привести хотя-бы
к научному основанию 10. Потухнет солнце к тому времени или нет? Наверное - да.
Мы выпали из научной разрядной сетки.

Радует пока тот факт что нам не нужно искать все решения. Надо найти хотя-бы
первое. А сколько времени в среднем ищется первое? Я сведений не нашел пока.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514825
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

на вскидку почему-то вспомнились фракталы,и тут же ссылка с вики

но с другой стороны под решением, наверное, подразумевается, что нужно найти все комбинации
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514831
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что-же - миллион у нас уже в кармане. Осталось только написать письмо
Британским ботанам.

Но смущает что мы читаем какой-то репост на mail.ru где плохо описаны
условия того что надо собственно сделать. Найти первую попавшуюся
расстановку? - Фракталы рулят. Найти все? - Ну это ждать пока солнце не погаснет.

Вобщем нужен оригинал этой новости.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514844
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО одну комбинацию найти уже перебирать устанешь: Первый ферзь ставится 1 млн. способов, перекрывает 3000-8000 клеток, второй 992000-997000 вариантов и т.д.

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

Перебирательных мощностей полно нынче, биткоины майнят ))), если какой-нибудь большой пул переключится на эту задачу, то может и замайнят случайно какое-нибудь решение за разумное время.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514896
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВобщем нужен оригинал этой новости.
вообще странно, тут написано, что
авторThe prize money of one million USD, awarded by Clay Mathematics Institute in the US is available to anyone who can solve the puzzle
в самом институте такой траблы не вижу, наверное нашли уже ... :-(
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514898
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во , есть оказывается
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514900
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторDr Nightingale said: “However, this is all theoretical. In practice, nobody has ever come close to writing a program that can solve the problem quickly. So what our research has shown is that – for all practical purposes – it can’t be done.”

Dr Jefferson added: “There is a $1,000,000 prize for anyone who can prove whether or not the Queens Puzzle can be solved quickly so the rewards are high.”
т.е. всё таки все варианты надо найти
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39514902
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так они сами денег не предлагают. Денги выплатит Clay за алгоритм, находящий решение за полиномиальное время.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515110
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда фрактальных ферзи нам не помогут. Они покрывают частные случаи расстановки 1000 фигур.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515203
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfТак они сами денег не предлагают. Денги выплатит Clay за алгоритм, находящий решение за полиномиальное время.я вот одного понять не могу, количество решений явно растёт как O(N!), т.е. даже просто выводить результаты не получится за O(N^k)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515223
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИМХО одну комбинацию найти уже перебирать устанешь: Первый ферзь ставится 1 млн. способов, перекрывает 3000-8000 клеток, второй 992000-997000 вариантов и т.д.
...Нет, первый всего лишь 1000 вариантов, второй - 999 итп. Это если в лоб
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515225
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglDima TИМХО одну комбинацию найти уже перебирать устанешь: Первый ферзь ставится 1 млн. способов, перекрывает 3000-8000 клеток, второй 992000-997000 вариантов и т.д.
...Нет, первый всего лишь 1000 вариантов, второй - 999 итп. Это если в лоб
1000*1000 = 1000000
Т.е. всего 1 млн. клеток, в любую можно первого поставить, можно на 2 поделить, т.к. зеркально доска отображается.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515234
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

да блин, ферзи все одинаковые. потому достаточно одной строки.
миллион был бы если бы они были, ну скажем разноцветные.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515235
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)scfТак они сами денег не предлагают. Денги выплатит Clay за алгоритм, находящий решение за полиномиальное время.я вот одного понять не могу, количество решений явно растёт как O(N!), т.е. даже просто выводить результаты не получится за O(N^k)
В этом и суть этой проблемы. Факториальная сложность нас ведёт в тупик. Мы не можем крутить факториалы от тысячи.

Ищем оптимизации которые уводят нас в класс полиномов.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515245
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

непонятно, что считать решением.

Если решение - это все расположения, то оно может просто не уместиться на бумажке.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515303
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonkealon(Ruslan)пропущено...
я вот одного понять не могу, количество решений явно растёт как O(N!), т.е. даже просто выводить результаты не получится за O(N^k)
В этом и суть этой проблемы. Факториальная сложность нас ведёт в тупик. Мы не можем крутить факториалы от тысячи.

Ищем оптимизации которые уводят нас в класс полиномов.
да дело даже не в оптимизациях, само количество решений как экспонента от N (предположительно)
даже если удастся расписать формулу, которая тупо выводит следующий ответ за O(1), то сложность печати всех ответов будет больше, чем O(N^k)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515330
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу предположить что сам по себе ответ их не особо интересует.

Кто силён в английском и может перевести текст задачи (по ссылкам выше)?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515346
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

тут несколько вопросов:

Существует 3 варианта задачи:
1 найти любое расположение, при котором ферзи не бьют друг друга,
2 найти все такие расположения,
3 найти количество таких расположений.

Какой из вариантов им нужен?
Им надо "быстро" решить задачу. Что значит быстро? За полиномиальное время? Время на одно расположение или на полное решение?
Что значит решить? Алгоритм? Или дать развернутый ответ? )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515359
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Машинный перевод гугла по ссылке


http://jair.org/papers/paper5512.html Ян П. Гент, Кристофер Джефферсон и Питер Найтингейл (2017)
"Сложность решения проблемы n-Queens" том 59 страницы 815-848

Задача n-Queens состоит в том, чтобы разместить n шахматных ферзей на n n шахматной доске, чтобы никакие две королевы не находились в одной строке, столбце или диагонали. Задача о завершении n-Queens - вариант, датируемый 1850 годом, когда некоторые королевы уже размещены, а решатель может поместить остальных, если это возможно. Мы показываем, что n-Queens Completion - это NP-Complete и # P-Complete. Следствием является то, что любое не атакующее расположение ферзей может быть включено как часть решения более крупной проблемы n-Queens. Мы вводим генераторы случайных экземпляров для n-Queens Completion и тесно связанной задачи о блокированных n-Queens и исключенных диагоналях. Мы описываем три решателя для этих проблем и эмпирически анализируем твердость случайно сгенерированных экземпляров. Для задачи «Заблокированные n-Queens» и «Исключенные диагонали» мы показываем существование фазового перехода, при котором n-Queens Completion не генерирует последовательно жесткие экземпляры. Значение этой работы заключается в том, что проблема n-Queens использовалась во многих отношениях в качестве эталона в искусственном интеллекте. Наши результаты дают альтернативные критерии, которые теоретически и эмпирически трудны, но для которых методы, разработанные для n-Queens, требуют минимального или никакого изменения.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515367
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... фракталы на loveorigami не могут красиво заполнить поле 1000х1000.

Приведен пример для квадрата 20x20 и 25х25. Он не кратен 1000х1000.

Нужно брать или 400х400 или 625Х625 или другие кратные.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515379
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот как-то так. 1280 ферзей фракталом. Ну и всякие производные расстановки. Зеркально. Там. Поворот. Еще добавят штук 8 или 12 вариантов.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
/**
 * @author mayton
 *
 * @see "http://www.forum.loveorigami.info/viewtopic.php?f=21&t=564&start=30"
 */
public class Queen1000problem {

    public static int SIZE = 1280;

    public static int maxLevel = 0;

    public static int queens = 0;
    
    public static void setQueen(BufferedImage img,int x, int y){
        img.setRGB(x,y, 0xFF_00_00_FF);
        queens++;
    }

    public static void recurse5to5(BufferedImage img, int x, int y, int size, int level) {
        maxLevel = max(maxLevel, level);
        if (size > 5) {
            //System.out.printf("(%d,%d,%d)\n",x,y,size);
            int quarter = size / 4;
            recurse5to5(img, x + quarter,     y,               quarter, level + 1);
            recurse5to5(img, x + 3 * quarter, y + quarter,     quarter, level + 1);
            recurse5to5(img, x,               y + 2 * quarter, quarter, level + 1);
            recurse5to5(img, x + 2 * quarter, y + 3 * quarter, quarter, level + 1);
        } else {            
            setQueen(img,x + 1, y);
            setQueen(img,x + 4, y + 1);
            setQueen(img,x + 2, y + 2);
            setQueen(img,x,     y + 3);
            setQueen(img,x + 3, y + 4);
        }
    }

    public static void main(String[] args) throws IOException {

        BufferedImage img = new BufferedImage(SIZE, SIZE, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = img.createGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0,0,SIZE, SIZE);
        recurse5to5(img, 0, 0, SIZE, 0);
        ImageIO.write(img, "PNG", Files.newOutputStream(Paths.get(String.format("queen-solution-%dx%d.png",SIZE,SIZE))));
        System.out.printf("There are %d queens, with max level %d of recursion", queens, maxLevel);
    }

}

...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515431
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonХм... фракталы на loveorigami не могут красиво заполнить поле 1000х1000.

Приведен пример для квадрата 20x20 и 25х25. Он не кратен 1000х1000.

Нужно брать или 400х400 или 625Х625 или другие кратные.

1000 = 10 * 10 * 10, сам автор по фрактальному методу и говорит, что нужно бить на простые множители. Кроме того это всё равно не избавляет от проверок диагоналей

По ссылкам, в оригинальной статье есть разбор существующих методов
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515439
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оптимальный алгоритм для 8*8 разработан давно
Задаче 30лет точно.(Была включена в сборник олимпиадных задач по программированию 1980г)
Чем алгоритм для 8*8 может отличаться от алгоритма 10000*10000 ?.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515448
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183, ты явно не в теме.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515455
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
совершенно не в теме.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515457
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183, алгоритм о котором ты говоришь - это поиск в глубину с возвратом
как мы уже выяснили имеет экспоненциальную сложность.

Для оптимизации на доске не ищутся не все клетки а заводится специальная
биткарта по вертикалям горизонталям и диагоналям. (Возможно это решение
и спрашивают на олимпиадах).

Но этот алгоритм не нравится Британским ботанам и они ищут другой.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515471
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovСуществует 3 варианта задачи:
1 найти любое расположение, при котором ферзи не бьют друг друга,
2 найти все такие расположения,
3 найти количество таких расположений.

Какой из вариантов им нужен?
Им надо "быстро" решить задачу. Что значит быстро? За полиномиальное время? Время на одно расположение или на полное решение?
Что значит решить? Алгоритм? Или дать развернутый ответ? )

Оказывается, они решают другую задачу:

n-Queens Completion problemGiven an nn chessboard on which some queens are already
placed, can you place a queen in every remaining row so that no two queens attack each
other?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515475
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не думаю что это другая задача.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515487
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ не думаю что это другая задача.

Ну, формулировки-то не совпадают.
Понятно, что это подзадача BackTracking, но от этого проще не становится, ибо там экспонента.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515535
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ не думаю что это другая задача.
Конкретно эта задача может и не иметь решения.
А ранее описанные три - имеют.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515548
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу что-же - миллион у нас уже в кармане. Осталось только написать письмо
Британским ботанам.

Но смущает что мы читаем какой-то репост на mail.ru где плохо описаны
условия того что надо собственно сделать. Найти первую попавшуюся
расстановку? - Фракталы рулят. Найти все? - Ну это ждать пока солнце не погаснет.

Вобщем нужен оригинал этой новости.
https://www.google.ru/search?num=30&newwindow=1&safe=off&source=hp&q=queens problem algorithm
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515549
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YouTube Video
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515554
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если скажем 100х100 клеток и у тебя 10000 ферзей, надо воткнуть максимальное кол-во ферзей максимально эффективно так, чтобы они друг-друга не ели
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515601
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более 100 не получится.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515649
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, что для 5, 7, 11, 13 существуют "фрактальные" решения (проверил все доски до 16х16).
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515668
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78если скажем 100х100 клеток и у тебя 10000 ферзей, надо воткнуть максимальное кол-во ферзей максимально эффективно так, чтобы они друг-друга не ели
Ты слышал про принцип Дирихле?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515671
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovИнтересно, что для 5, 7, 11, 13 существуют "фрактальные" решения (проверил все доски до 16х16).
Простые числа однако.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515697
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovИнтересно, что для 5, 7, 11, 13 существуют "фрактальные" решения (проверил все доски до 16х16).

Проверил 17, 19, 23 - тоже фрактальные.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515940
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovИнтересно, что для 5, 7, 11, 13 существуют "фрактальные" решения (проверил все доски до 16х16).в каком плане? есть их процент от общего количества решений?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515956
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytontip78если скажем 100х100 клеток и у тебя 10000 ферзей, надо воткнуть максимальное кол-во ферзей максимально эффективно так, чтобы они друг-друга не ели
Ты слышал про принцип Дирихле?
нет, но эту задачу (2000x2000 клеток) мой скрипт решает за 10сек
выглядит как это поле, только 2000
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
1       @···································································································
2       ··@·································································································
3       ····@·······························································································
4       ·@··································································································
5       ···@································································································
6       ········@···························································································
7       ··········@·························································································
8       ············@·······················································································
9       ··············@·····················································································
10      ·····@······························································································
11      ·······@····························································································
12      ··················@·················································································
13      ······@·····························································································
14      ·····················@··············································································
15      ·········@··························································································
16      ························@···········································································
17      ··························@·········································································
18      ····························@·······································································
19      ······························@·····································································
20      ···········@························································································
21      ·············@······················································································
22      ··································@·································································
23      ····································@·······························································
24      ······································@·····························································
25      ········································@···························································
26      ···············@····················································································
27      ·················@··················································································
28      ············································@·······················································
29      ················@···················································································
30      ···············································@····················································
31      ···················@················································································
32      ··················································@·················································
33      ····················································@···············································
34      ····················@···············································································
35      ·······················································@············································
36      ·························································@··········································
37      ···························································@········································
38      ······················@·············································································
39      ······························································@·····································
40      ·······················@············································································
41      ·································································@··································
42      ···························@········································································
43      ·························@··········································································
44      ·····································································@······························
45      ·······································································@····························
46      ·········································································@··························
47      ···········································································@························
48      ·············································································@······················
49      ·····························@······································································
50      ·······························@····································································
51      ·················································································@··················
52      ···················································································@················
53      ·····················································································@··············
54      ································@···································································
55      ························································································@···········
56      ·································@··································································
57      ···························································································@········
58      ·····································@······························································
59      ···································@································································
60      ·······························································································@····
61      ·································································································@··
62      ···································································································@
63      ····································································································
64      ·······································@····························································
65      ····································································································
66      ····································································································
67      ·········································@··························································
68      ····································································································
69      ··········································@·························································
70      ····································································································
71      ···········································@························································
72      ····································································································
73      ····································································································
74      ····································································································
75      ·············································@······················································
76      ····································································································
77      ··············································@·····················································
78      ·················································@··················································
79      ····································································································
80      ················································@···················································
81      ····································································································
82      ····································································································
83      ····································································································
84      ····································································································
85      ···················································@················································
86      ·····················································@··············································
87      ····································································································
88      ····································································································
89      ····································································································
90      ······················································@·············································
91      ························································@···········································
92      ····································································································
93      ····································································································
94      ····································································································
95      ··························································@·········································
96      ····································································································
97      ····································································································
98      ····································································································
99      ····························································@·······································
100     ····································································································
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515962
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Aleksandr SharahovИнтересно, что для 5, 7, 11, 13 существуют "фрактальные" решения (проверил все доски до 16х16).в каком плане? есть их процент от общего количества решений?

В том смысле, что "фрактальное" решение для доски NxN
позволяет построить решение для любой доски (M*N)x(M*N),
используя произвольное решение для доски MxM.
В частности для них можно построить решения (N^2)*(N^2).

Проценты:
5x5: 10 из 10
7x7: 28 из 40
11x11: 88 из 2680
13x13: 4524 из 73712

Проверил простые до 43 - для всех есть "фрактальные".

P.S. Если будете читать статью, то имейте в виду, что они
"фрактальные" решения называют "модулярными". Это одно и то же.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515964
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78эту задачу (2000x2000 клеток) мой скрипт решает за 10сек
выглядит как это поле, только 2000

Найти одно решение для любой доски можно вообще за 0 сек.
Строим фрактальное заведомо большей площади и откусываем, сколько надо.
Проблема не в этом.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515969
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovtip78эту задачу (2000x2000 клеток) мой скрипт решает за 10сек
выглядит как это поле, только 2000

Найти одно решение для любой доски можно вообще за 0 сек.
Строим фрактальное заведомо большей площади и откусываем, сколько надо.
Проблема не в этом.

всмысле одно? как угодно можно начальные фигуры воткнуть, время не изменится
а за 0 сек 2000 клеток и супер-комп не исполнит, не надо ляля )
и вообще:
авторНе известно ни одно более эффективное решение проблемы, чем простой перебор. Так, для n=27 в 2016 году использовался масштабный параллельный поиск на FPGA.

В то же время, если компьютер начнёт перебор возможных положений ферзей на доске 1000×1000 клеток, то он загрузится этой задачей навечно. По мнению учёных, если некто найдёт действительно быстрый и эффективный способ решения, то сможет извлечь из этого гораздо бóльшую выгоду, чем один миллион долларов от Математического института Клэя. «Если вы напишете программу, которая может решить проблему действительно быстро, вы могли бы адаптировать её для решения многих важных задач, с которыми мы сталкиваемся ежедневно, — говорит профессор информатики Ян Гент (Ian Gent), один из авторов научной работы.
или я чего-то не понимаю, или учёные мельчают...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39515994
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78или я чего-то не понимаю, или учёные мельчают...под решением предполагается нахождение всех вариантов - 20770319
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516003
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

Дирихле - это когда у тебя 1000 клеток и 1001 кролик. И как бы ты
их не рассаживал по клеткам - всегда найдётся клетка с двумя кролями.

Поэтому ферзи не станут в доску меньшей размерности чем их количество.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516014
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytontip78,

Дирихле - это когда у тебя 1000 клеток и 1001 кролик. И как бы ты
их не рассаживал по клеткам - всегда найдётся клетка с двумя кролями.

Поэтому ферзи не станут в доску меньшей размерности чем их количество.
я скажу больше - тут и 100 ферзей не встанет в 1000x1000 клеток ))
kealon(Ruslan)tip78или я чего-то не понимаю, или учёные мельчают...под решением предполагается нахождение всех вариантов - 20770319
в PDF так пишут:
авторThis is the first published instance of the n-Queens Completion problem, by Nauck (1850). The reader may enjoy attempting to place 6 more queens on the chess-board so that no two queens attack each other. Is it possible? If so, how many different ways are there to do it? The answers to these questions are given below in Figure 12.
так мы что, цифру ищем, сколько существует вариантов по-разному ферзей навтыкать?
А какой практический смысл в этом?
может всё-таки надо самый эффективный (где больше всех ферзей влезло)?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516017
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78так мы что, цифру ищем, сколько существует вариантов по-разному ферзей навтыкать?
А какой практический смысл в этом?
может всё-таки надо самый эффективный (где больше всех ферзей влезло)?
Какой практический смысл втыкать ферзей?

Влезет не больше чем клеток по горизонтали/вертикали, т.к. на одной линии (вертикальной/горизонтальной) больше одного ферзя не поставить.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516024
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну понятно, они это для тестов ИИ используют
тьфу ты
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516028
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторThe counting version of the problem, i.e. to determine how many solutions to n-Queens there are, is sequence A000170 of the Online Encyclopedia of Integer Sequences (Sloane, 2016). The sequence is currently known only to n = 27, for which the number of solutions is more than 2.34×10^^17. No approach better than optimised exhaustive search seems to be known: e.g. the n = 27 total was counted using a massively parallel search using FPGAs (Preußer, 2016)
это значит, что максимальное поле сейчас это 27x27, где они сумели найти ВСЕ возможные варианты?
а как они их вообще учитывают?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516029
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovНайти одно решение для любой доски можно вообще за 0 сек.
Строим фрактальное заведомо большей площади и откусываем, сколько надо.
Проблема не в этом.

Тут ошибка. Надо так:
Разлагаем на множители и строим фрактальное нужной площади.

tip78за 0 сек 2000 клеток и супер-комп не исполнит, не надо ляля )


2000 = 5^5 * 4^2
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516030
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78авторThe counting version of the problem, i.e. to determine how many solutions to n-Queens there are, is sequence A000170 of the Online Encyclopedia of Integer Sequences (Sloane, 2016). The sequence is currently known only to n = 27, for which the number of solutions is more than 2.34×10^^17. No approach better than optimised exhaustive search seems to be known: e.g. the n = 27 total was counted using a massively parallel search using FPGAs (Preußer, 2016)
это значит, что максимальное поле сейчас это 27x27, где они сумели найти ВСЕ возможные варианты?
а как они их вообще учитывают?

Просто считают. Алгоритм перебора гарантирует, что будут найдены все.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516034
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78ну понятно, они это для тестов ИИ используют
тьфу ты
В математике есть проблемы которые еще обрисовал Гильберт.

Среди таких - сущестование простых чисел близнецов. Например:
11,13.....17,19,....29,31.... e.t.c.

Фактически, (Дима свидетель) мы генерили в диапазоне int32 все
простые числа и можем подтвердить что они не заканчиваются.

Но сколько их? Они - бесконечны? Моя инженерная интуиция подсказывает
мне что да. Бесконечны. Ну... я так думаю что да. Готов спорить на коньяк.

Но нет МАТЕМАТИЧЕСКИ строгого доказательства этого явления.

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

А теперь научно поставленная проблема. До каких пор (до какого размера
доски) у нас будет существовать возможность расставлять ферзи.

Причем не просто найти фрактальную или любую другую жлобскую
комбинацию. А найти ВСЕ комбинации или доказать что они существуют.

Вопрос доказательства - это сложный вопрос. Тут можно пойти с двух
сторон. Со стороны математики. Это нам не под силам. И со стороны
алгоритмов и структур данных. Последнее нам под силам.

Фактически когда прозвучало число 1000 это имелось в виду (я так думаю) не 1000
а БЕСКОНЕЧНОСТЬ.

Британские ботаны НАС спрашивают. Расстановка ферзей - бесконечна?
А полиномиальный алгоритм - это наилучшее доказательство.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516038
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы про эти фракталы?


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

так, я понял! На доску 25x25 может влезть МАКСИМУМ 25 ферзей... Вот они там выше влезли все.
влезли - закрываем? едем на 26?? или как? или ищем другие 25 ферзей?
что конкретно им надо то?
судя по этому им именно это и надо:
n-Queens Completion problemGiven an nn chessboard on which some queens are already placed, can you place a queen in every remaining row so that no two queens attack each other?


Aleksandr Sharahovtip78пропущено...
это значит, что максимальное поле сейчас это 27x27, где они сумели найти ВСЕ возможные варианты?
а как они их вообще учитывают?

Просто считают. Алгоритм перебора гарантирует, что будут найдены все.
да ладно... битмапы они юзают, как белые люди ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516039
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonФактически когда прозвучало число 1000 это имелось в виду (я так думаю) не 1000
а БЕСКОНЕЧНОСТЬ.

Британские ботаны НАС спрашивают. Расстановка ферзей - бесконечна?
А полиномиальный алгоритм - это наилучшее доказательство.
поскольку они упёрлись в 27x27, то 1000 это как раком до бетельгейза
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516040
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, вот:
авторThis is the first published instance of the n-Queens Completion problem, by Nauck (1850). The reader may enjoy attempting to place 6 more queens on the chess-board so that
no two queens attack each other. Is it possible? If so, how many different ways are there to do it? The answers to these questions are given below in Figure 12.
ВСЕ возможные варианты этих 25 ферзей им нужны
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516041
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonБританские ботаны НАС спрашивают. Расстановка ферзей - бесконечна?


Скорее всего, да. По крайней мере, это так для досок размером (5^K)x(5^K).

Но они не это спрашивают, а другое:
Допустим, на доску NxN уже поставлено M ферзей. Можно ли завершить расстановку?
В худшем случае придется перебрать N-M ферзей, и домашние заготовки не помогут.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516043
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фракталы тоже не помогут.

1) Они покрывают только малую часть решений
2) Они не позволяют нам стартовать с неких начальных условий
когда произвольные ферзи уже стоят на доске.

Поэтому давайте больше не флудить фракталами. Они себя исчерпали КМК,
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516045
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ещё фракталы это всё-лишь одно и решений, а надо все
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516050
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78вы про эти фракталы?


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

так, я понял! На доску 25x25 может влезть МАКСИМУМ 25 ферзей... Вот они там выше влезли все.
влезли - закрываем? едем на 26?? или как? или ищем другие 25 ферзей?
что конкретно им надо то?
судя по этому им именно это и надо:
n-Queens Completion problemGiven an nn chessboard on which some queens are already placed, can you place a queen in every remaining row so that no two queens attack each other?


Aleksandr Sharahovпропущено...


Просто считают. Алгоритм перебора гарантирует, что будут найдены все.
да ладно... битмапы они юзают, как белые люди ))

Разумеется. Для ускорения перебора.

Кстати, вот интересное положение {[2,2],[4,7]} на доске [0..7,0..7]. Решение единственное.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516054
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovКстати, вот интересное положение {[2,2],[4,7]} на доске [0..7,0..7]. Решение единственное.
всмысле, единственное?
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        1 2 3 4 5 6 7 8 
1       · @ · · · · · · 
2       · · · · · @ · · 
3       · · @ · · · · · 
4       @ · · · · · · · 
5       · · · · · · · @ 
6       · · · @ · · · · 
7       · · · · · · · · 
8       · · · · · · @ · 

ВСЕГО ФЕРЗЕЙ: 7
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516055
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот другое решение
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        1 2 3 4 5 6 7 8 
1       · @ · · · · · · 
2       · · · · · · @ · 
3       · · @ · · · · · 
4       @ · · · · · · · 
5       · · · · · · · @ 
6       · · · @ · · · · 
7       · · · · · · · · 
8       · · · · · · · · 

ВСЕГО ФЕРЗЕЙ: 6
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516056
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу, торможу, решение = 8 ферзей :(
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516057
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели так трудно запомнить постановку?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516059
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78тьфу, торможу, решение = 8 ферзей :(

У меня нумерация Col,Row=0..7.
2 ферзя уже стоят в клетках [2,2] и [4,7].
Надо дополнить до полного решения.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516063
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНеужели так трудно запомнить постановку?
спать пора ))

У меня нумерация Col,Row=0..7
а на шахматной доске 1-8 )
вообще у них там походу формула с 1850г
стандартная матрица i-j это row-col, начинается с 1
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516068
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78, с нуля код обычно проще. Для справки приведу свой код перебора.

Глобальные константы, инициализация и отображение результата:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
const
  MaxBoardSize= 1000;
type
  TSolution= array[0..MaxBoardSize-1] of integer;
var
  BoardSize: integer= 0;
  QueenCount: integer;                             //for completion problem only
  QueenToRow: array[0..MaxBoardSize-1] of integer; //for completion problem only
  CanRow: array[0..MaxBoardSize-1] of boolean;     //for completion problem only
  CanCol: array[0..MaxBoardSize-1] of boolean;
  CanDiagP: array[0..2*MaxBoardSize] of boolean;
  CanDiagM: array[-MaxBoardSize..MaxBoardSize] of boolean;
  RowToCol: TSolution;
  Solution: TSolution;
  SolCount: int64;
  ModCount: int64;

procedure InitBoard(Size: integer= 1);
var
  i: integer;
begin;
  BoardSize:=Size;
  QueenCount:=Size;
  for i:=0 to MaxBoardSize-1 do QueenToRow[i]:=i;
  FillChar(CanRow, SizeOf(CanRow), true);
  FillChar(CanCol, SizeOf(CanCol), true);
  FillChar(CanDiagP, SizeOf(CanDiagP), true);
  FillChar(CanDiagM, SizeOf(CanDiagM), true);
  FillChar(RowToCol, SizeOf(RowToCol), 0);
  SolCount:=0;
  ModCount:=0;
  end;

procedure ReinitBoard(Size: integer);
var
  i: integer;
begin;
  BoardSize:=Size;
  QueenCount:=Size;
  for i:=0 to MaxBoardSize-1 do QueenToRow[i]:=i;
  SolCount:=0;
  ModCount:=0;
  end;

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin;
  if (ACol<BoardSize)
  and (ARow<BoardSize)
  and (ACol=Solution[ARow])
  then begin;
    TDrawGrid(Sender).Canvas.Brush.Color:=clGray;
    TDrawGrid(Sender).Canvas.FillRect(Rect);
    end;
  end;

procedure ShowFirstSolution;
begin;
  Solution:=RowToCol;
  with Form1.DrawGrid1 do begin;
    ColCount:=BoardSize;
    RowCount:=BoardSize;
    Repaint;
    SetFocus;
    end;
  end;

procedure CountSolution;
var
  i: integer;
begin;
  if SolCount=0 then ShowFirstSolution;
  inc(SolCount); //total
  for i:=0 to BoardSize-1 do
    if (CanDiagP[i]=CanDiagP[i+BoardSize])
    or (CanDiagM[i]=CanDiagM[i-BoardSize]) then exit;
  if ModCount=0 then ShowFirstSolution;
  inc(ModCount); //modular
  end;



Рекурсивный перебор:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
procedure PushColRow(Col, Row: integer);
begin;
  RowToCol[Row]:=Col;
  CanCol[Col]:=false;
  CanDiagP[Col+Row]:=false;
  CanDiagM[Col-Row]:=false;
  end;

procedure PopColRow(Col, Row: integer);
begin;
  CanCol[Col]:=true;
  CanDiagP[Col+Row]:=true;
  CanDiagM[Col-Row]:=true;
  end;

function CanColRow(Col, Row: integer): boolean;
begin;
  Result:=CanCol[Col] and CanDiagP[Col+Row] and CanDiagM[Col-Row];
  end;

procedure BackTrackRecursion(Row: integer);
var
  Col: integer;
begin;
  for Col:=0 to BoardSize-1 do begin;
    if CanColRow(Col, Row) then begin;
      PushColRow(Col, Row);
      if Row>0 then BackTrackRecursion(Row-1) else CountSolution;
      PopColRow(Col, Row);
      end;
    end;
  end;

procedure TForm1.bBackTrackRecursionClick(Sender: TObject);
var
  Size: integer;
  Tick: cardinal;
begin;
  InitBoard;
  for Size:=1 to 16 do begin;
    Tick:=GetTickCount;
    ReinitBoard(Size); BackTrackRecursion(Size-1);
    Tick:=GetTickCount-Tick;
    Memo1.Lines.Add(Format('Size=%d, SolCount=%d, ModCount=%d, Tick=%d',
      [Size, SolCount, ModCount, Tick]));
    end;
  end;



Итеративный перебор:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
procedure BackTrackIteration;
var
  Col, Row: integer;
begin;
  Row:=BoardSize-1;
  Col:=BoardSize-1;
  while true do begin;
    while Col>=0 do begin;
      if CanCol[Col] and CanDiagP[Col+Row] and CanDiagM[Col-Row] then begin;
        RowToCol[Row]:=Col;
        CanCol[Col]:=false;
        CanDiagP[Col+Row]:=false;
        CanDiagM[Col-Row]:=false;
        if Row>0 then begin;
          dec(Row);
          Col:=BoardSize-1;
          continue;
          end;
        CountSolution;
        CanCol[Col]:=true;
        CanDiagP[Col+Row]:=true;
        CanDiagM[Col-Row]:=true;
        end;
      dec(Col);
      end;
    inc(Row);
    if Row>=BoardSize then break;
    Col:=RowToCol[Row];
    CanCol[Col]:=true;
    CanDiagP[Col+Row]:=true;
    CanDiagM[Col-Row]:=true;
    dec(Col);
    end;
  end;

procedure TForm1.bBackTrackIterationClick(Sender: TObject);
var
  Size: integer;
  Tick: cardinal;
begin;
  InitBoard;
  for Size:=1 to 16 do begin;
    Tick:=GetTickCount;
    ReinitBoard(Size); BackTrackIteration;
    Tick:=GetTickCount-Tick;
    Memo1.Lines.Add(Format('BoardSize=%d, SolCount=%d, ModCount=%d, Tick=%d',
      [BoardSize, SolCount, ModCount, Tick]));
    end;
  end;



Итеративный перебор с начальными значениями:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
procedure BackTrackCompletion;
var
  Col, Row, Queen: integer;
begin;
  Queen:=QueenCount-1;
  Row:=QueenToRow[Queen];
  Col:=BoardSize-1;
  while true do begin;
    while Col>=0 do begin;
      if CanCol[Col] and CanDiagP[Col+Row] and CanDiagM[Col-Row] then begin;
        RowToCol[Row]:=Col;
        CanCol[Col]:=false;
        CanDiagP[Col+Row]:=false;
        CanDiagM[Col-Row]:=false;
        if Queen>0 then begin;
          dec(Queen);
          Row:=QueenToRow[Queen];
          Col:=BoardSize-1;
          continue;
          end;
        CountSolution;
        //exit;                     //comment this statement to calculate all solutions
        CanCol[Col]:=true;
        CanDiagP[Col+Row]:=true;
        CanDiagM[Col-Row]:=true;
        end;
      dec(Col);
      end;
    inc(Queen);
    if Queen>=QueenCount
    then break;
    Row:=QueenToRow[Queen];
    Col:=RowToCol[Row];
    CanCol[Col]:=true;
    CanDiagP[Col+Row]:=true;
    CanDiagM[Col-Row]:=true;
    dec(Col);
    end;
  end;

procedure TForm1.bBackTrackCompletionClick(Sender: TObject);
var
  Size, i, r, c: integer;
  Tick: cardinal;
begin;
  InitBoard(8);

  Tick:=GetTickCount;
  if SetColRow(2, 2)
  and SetColRow(4, 7)
  and (QueenCount>0)
  then BackTrackCompletion;
  Tick:=GetTickCount-Tick;

  Memo1.Lines.Add(Format('BoardSize=%d, SolCount=%d, ModCount=%d, Tick=%d',
    [BoardSize, SolCount, ModCount, Tick]));
  end;

...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516071
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, ну где же проще, если приходится вот так делать:
авторarray[0..MaxBoardSize -1 ]
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516115
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78, в первую очередь проще, понятнее и эффективнее должен быть сам алгоритм.

А что не так с этим объявлением?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516201
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не в обиду будь сказано но я иногда тихонько ржу с делфистов. Особенно из их
Желания создать везде forms-приложение даже в тех случаях когда эта форма вообще не нужна.

А так в целом делфисты - классные парни. Классные...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516210
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНе в обиду будь сказано но я иногда тихонько ржу с делфистов. Особенно из их
Желания создать везде forms-приложение даже в тех случаях когда эта форма вообще не нужна.

А так в целом делфисты - классные парни. Классные...

Тоже не в обиду сишникам:
неумение отделить мух от котлет у многих из них в крови
и является предметом особой гордости.

P.S. Работа с формой там только для удобства тестирования и визуализации,
а сами алгоритмы - обычные плоские функции.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516224
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovtip78, в первую очередь проще, понятнее и эффективнее должен быть сам алгоритм.

А что не так с этим объявлением?
то что в массиве 0-X вам надо делать -1 при получении размера
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516227
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причём у вас их столько, что имело смысл переменную завести
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516235
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Aleksandr Sharahovtip78, в первую очередь проще, понятнее и эффективнее должен быть сам алгоритм.

А что не так с этим объявлением?
то что в массиве 0-X вам надо делать -1 при получении размера

Ну, возьми сравни два любых нетривиальных алгоритма с базой 0 и с базой не 0.
Почти наверняка с базой 0 будет понятнее и проще.
И уж точно привычнее и потому вероятность появления ошибки в нем меньше.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516273
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В тему не влезал, а просто попалось на глаза:
2000 = 5^5 * 4^2 -- наверное это сугубо тяпничное равенство.

Однако Гольдбах и сформулирован проще, а стоит стокаже, может лучше его? при условии конечно, что его ещё не сделали ... А интересно, сколько страниц займёт топик на ярд баков?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516284
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

Гольдбах не взлетит в медийном пространстве. Это удел математиков.

А шахматы - понятны почти всем. Их можно обсуждать даже на обывательком уровне.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516287
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp982000 = 5^5 * 4^2 -- наверное это сугубо тяпничное равенство.


Спасибо за найденную опечатку.
Если не ошибаюсь, 2000 = 5^3 * 4^2 )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516323
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonГольдбах не взлетит в медийном пространстве. Это удел математиков. Ну не скажи. Лет 15 назад встретил статейку типа "Пролетая над миллионом баксов". То есть как подать ... тем более, что полнолуние на носу очередное ...
А там вроде программист о своём пролёте и о переборе чисел, и строил графики, убеждая что чем длиннее график, тем убедительнее. Что-то в этом роде.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516398
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

Скажи честно. Какой процент из твоих коллег айтишников в состоянии поддержать беседу на тему этих гольбахов, риманов ?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516406
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшие улучшения-уточнения к алгоритмам 20774198

1. В процедуре подсчета решений можно сэкономить 1 проход цикла,
т.к. объединение больших диагоналей с пустыми не меняет количество модулярных решений:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure CountSolution;
var
  i: integer;
begin;
  if SolCount=0 then ShowFirstSolution;
  inc(SolCount); //total
  for i:=0 to BoardSize-2 do //excluding big digonals
    if (CanDiagP[i]=CanDiagP[i+BoardSize])
    or (CanDiagM[i+1]=CanDiagM[i+1-BoardSize]) then exit;
  if ModCount=0 then ShowFirstSolution;
  inc(ModCount); //modular
  end;



2. Соответственно можно убрать ставшие лишними пустые диагонали из массивов:
Код: pascal
1.
2.
  CanDiagP: array[0..2*MaxBoardSize-2] of boolean;
  CanDiagM: array[-MaxBoardSize+1..MaxBoardSize-1] of boolean;



3. Начальные условия для Completion Problem задаются серией вызовов процедуры SetColRow,
код которой я забыл привести:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function SetColRow(Col, Row: integer): boolean;
var
  Queen, OldRow: integer;
begin;
  Result:=false;
  if (Col>=BoardSize) or (Row>=BoardSize) or not CanColRow(Col, Row) then exit;
  PushColRow(Col, Row);
  dec(QueenCount);
  OldRow:=QueenToRow[QueenCount];
  QueenToRow[QueenCount]:=Row;
  for Queen:=QueenCount-1 downto 0 do
    if QueenToRow[Queen]=Row
    then QueenToRow[Queen]:=OldRow;
  Result:=true;
  end;



4. Все классовые методы а также процедуры, в которых упоминается Form1,
без всякого ущерба можно выкинуть или заменить консольные.
Это всего-навсего лишь примеры вызова из Delphi процедур-решателей.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516432
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр. А чем твой алгоритм отличается от описанных в wiki?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516450
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСкажи честно. Какой процент из твоих коллег айтишников в состоянии поддержать беседу на тему этих гольбахов, риманов ? Скажу честно, %=0, даже среди тех, с кем выпускался. Более того, на уровне теории я профан.

Однако же и на тему ОТО и СТО их процент тоже =0, тем не менее среди не айти молоденьких бывших коллег подобные вопросы вызывали живой интерес причём не я даже инициировал тему.
Но ведь и вы же здесь тоже не теории разрабатываете, а суперэффективная программулька может оказаться полезной.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516452
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonАлександр. А чем твой алгоритм отличается от описанных в wiki?

Ща почитаю. Шутка.

1. В принципе у меня обычный поиск с возвратом, чуть иначе записанный, чтобы рекурсия была прозрачной. Думаю, за счет использования массивов занятых вертикалей и диагоналей даже у рекурсивного варианта должна быть неплохая скорость.

2. Второй вариант - те же яйца, но без рекурсии. Скорость в 1.5 раза выше, что, в общем-то, смешно, конечно.

3. И, наконец, третий вариант позволяет задать начальную расстановку произвольного количества ферзей, которую надо "дорешать". Он чуть медленнее второго за счет косвенного перебора строк.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516461
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ах, да, забыл.
Все варианты подсчитывают общее количество решений и количество модулярных решений.
Модулярные хороши тем, что ими можно мостить.
Ну и, в добавок, программирующие на Delphi видят доску с решением на экране )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516602
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.5 раза это просто коэффициент который в рамках той астрономически великой оценки не играет никакого значения.

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

Причина - экспоненциальная сложность. Наша задача-минимум свести эту сложность к полиномиальной. А это можно сделать только
Отказавшись от классического алгоритма. То есть выкинуть его вообще.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516633
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

тут есть кто-то, кто этого не понимает? )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516668
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таких случаях один наш преп деликатно вопрошал: "Поднимите руку, кто понял."
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516725
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отлично. Тогда давайте делится идеями о том как улучшить асимптоматику ферзей.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516728
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton1.5 раза это просто коэффициент который в рамках той астрономически великой оценки не играет никакого значения.

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

Причина - экспоненциальная сложность. Наша задача-минимум свести эту сложность к полиномиальной. А это можно сделать только
Отказавшись от классического алгоритма. То есть выкинуть его вообще.
надо всего-лишь найти способ сразу ставить 8 фигур на доску ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516729
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
технически, если наша цель - поиск всех готовых решений, неплохо бы научиться использовать битмапы из прошлых 27 досок...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516755
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОтказавшись от классического алгоритма. То есть выкинуть его вообще.
tip78надо всего-лишь найти способ сразу ставить 8 фигур на доску ))
технически, если наша цель - поиск всех готовых решений, неплохо бы научиться использовать битмапы из прошлых 27 досок...
можно ограничения переформулировать в матричном виде
на вскидку, как-то так:

det(A * N - N* A) <> 0, det(A * N + N* A) <> 0 - условие на пересечение диагоналей
abs(det(A)) = 1 - пересечение строк и столбцов
где
A = E * A'
E - единичная матрица
N = 1 1 1...2 2 2...............N N N...


{A} -?

не знаю правда, может ли это чем ни будь помочь
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516819
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как найти одно случайное решение (в т.ч. завершение) за полиномиальное время:

http://www.fizyka.umk.pl/~milosz/AlgIILab/10.1.1.57.4685.pdf
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516826
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте я еще подкину несколько мыслей. Или несколько предположений.
А вы скажите годные они или нет и как их можно применить в этой задаче.

1) Почему так долго ищем расстановки? Если честно я пока не знаю. Скорее всего из-за того что
мы ищем вслепую не учитывая особенности эвристик. Несколько месяцев назад
в подфоруме Java один чел решал задачу Knight-Tour. И заюзал правило Варнсдорфа.
Вобщем суть в том что шахматный конь смотрит на 2 хода вперед и решает двигаться
туда откуда будет меньше ходов. Такая простая эвристика застваляет коня притягиваться
к краям доски или к площади уже покрытой ходами и как следствие "уходить" в сторону
от открытых площадей где идет сильное ветвление дерева (до 7 потомков на каждом узле).
Это наивное правило очень эффективно работало для этой задачи. Надо поискать аналог
для ферзей.

2) О пользе индексирования.

Зачем индексировать? Ну я как бывший базовик скажу вам. Если чото медленно
ищется - индексируй. Как - куча направлений. По сути индексирование - это
создание доп-структур данных которые помогают в более быстром поиске.

Это не обязательно применяется к 1-мерным данным. К чему угодно. Индексируется
пространство на картах гугла и ядекса. Q-Tree, R-Tree, M-Tree, кривые Гильберта и
Мортона и прочие коробочные технологии Spatial. Почему не индексировать доску?

Я рассматривал некоторые завершенные решения расстановок ферзей на
https://forany.xyz/a-16?pg=11 и обратил внимание на следующее.

Доска сбалансирована относительно центра. Если условно разбить ее на 4 четверти.
Или на 4 комнаты. То в каждой комнате будет сидеть одинаковое число ферзей
относительно центра.

Это можно использовать для принятия решения о том куда поставить следующего
ферзя. Мы учитываем пробивание вертикалей горизонталей и диагоналей
но очевидно что можем учитывать еще и заполнение комнат.
(Если кто-то найдет еще какие-то признаки - то пишите.)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516839
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovкак найти одно случайное решение (в т.ч. завершение) за полиномиальное время:

http://www.fizyka.umk.pl/~milosz/AlgIILab/10.1.1.57.4685.pdf
и чего, британские (и все остальные в мире) ботаники не знают про этот документ от 1990г ?
а откуда у них в 1990г было УЖЕ решение на 100х100, когда современные супер-компы умерли на 27х27 ? они вообще про какую задачу?
500000x500000 ? srsly? in 1990?
"по-моему всё-таки Вася 3.14здит" (с)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516842
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        1 2 3 4 5 6 7 8 9 0
1       @ · · · · · · · · ·
2       · · @ · · · · · · ·
3       · · · · @ · · · · ·
4       · @ · · · · · · · ·
5       · · · @ · · · · · ·
6       · · · · · · · · @ ·
7       · · · · · · · · · ·
8       · · · · · · · · · ·
9       · · · · · · · · · ·
10      · · · · · @ · · · 


вот видите паттерн в виде ромба в левом-верхнем углу (ij): 23,35,54,42
ими можно заполнять любую доску сразу и выкидывать из проверки, сокращая кол-во вариантов
возможно можно даже заранее высчитывать, сколько их поместится на ту или иную доску
а ведь есть и другие паттерны
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516843
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мутная статья. Я не понимаю что такое

Код: sql
1.
swap(queen(i),queen(j))


От перестановки ферзей местами ничего не меняется.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516844
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема правда в том, что алгоритм перебора потом всё-равно не узнает, где ему остановиться... он будет до 8й фигуры повторять эту доску
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516846
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78, чел даже если ты переберешь все ромбы, фракталы и прочие знаки отличия,
это будет все равно очень малый процент всех решений. И хардкод. А чортовы Англо-Саксы хотят
все решения.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516850
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Варнсдорф не катит на больших досках. Там прекрасно работают склейки, причем из довольно небольшого арсенала минидосок.
Некоторым аналогом Варнсдорфа в нашем случае будет не тупой переход к следующей по порядку строке, а к самой плохой строке с минимальным количеством допустимых ячеек. Думал над этим. Скорее всего получится углубиться еще на несколько ходов, но не в разы. От экспоненты это не избавляет.

2. Насчет индексирования не понял, как его пристегнуть.
Насчет сбалансированности - по идее, она есть, если смотреть с высоты птичьего полета, а в микромире необязательно.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516853
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМутная статья. Я не понимаю что такое

Код: sql
1.
swap(queen(i),queen(j))


От перестановки ферзей местами ничего не меняется.

Нормальная статья. Тоже думал реализовать эти перестановки, но даже не предполагал, что будет такая офигительная статистика на больших досках. Идея здесь, конечно, не в том, чтобы поменять пару ферзей местами, а в том, чтобы изменить их положение, не меняя занятых ими строк и столбцов, если это уменьшит столкновения по диагоналям.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516855
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще заметил чисто такое вероятностное (probabalistic) правило.
На большинстве досок с успешной расстановкой ферзи
стоят на расстоянии прыжка коня. Ну тоесть следующий
ферзь с большой вероятностью станет на прыжок буквой "Г".

Правда есть расстановки где ферзь стоит чуть более вытянутой
буквой.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516856
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovИдея здесь, конечно, не в том, чтобы поменять пару ферзей местами, а в том, чтобы изменить их положение, не меняя занятых ими строк и столбцов, если это уменьшит столкновения по диагоналям.
Можешь привести пример как это сделать?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516862
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕще заметил чисто такое вероятностное (probabalistic) правило.
На большинстве досок с успешной расстановкой ферзи
стоят на расстоянии прыжка коня. Ну тоесть следующий
ферзь с большой вероятностью станет на прыжок буквой "Г".

Правда есть расстановки где ферзь стоит чуть более вытянутой
буквой.

Это так для малых размеров. На больших все чаще наблюдаются отступления от этого наблюдения.


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

Например, переставить ферзей с полей [0,0] и [1,2] на поля [0,2] и [1,0].
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516863
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

неточность, он переставляет только конфликтующие по диагонали, т.е. с полей [0,0] и [2,2] на поля [0,2] и [2,0].

Понятно, что между собой они продолжат конфликтовать, зато суммарное количество конфликтов на доске может уменьшиться.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516867
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovmaytonМутная статья. Я не понимаю что такое

Код: sql
1.
swap(queen(i),queen(j))


От перестановки ферзей местами ничего не меняется.

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

maytonЕще заметил чисто такое вероятностное (probabalistic) правило.
На большинстве досок с успешной расстановкой ферзи стоят на расстоянии прыжка коня. Ну тоесть следующий ферзь с большой вероятностью станет на прыжок буквой "Г".

Правда есть расстановки где ферзь стоит чуть более вытянутой буквой.
я про целый паттерн из таких букв Г написал
смысл по одной лепить, когда целыми фракталами можно
но всё-таки эффективному решению это слабо поможет
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516897
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovAleksandr Sharahov,

неточность, он переставляет только конфликтующие по диагонали, т.е. с полей [0,0] и [2,2] на поля [0,2] и [2,0].

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

Код: plaintext
1.
2.
for(i=0;i<random;i++) 
  next_permutation(queens);


Потом делают несколько простых проверок и устраняют наиболее конфликтующие ферзи.
Меняют их местами и продолжают до тех пор пока не получат результат.

Возможно это полином по отношению к начальной пермутации.

Но это НЕ полином по отношению ко всем расстановкам. Ведь чтобы получить
все нам придётся неизвестное число раз (по их алгоритму) кидать кости.

И где будем хранить базу уже расчитанных пермутаций? А это на минуточку 1000 под факториалом.
Ни один амазон-сторедж не схавает.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516912
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAleksandr SharahovAleksandr Sharahov,

неточность, он переставляет только конфликтующие по диагонали, т.е. с полей [0,0] и [2,2] на поля [0,2] и [2,0].

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

Код: plaintext
1.
2.
for(i=0;i<random;i++) 
  next_permutation(queens);


Потом делают несколько простых проверок и устраняют наиболее конфликтующие ферзи.
Меняют их местами и продолжают до тех пор пока не получат результат.

Возможно это полином по отношению к начальной пермутации.

Но это НЕ полином по отношению ко всем расстановкам. Ведь чтобы получить
все нам придётся неизвестное число раз (по их алгоритму) кидать кости.

И где будем хранить базу уже расчитанных пермутаций? А это на минуточку 1000 под факториалом.
Ни один амазон-сторедж не схавает.

А никто и не предлагает именно так это делать.

Он делает от, что делает. А именно, находит случайное решение при заданных начальных условиях.

Есть пара не до конца продуманных идей, что с этим делать.
Например, генерировать разбиения и выкачивать из них решения. Только не спрашивайте, что это значит )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516919
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovА никто и не предлагает именно так это делать.

Он делает от, что делает. А именно, находит случайное решение при заданных начальных условиях.

Есть пара не до конца продуманных идей, что с этим делать.
Например, генерировать разбиения и выкачивать из них решения. Только не спрашивайте, что это значит )
Я думаю что яйцеголовые ботаны не такие наивные. И лям бачей так просто никому не отдадут.
Задача генерации всех решений из начальных условий - не тривиальная. И здесь "с наскока"
или "карандашом на салфетке" никто ее не сделает.

Тут нужны усилия. Причем я думаю что даже негативный результат тоже будет воспринят
положительно. Тоесть даже если не будет найдено полиномиальное решение - и будет
доказано что его нет - то это тоже серъезное продвижение в науке.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516923
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕще заметил чисто такое вероятностное (probabalistic) правило.
На большинстве досок с успешной расстановкой ферзи
стоят на расстоянии прыжка коня. Ну тоесть следующий
ферзь с большой вероятностью станет на прыжок буквой "Г".

Правда есть расстановки где ферзь стоит чуть более вытянутой
буквой.
Ход конём в позапрошлом веке предложили (или в прошлом), для 8*8 - можно отбрасывать этот вариант
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516927
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте ваши предложения. Особо меня интересует выбор следующей клетки.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39516934
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДавайте ваши предложения. Особо меня интересует выбор следующей клетки.моё мнение, что надо как-то от этого отходить, т.е. решать всю доску сразу целиком хотя бы на логическом уровне

т.е. предположительно, существует какая-то матрица EA^k, описывающая все такие случаи
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517012
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ думаю что яйцеголовые ботаны не такие наивные. И лям бачей так просто никому не отдадут.
Задача генерации всех решений из начальных условий - не тривиальная. И здесь "с наскока"
или "карандашом на салфетке" никто ее не сделает.

Тут нужны усилия. Причем я думаю что даже негативный результат тоже будет воспринят
положительно. Тоесть даже если не будет найдено полиномиальное решение - и будет
доказано что его нет - то это тоже серъезное продвижение в науке.

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

Правда был, вроде, чувак, который говорил что-то вроде
"дайте мне всю вашу память, и я решу". Если ничего не путаю )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517025
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архимед вроде был.

По поводу квантовых комков я пас. Не готов поддержать беседу. Но думаю скоро полному хотябы обсуждение.
Ато квантовый комп у всех на устах но никто конкретно ничего не знает
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517032
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonАрхимед вроде был.

Да, нет. Из 19 века товарищ.
При этом время у него все равно было какое-то не практичное.
Всем становится пофиг на полиномиальное решение, если коэффициенты измеряются в годах.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517061
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот самый перспективный метод )):
tip78 надо всего-лишь найти способ сразу ставить 8 фигур на доску )) Почему? потому что он неалгоритмический. Остальные методы все алгоритмические. Это немножко шутка.

Но вот выше было про изучение свойств расстановки (буква Г и т.д. - всё что бросается в глаза). Толькоя думаю, что метод тыка тут конечно может сработать, но неплохо было бы иметь теорию(-и), описыыввающую(-ие) свойства, структуру расстановок. Знает кто ссылки? хотябы рууские перессказы?

З.ы. Лично я совершенно не заинтересован ни в коей доле того самого ляма, о к-ром только вчера и узнал здесь, не влезать же в тему с нуля. А вот хитропопые Великие Британские Учёные быстро обставят всех, лишь только усекут жемчужное зерно в, извините, "навозной куче" местного штурма.

ЗЗЫ. Вот индексация. Почему, например, чел.моск достаёт свои данные примерно константно, максимум линейно. Например м.б. потому, что использует иерархический доступ.

ЗЗЗЫ. Изучение свойств расстановок. Сколько кивков было недавно ещё в сторону нервосеток. Как только встала реальная для них задача, никто о них и не вспомнил.

Это мои 5 копеек ...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517082
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov зато суммарное количество конфликтов на доске может уменьшиться. Вот кстати в этом направлении кто-нить копалсяс? Просто вспомнился вообще класс меодов поиска локального оптимума, не полный перебор. За симлекс-метод один чувак даже бабки получил, вернее за его применение в экономике, что ли.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517110
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Вот самый перспективный метод )):
tip78 надо всего-лишь найти способ сразу ставить 8 фигур на доску )) Почему? потому что он неалгоритмический. Остальные методы все алгоритмические. Это немножко шутка.

Но вот выше было про изучение свойств расстановки (буква Г и т.д. - всё что бросается в глаза). Толькоя думаю, что метод тыка тут конечно может сработать, но неплохо было бы иметь теорию(-и), описыыввающую(-ие) свойства, структуру расстановок. Знает кто ссылки? хотябы рууские перессказы?

З.ы. Лично я совершенно не заинтересован ни в коей доле того самого ляма, о к-ром только вчера и узнал здесь, не влезать же в тему с нуля. А вот хитропопые Великие Британские Учёные быстро обставят всех, лишь только усекут жемчужное зерно в, извините, "навозной куче" местного штурма.

ЗЗЫ. Вот индексация. Почему, например, чел.моск достаёт свои данные примерно константно, максимум линейно. Например м.б. потому, что использует иерархический доступ.

ЗЗЗЫ. Изучение свойств расстановок. Сколько кивков было недавно ещё в сторону нервосеток. Как только встала реальная для них задача, никто о них и не вспомнил.

Это мои 5 копеек ...

Кто сетками занимается, те не только помнят. Но пока увы. Но обещают.

Относительно константного времени.
Вот, допустим, удалось нам решить за полиномиальное время и мы записали ответ на бумажке. Записали за какое время? Надо, чтоб тоже за полиномиальное. Значит упаковали как-то. Как отвечать тому, кто спросит? За константное время, потребное на распаковку одного решения. И чем это отличается от ограничение на алгоритм, требующего, чтобы на поиск одного решения было затрачено константное время? Значит, надо передавать спрашивающему весь архив решений с программой распаковки. И чем это отличается от передачи алгоритма решения? Значит, надо чтобы спрашивающий был способен работать со всем архивом сразу без его распаковки. А это и есть пара квантовых компов, которые общаются между собой.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517113
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Aleksandr Sharahov зато суммарное количество конфликтов на доске может уменьшиться. Вот кстати в этом направлении кто-нить копалсяс? Просто вспомнился вообще класс меодов поиска локального оптимума, не полный перебор. За симлекс-метод один чувак даже бабки получил, вернее за его применение в экономике, что ли.

Это не чувак, а Академик.

Хотел покопаться, но тот чувак из статьи опередил )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517213
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поскольку я не в теме, и руку не поднимал: А насколько полно там он всё представил?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517231
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Поскольку я не в теме, и руку не поднимал: А насколько полно там он всё представил?

В явном виде алгоритм не приводит, но общего описания достаточно, чтобы самостоятельно экспериментировать.
Особенно вдохновляет на это полученная в его экспериментах статистика.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517271
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нейросетки будут решать эту задачу, как мозг - во все стороны сразу
т.е. банально на каждое ядро по ветке (выстраивание ферзей) или типа того
и я думаю они через них в 27 и упёрлись )

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

Сегодня существует два основных подхода к разработке подобных устройств — классический и адиабатический. Сторонники первого из них пытаются создать универсальный квантовый компьютер, кубиты в котором подчинялись бы тем правилам, по которым работают обычные цифровые устройства. Работа с подобным вычислительным устройством в идеале не будет сильно отличаться от того, как инженеры и программисты управляют обычными компьютерами. Адиабатический компьютер проще создать, но он ближе по принципам своей работы к аналоговым компьютерам начала XX века, а не к цифровым устройствам современности.

РИА Новости https://ria.ru/science/20170714/1498476410.html
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517286
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,
квантовый комп теоретически может предложить что-то эффективнее и уж конечно он будет быстрее в классике я не столь оптимистичен только потому, что лет 10 или больше назад был даклад РАН, в к-ром был вывод, что квантовые вычисления где-то быстрее, а где-то медленнее. Не уточнялось где именно. С тех пор конечно прошло время, но несмотря на перетурбации у нас, старым выводам РАН я доверяю больше, нежели пусть и свежим смям. Вот такой я консерватор. А что ИТ-пузыри любят надувать - уже ясно наверное всем.
И потом, это несколько иное: ускориться за счёт вычислительного устройства или же за счёт алгоритмов. Вот если для них есть теоретический предел, тогда конечно.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517312
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98tip78,
квантовый комп теоретически может предложить что-то эффективнее и уж конечно он будет быстрее в классике я не столь оптимистичен только потому, что лет 10 или больше назад был даклад РАН, в к-ром был вывод, что квантовые вычисления где-то быстрее, а где-то медленнее. Не уточнялось где именно. С тех пор конечно прошло время, но несмотря на перетурбации у нас, старым выводам РАН я доверяю больше, нежели пусть и свежим смям. Вот такой я консерватор. А что ИТ-пузыри любят надувать - уже ясно наверное всем.
И потом, это несколько иное: ускориться за счёт вычислительного устройства или же за счёт алгоритмов. Вот если для них есть теоретический предел, тогда конечно.я с ними тоже согласен, это никак не комп, а просто процессор для узких действий, типа видеокарты. И большинство алгоритмов для него придётся искать заново.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517322
jbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по числам:
https://oeis.org/A000170 количество решений задачи
для размерности 27 имеем 2,2e17 решений из 27!, т.е. где-то каждое 46млрд
если учесть, что 1 поток проца 3GHz будет находить 1 решение и печатать его (или просто считать +1) за 1 такт, то понадобится 78млн секунд, т.е. 2,5года (для однопоточного ЦПУ)
следующее число (для 28) будет где-то на порядок больше, т.е. чтобы найти все решения (1решение = 1такт) понадобится уже 25 лет.
честно говоря, с такими временами сложности - что O(n!), что O(C^n), что O(n^C) - както блекнут

по задаче:
они хочут, чтобы алгоритм находил решение с несколькими уже расставленными M ферзями (желательно еще при жизни Солнца) для размерности, например, N=100.
хотя бы 1 решение, либо, что таковых нет.
кажется, что алгоритм без переборов просто должен сразу выдать доску со всеми N ферзями, иначе перебор уже не успевает до большого коллапса
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517420
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ннну хорошо (плохо, конечно, что так долго), тут уже писали про инсайт как метод решения.

А что имеется по рекуррентным формулам? Я имею ввиду по позиции для размерности К выдать позицию для К+1 доски. Какие-то преобразования предыдущей позиции при этом неизбежны ведь.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517429
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

это не помогает, т.к. решения для n+1 получаются из нерешений для n.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517459
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, а вот как раз именно из РЕШЕНИЙ в решения ? Ведь могут жеж существовать хорошие закономерности? Про это что говорят? Вон простые числа уже уже 20 лет как можно разбивать на классы логиками лукасевича ))
Ну то есть, как и ожидалось, что "нет ничего практичнее хорошей теории"? Если она есть, конечно.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517474
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

что-то было, но не впечатлило настолько, чтобы захотелось попробовать
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517540
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний пока вопрос у меня. Всем спсб, чувствую, что замучил уже - но хоть какое-то быстрое введение в тему. Весь топик нет возможности осиливать, и всё равно между очередными доработками и форумом перевесил форум.

А какие-нить метрики для правильных позиций е? Скаже, в виде матриц, графов перехода или в виде последовательности слов длины К и т.п. ? В последнем случае напрашивается метрика редактирования ...
Я отдаю себе отчёт, что их расчёт сам по себе не ускорит перебор. Просто я сдвинут на структуризации позиций, надо же в этом хаосе порядок наводить, а не догоню - хоть согреюсь ...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517568
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

количество коллизий сойдет в первом приближении за метрику.

Но есть нюанс.
Совсем мало коллизий (но не 0) иногда будет хуже, чем просто мало.
Т.к. их не всегда можно аннигилировать.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517576
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разумеется, речь о коллизиях диагоналей.
Строки и столбцы всегда должны быть в идеальном порядке.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517681
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понимаю. А в чём такая сложность? Прикладываю картинку. По такому же принципу решается и задача 1000x1000. Единственная возможная проблема - попадание на длинную диагональ (тогда каждый ферзь из одной половины будет бить соответствующего ферзя из другой). В этом случае рисунок верхней половины надо сместить на 1 клеточку вправо, а нижний, соответственно, на одну клеточку влево (что бы соблюсти симметричность).

Поместится ровно 1000 ферзей :)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517689
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оу. Небольшое исправление к прошлому комментарию.
Я случайно рисовать с крайней клеточки начал, это, разумеется, ошибка. Надо начинать со второй, а не с самой угловой.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517692
jbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр,
Код: plaintext
1.
2.
3.
4.
The new research concerns the n-Queens Completion Problem, where not only is the board larger, but also some queens have already been placed. 
That is, if some queens have already been placed on the n-by-n board, can you find a solution to the n-Queens puzzle without moving any of those queens?
... even the discovery of an algorithmic solution to the n-Queens Completion puzzle for all n would not be enough. 
What would be necessary would be either a proof that there is an algorithm that can solve the n-Queens Completion puzzle in polynomial time,
or a proof that no such algorithm exists.
не просто накидать ферзей, а УЖЕ стоят M-ферзей, надо задачу дорешать до N (M<N). и доказать, что алгоритм решает "Задачу Завершения N-Ферзей" за полиноминальное время ИЛИ что такого алгоритма нет
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517693
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А-А!!! Да что ж это такое :)

Чёто пока решал устал видимо. Начал точки отмечать не с самой нижней строки. Вот, теперь точно правильно. Вот так надо отмечать.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517695
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jbond,

а... в новости мэйла это обстоятельство не указывалось. двойка им :) Ну тогда надо подумать. Хотя наверняка алгоритм существует, его просто надо найти.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517712
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

По поводу ответа на бумажке. Разумеется никому она не нужна. Всех интересует формальное доказательство
Существования полином - алгоритма.

Как проверить правильность твоего метода ? В имплементации на конкретном яп.
Также как и в контестерах. Пишется отдельный тестовый environment который
Проверяет корректность выхода.

А проверить ферзей легко.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517714
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

если дочитаешь вику до конца, то найдешь там свое решение для общего случая.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517717
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВсех интересует формальное доказательство Существования полином - алгоритма.

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

прикольно, конечно, но зачем это здесь?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517763
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovtip78,

прикольно, конечно, но зачем это здесь?
штобы мозги не выкипели
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517764
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAleksandr Sharahov,

По поводу ответа на бумажке. Разумеется никому она не нужна. Всех интересует формальное доказательство
Существования полином - алгоритма.

Как проверить правильность твоего метода ? В имплементации на конкретном яп.
Также как и в контестерах. Пишется отдельный тестовый environment который
Проверяет корректность выхода.

А проверить ферзей легко.
да по сути они хотят, чтобы сразу во все точки встали 8 ферзей и сразу во всех позах
да им тут даже квантовая запутанность не поможет ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517814
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovmaytonВсех интересует формальное доказательство Существования полином - алгоритма.

Алгоритма чего? Опиши выход этого алгоритма.

Как вариант:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
intefrace FuckenQueenIterator {

   void init(int deskSize, Position[] startPosition); 

   boolean hasNext();

   Position[] nextPostitions();
}



А вообще нужен документ. С формулами. Графиками. С описанием метода. И он будет важнее.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517816
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78да по сути они хотят, чтобы сразу во все точки встали 8 ферзей и сразу во всех позах
да им тут даже квантовая запутанность не поможет ))
Давайте уберем из топика терминологию высокой физики. Мы не в состоянии оперировать
такими понятиями. И их использование только сбивает с толку. Со стороны выглядит
просто как бравирование эрудицией.

Но углубиться ведь не можем. Верно?

Давайте говорить об асимптоматике, шахматах и структурах данных. Тоесть о том что понятно It-шникам.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517818
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

обсуждали раньше, в этом случае все решения будут выданы за экспоненциальное время.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517819
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, прошу прощения. Не понял в каком случае?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517823
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, если выдавать по одному решению через GetNext
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517826
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, мне кажется что мы с вами говорим на разных языках.

Я вам нарисовал просто интерфейс итератора. А вы мне что-то говорите
про экспоненциальное время.

Где здесь какое-то время? Это чортов итератор!
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517830
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAleksandr Sharahov, мне кажется что мы с вами говорим на разных языках.

Я вам нарисовал просто интерфейс итератора. А вы мне что-то говорите
про экспоненциальное время.

Где здесь какое-то время? Это чортов итератор!

который выводит экспоненциально большое количество решений за экспоненциально большое время
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517839
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отлаживаю алгоритм 20776910

показывает неплохое время на поиск одного случайного решения
~15 сек на доске 50000x50000
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517847
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovотлаживаю алгоритм 20776910

показывает неплохое время на поиск одного случайного решения
~15 сек на доске 50000x50000
боюсь что без отлова повторов потом ВСЕХ решений не найти
а с отловом будет жёсткий хардкор по времени, растущий экспоненциально
тут либо надо последовательно, либо сразу все решения на доске ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517849
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Aleksandr Sharahovотлаживаю алгоритм 20776910

показывает неплохое время на поиск одного случайного решения
~15 сек на доске 50000x50000
боюсь что без отлова повторов потом ВСЕХ решений не найти
а с отловом будет жёсткий хардкор по времени, растущий экспоненциально
тут либо надо последовательно, либо сразу все решения на доске ))

Наоборот.
С отловом точно не найти.
А без отлова пока не известно.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517855
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovtip78пропущено...

боюсь что без отлова повторов потом ВСЕХ решений не найти
а с отловом будет жёсткий хардкор по времени, растущий экспоненциально
тут либо надо последовательно, либо сразу все решения на доске ))

Наоборот.
С отловом точно не найти.
А без отлова пока не известно.
это вы щас кота шрёдингера попытались протащить в тему? ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517915
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovmaytonAleksandr Sharahov, мне кажется что мы с вами говорим на разных языках.

Я вам нарисовал просто интерфейс итератора. А вы мне что-то говорите
про экспоненциальное время.

Где здесь какое-то время? Это чортов итератор!

который выводит экспоненциально большое количество решений за экспоненциально большое время
Ну... это ваш исходник. Какие претензии ко мне?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517953
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу... это ваш исходник. Какие претензии ко мне?

Никаких. Я к тому, что итератор не спасет человечество.

Ну, и еще слегка непонятно, что тут все решают )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517966
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я предлагал подумать над изменением асимптоматики существующего алгоритма.

Но в топик пришли философы и физики квантовых материй и котов Шредингера а также
любители порассуждать о мозге.

Это не мой топик. Мне нечего добавить к котам, и квантовым комьютерам которых пока
не существует.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517969
jbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
опять к колву решений. попытаюсь оценить степень полинома того алгоритма как O(n^C) (для поиска всех решений)
24: 24^10,4
25: 25^10.98
26: 26^11.554
27: 27^12.136
ограничена ли степень сверху? хз. там может быть полином an^10+bn^8+..
знаю ли я полиноминальный алгоритм степени 8,9,10? неа
была бы степень 5,6,7, предположил бы, что сложность алгоритма 3 + мы чтото квадратичное делаем на каждом шаге (проверяем пересечение диагоналей или еще что)..
но так склоняюсь, что там O(n!) с отсечениями и лучше нет. доказать, конечно, не смогу
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39517994
jbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
теперь поближе к миллиону:
стоят M ферзей. алгоритм должен сказать:
- ферзи стоят так неудачно, что перекрывают кислород любым другим размещениям. сделать это можно, например, функцией количества решений из текущей позиции (#P), которая скажет, что решений 0. эту функцию мы и должны реализовать без переборов.
- ИЛИ, имея такую функцию, которая скажет нам, что решений >0, можем найти полное размещение ферзей просто перебирая по 1 ферзю, где количество решений все еще >0 (увеличивая текущую сложность алгоритма подсчета O(хз) еще на n^2, т.е. найдя решение за O(хз*n^2)
а теперь вопрос на миллион: как подсчитать количесвто решений?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518003
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Количество решений для 8х8 не смог посчитать даже гаусс.

Мы можем попробовать экстраполировать. Исходя из той таблицы которая к примеру
Опубликована в wiki.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518004
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jbondтеперь поближе к миллиону:
стоят M ферзей. алгоритм должен сказать:
- ферзи стоят так неудачно, что перекрывают кислород любым другим размещениям. сделать это можно, например, функцией количества решений из текущей позиции (#P), которая скажет, что решений 0. эту функцию мы и должны реализовать без переборов.
- ИЛИ, имея такую функцию, которая скажет нам, что решений >0, можем найти полное размещение ферзей просто перебирая по 1 ферзю, где количество решений все еще >0 (увеличивая текущую сложность алгоритма подсчета O(хз) еще на n^2, т.е. найдя решение за O(хз*n^2)
а теперь вопрос на миллион: как подсчитать количесвто решений?

Никак не подсчитать.
Не умеют пока этого делать без полного перебора даже для чистой доски, не говоря уж о частично заполненной.
Ясно, что такая формулировка нужна им, в первую очередь, для привлечения внимания к проблеме.
Разумеется, я не отрицаю важность умения генерировать начальные положения ферзей с нужными свойствами )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518011
jbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr Sharahov,
авторя не отрицаю важность умения генерировать начальные положения ферзей с нужными свойствами
я такого не упоминал, они, вроде, тоже
НО
напишем алгоритм, который при наличии решений выдаст хоть одно. для выплаты 1млн, скорее всего, важна будет другая часть: если алгоритм не нашел решения, это значит его нет вообще или алгоритм "недоделанный"?
т.е. в алгоритме важнее, что он гарантирует отсутствие решений при данных условиях за приемлемое время, а не то, что он может найти какоето размещение
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518016
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jbondAleksandr Sharahov,
авторя не отрицаю важность умения генерировать начальные положения ферзей с нужными свойствами
я такого не упоминал, они, вроде, тоже
НО
напишем алгоритм, который при наличии решений выдаст хоть одно. для выплаты 1млн, скорее всего, важна будет другая часть: если алгоритм не нашел решения, это значит его нет вообще или алгоритм "недоделанный"?
т.е. в алгоритме важнее, что он гарантирует отсутствие решений при данных условиях за приемлемое время, а не то, что он может найти какоето размещение

Они не упоминали, но суть в этом.
Есть похожие и эквивалентные задачи, где надо знать количество степеней свободы.

В сторону отсутствия решения можно покопать, но миллиона за это все равно не дадут )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518037
jbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
очень даже как раз
думаю, найти одно решение при их наличии можно и за первый час простым перебором, не надо же перебирать все N! позиций, а только любое первое попавшееся и подходящее (и каждый выставленный ферзь уменьшает перебор гдето в Nраз)
т.е. если рассматривать тот же случай с 27, где все решения ищутся (1решение=1такт) за 2,5 года и их количество в среднем гдето 1 на 46млрд перестановок.. т.е. в среднем по больнице 1 решение можно найти за 15сек.. в несколько потоков (100?) может получится быстрее
а если алгоритм не найдет сналету решение, что он выведет? "решения так сразу не нашел. надо перебирать 50!. будете ждать 1457лет?" т.е. алгоритм возвращается к перебору O(N!), что и так имеем. И? за такое решение миллион?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518048
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jbondочень даже как раз
думаю, найти одно решение при их наличии можно и за первый час простым перебором, не надо же перебирать все N! позиций, а только любое первое попавшееся и подходящее (и каждый выставленный ферзь уменьшает перебор гдето в Nраз)
т.е. если рассматривать тот же случай с 27, где все решения ищутся (1решение=1такт) за 2,5 года и их количество в среднем гдето 1 на 46млрд перестановок.. т.е. в среднем по больнице 1 решение можно найти за 15сек.. в несколько потоков (100?) может получится быстрее
а если алгоритм не найдет сналету решение, что он выведет? "решения так сразу не нашел. надо перебирать 50!. будете ждать 1457лет?" т.е. алгоритм возвращается к перебору O(N!), что и так имеем. И? за такое решение миллион?
не за такое
они хотят чудо за свой лимон
бесконечность, которая вскроет разом все шифры на планете... за миллион

пуговиц им на спину надо и побольше
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518053
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jbond т.е. алгоритм возвращается к перебору O(N!), что и так имеем. И? за такое решение миллион?
с этим полностью согласен
я так понимаю, что если найти алгоритм который из одного удовлетворяющего состояния надёт отличное другое и будет являться ответом на млн

вот кстати такая мысль, а матрица одного из решений перемноженная на себя является решением?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518085
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
// ConsoleApplication1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

// Backtracking method. "Поиск с возвратом" на примере
// задачи о восьми ферзях.

#include <iostream>

const int SIZE = 4; // Размер.

// Функция showBoard() - отображает доску.
void showBoardD(int aboard[SIZE][SIZE])
{
	for (int a = 0; a < SIZE; ++a)
	{
		for (int b = 0; b < SIZE; ++b)
		{
			std::cout << ((aboard[a][b]) ? "Q " : ". ");
		}
		std::cout << '\n';
	}
}

void showBoardQ(int aboard[SIZE][SIZE])
{
	std::cout <<" Quadro:"<< '\n';
	int qb[SIZE][SIZE];
	for (int a = 0; a < SIZE; ++a)
	{
		for (int b = 0; b < SIZE; ++b)
		{
			int s = 0;
			for (int i = 0; i < SIZE; ++i)
			{
				s += aboard[a][i] * aboard[i][b];
			}
			qb[a][b] = s;

		}
	}
	showBoardD(qb);

}
void showBoard(int aboard[SIZE][SIZE])
{
	showBoardD(aboard);
	showBoardQ(aboard);
}

int board[SIZE][SIZE];
int results_count = 0; // Количество решений.

// Функция tryQueen() - проверяет нет ли уже установленных ферзей,
// по вертикали, диагоналям.
bool tryQueen(int a, int b)
{
	for (int i = 0; i < a; ++i)
	{
		if (board[i][b])
		{
			return false;
		}
	}

	for (int i = 1; i <= a && b - i >= 0; ++i)
	{
		if (board[a - i][b - i])
		{
			return false;
		}
	}

	for (int i = 1; i <= a && b + i < SIZE; i++)
	{
		if (board[a - i][b + i])
		{
			return false;
		}
	}

	return true;
}

// Функция setQueen() - пробует найти результаты решений.
void setQueen(int a) // a - номер очередной строки в которую нужно поставить очередного ферзя.
{
	if (a == SIZE)
	{
		showBoard(board);
		std::cout << "Result #" << ++results_count << "\n\n";
		return; // Опционально.
	}

	for (int i = 0; i < SIZE; ++i)
	{
		// Здесь проверяем, что если поставим в board[a][i] ферзя (единицу),
		// то он будет единственным в этой строке, столбце и диагоналях.
		if (tryQueen(a, i))
		{
			board[a][i] = 1;
			setQueen(a + 1);
			board[a][i] = 0;
		}
	}

	return; // Опционально.
}

int main()
{
	setQueen(0);

	return 0;
}




занятно получается
для 4-х
. Q . .
. . . Q
Q . . .
. . Q .
Quadro:
. . . Q
. . Q .
. Q . .
Q . . .
Result #1

. . Q .
Q . . .
. . . Q
. Q . .
Quadro:
. . . Q
. . Q .
. Q . .
Q . . .
Result #2

для 6-ти:

. Q . . . .
. . . Q . .
. . . . . Q
Q . . . . .
. . Q . . .
. . . . Q .
Quadro:
. . . Q . .
Q . . . . .
. . . . Q .
. Q . . . .
. . . . . Q
. . Q . . .
Result #1

. . Q . . .
. . . . . Q
. Q . . . .
. . . . Q .
Q . . . . .
. . . Q . .
Quadro:
. Q . . . .
. . . Q . .
. . . . . Q
Q . . . . .
. . Q . . .
. . . . Q .
Result #2

. . . Q . .
Q . . . . .
. . . . Q .
. Q . . . .
. . . . . Q
. . Q . . .
Quadro:
. Q . . . .
. . . Q . .
. . . . . Q
Q . . . . .
. . Q . . .
. . . . Q .
Result #3

. . . . Q .
. . Q . . .
Q . . . . .
. . . . . Q
. . . Q . .
. Q . . . .
Quadro:
. . . Q . .
Q . . . . .
. . . . Q .
. Q . . . .
. . . . . Q
. . Q . . .
Result #4

...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518157
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем каждый раз проверять все линии, вместо того чтобы сразу заполнить доску NULL, а во время установки ферзя отметить 6 линий, как .
потом при установке нового просто чекать конкретный ij
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518242
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78зачем каждый раз проверять все линии, вместо того чтобы сразу заполнить доску NULL, а во время установки ферзя отметить 6 линий, как .
потом при установке нового просто чекать конкретный ijисходник с вики, я просто проверял гипотезу

теперь у меня такая гипотеза: существует расстановка A, такая, что все правильные расстановки входят во множество {A^k}

так как проверить решение можно за O(N), то в принципе если это утверждение верно и можно найти такую матрицу с полиномиальной сложностью, то задача будет решена
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518264
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, зеркалирование доски рассматривали? оно теоретически ускоряет в 4 раза скорость перебора
т.е. каждая доска это 4 разных доски, где паттерн зеркалится во все стороны
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518275
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78кстати, зеркалирование доски рассматривали? оно теоретически ускоряет в 4 раза скорость перебора
т.е. каждая доска это 4 разных доски, где паттерн зеркалится во все стороны

нечистые доски не зеркалятся
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518280
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovtip78кстати, зеркалирование доски рассматривали? оно теоретически ускоряет в 4 раза скорость перебора
т.е. каждая доска это 4 разных доски, где паттерн зеркалится во все стороны

нечистые доски не зеркалятся
чавойта?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518302
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

если на доски уже стоят несколько ферзей,
зеркало не поможет, сколько перед ним ни ходи.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518331
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovtip78,

если на доски уже стоят несколько ферзей,
зеркало не поможет, сколько перед ним ни ходи.
кстати, вместе с зеркалированием ещё и вращание доски можно устроить... 4 раза
я не понял, почему не поможет, ну стоит там хоть 7 ферзей, разверните доску на 180 по горизонтали и перенесите на новую доску
и по вертикали/диагоналям тоже
потом каждый ход на исходной доске зеркалируется также на остальные 3
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518334
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по сути надо просто положения ферзей исходные запоминать, от которых идут все остальные ходы
и НЕ делать их же в других зеркальных вариациях
но это всё не избавляет нас от перебора...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518339
jbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tip78,
у тебя УЖЕ стоят 2 ферзя. они БУДУТ в решении. те перестановки, которые ты будешь генерировать уже должны включать этих ферзей. смысла вращать и зеркалить нет, потому что сдвинешь заданных ферзей
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518448
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько мыслей.

1) Итеративный рекурсивный поиск (ИРП). (та ботва что опубликована в Вики) Работает долго.
Очень долго. Очень-очень. Зато перебирает все варианты. Варианты уникальны.
Никакой доп-проверки не нужно. Рекурсия гарантирует. O(a^x). Экспонента
предположительно.

Плюсы. Гарантировано выдаст все решения.
Минусы. Выдает медленно. Не дождемся в обозримом будущем.

2) Случайный выбор (СВ). Полиномиален по отношению к одной комбинации. Генерирует
неуникальную расстановку. Требуется доп-проверка уникальности. А здесь подвох.
Британские ботаны обещали стартовую расстановку для 1000х1000. Условий больше
нет. Это значит что имеют право поставить 1 ферзя и это будет тоже стартовые условия.
Далее. Алгоритм генерит случайные расстановки. Их надо ГДЕ-ТО хранить. Учитывая
факториальные оценки. Вангую что не хватит никаких баз. Сколько надо места? Петабайт?
Эксабайт? Столько места нет у гугла и амазона. Это первое.

Второе. Даже если мы найдем столько места. Купим хостинг у инопланетян на альфа-центавре.
У них - молекулярные 3д SSD диски.
Тогда нас ждет еще один сюрприз. Тот-же что и постиг копателей биткоинов. Будет замедление
нахождения новых решений. Мы будем делать промахи и попадать в существующие решения.
И наконец когда будет найдено 99.999% последнее решение мы не найдем никогда. В обозримом
будущем. O(x^n). Полином. На старте полином. На финише - тормоз.

Итак.

Плюсы. Со старта начинает выдавать какие-то решения.
Минусы. Хаотичный порядок. Нет системы. Скорость выдачи решения со временем падает.
Требуется платить за хостинг гуманоидам с Центавры. А хостинг у них дорогой.

В обоих случаях у нас нет progress-bar. Тоесть точно не знаем сколько уже накопали а сколько еще впереди.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518456
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78кстати, зеркалирование доски рассматривали? оно теоретически ускоряет в 4 раза скорость перебора
т.е. каждая доска это 4 разных доски, где паттерн зеркалится во все стороны
Да. Давайте 1 раз прокашляем этот вопрос в топике. Чтоб больше к нему не возвращаться.

Для для доски 8х8 существуют только 12 уникальных расстановок. 92 получаются путем
- поворота уникальной доски на 90 градусов.
- отражения горизонтально или вертикально или от диагонали.

В данной задаче нас будет интересовать вопрос. Если мы нашли очередное решение
то нужно ли срочно выдать еще несколько производных от него?

Зависит от алгоритма. Для рекурсивного - скорее всего не нужно он и так их всех переберет.

Для начальной расстановки - надо проверить что повороты и отражения не нарушают этой расстановки.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518468
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

зачем вообще возиться с зеркалированием?

Ведь в нашем случае:
1. при поиске всех перестановок зеркалирование не дает выигрыша по времени,
2. никто не спрашивает, сколько уникальных решений было найдено.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518556
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, мы так запутаемся. В топике есть минимум два алгоритма.

О каком алгоритме вы сейчас говорите?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518578
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAleksandr Sharahov, мы так запутаемся. В топике есть минимум два алгоритма.

О каком алгоритме вы сейчас говорите?

Мы решаем задачу завершения расстановки ферзей.

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

Даже если окажется, что у полученного решения есть зеркальное, которое тоже нам подходит, совершенно бессмысленно его выдавать, потому что потом еще придется отсеивать его среди найденных. И генерация зеркального решения, и отсев только увеличат общие временные затраты.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518605
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovmaytonAleksandr Sharahov, мы так запутаемся. В топике есть минимум два алгоритма.

О каком алгоритме вы сейчас говорите?

Мы решаем задачу завершения расстановки ферзей.

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

Даже если окажется, что у полученного решения есть зеркальное, которое тоже нам подходит, совершенно бессмысленно его выдавать, потому что потом еще придется отсеивать его среди найденных. И генерация зеркального решения, и отсев только увеличат общие временные затраты.
да нет же, если сразу самого первого ферзя из этого патnерна зафиксировать и далее этот паттерн не рассматривать, так как ВСЕ ферзи из него уже рассмотрены
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518609
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78да нет же, если сразу самого первого ферзя из этого патnерна зафиксировать и далее этот паттерн не рассматривать, так как ВСЕ ферзи из него уже рассмотрены

И...?
Продолжай, расскажи, как мы будем использовать зеркалирование и чем нам это поможет.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518612
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovВ общем случае начальная позиция не переходит в себя при поворотах и отражениях.
Давай раскроем суть этой твоей фразы.

Я утверждаю что генерация производных позиций может оказаться полезной для перечисления
всех решений. Или она их ускорит.

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

значит, вас двое )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518641
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но не для рекурсии.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518660
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovtip78да нет же, если сразу самого первого ферзя из этого патnерна зафиксировать и далее этот паттерн не рассматривать, так как ВСЕ ферзи из него уже рассмотрены

И...?
Продолжай, расскажи, как мы будем использовать зеркалирование и чем нам это поможет.
если фигуры заранее фиксировать, то никак не поможет
а так сократит в несколько раз объём перебора, потому что не надо будет делать тоже самое, но с другой стороны (сторон)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518664
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Aleksandr Sharahovпропущено...


И...?
Продолжай, расскажи, как мы будем использовать зеркалирование и чем нам это поможет.
если фигуры заранее фиксировать, то никак не поможет
а так сократит в несколько раз объём перебора, потому что не надо будет делать тоже самое, но с другой стороны (сторон)

Хорошо, но мало )
Продолжай, расскажи, как мы будем использовать зеркалирование и чем нам это поможет с другой стороны.
Как именно это будет выглядеть в твоем алгоритме?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518684
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovtip78пропущено...

если фигуры заранее фиксировать, то никак не поможет
а так сократит в несколько раз объём перебора, потому что не надо будет делать тоже самое, но с другой стороны (сторон)

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

на доске 64 варианта первого ферзя
каждый одинокий ферзь на доске это некое дерево остальных ферзей до упора, где ВСЕ варианты заполнения опробованы
т.е. всё что надо это разбить доску на 4 квадрата и заполнить стартовыми ходами только 1 из них
поворачивание тут, кстати, уже и не нужно
просто есть квадраты по 16 клеток, как бы не начал на любом из них, на остальных будет зеркально тоже самое дерево и результаты
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518689
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78просто есть квадраты по 16 клеток, как бы не начал на любом из них, на остальных будет зеркально тоже самое дерево и результаты

Понятно, что зеркальные варианты расположения ферзей существуют,
непонятно только, каким образом этот факт нам поможет в поиске всех решений.

Хотелось бы, наконец, узнать конкретно, какой участок алгоритма упростится,
почему и насколько сократится общее время расчета всех решений,
как будет организован отсев неуникальных решений.
Только после этого можно будет говорить, что зеркалирование - наше все.

Основная проблема здесь в том, что для отсева решения надо знать,
уникальное ли оно, а для этого его придется сначала получить.
Т.е. придется получить *ВСЕ* решения.
А если решение уже получено, то его проще показать,
чем возиться с отсевом и ведением списка уникальных решений,
которые еще надо отзеркалить во все стороны.
Зеркалирование ровным счетом ничего не дает, кроме лишней работы.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518692
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. непонятно, что надо будет начинать только в 1м квадрате 16x16, а не в 4х?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518694
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78т.е. непонятно, что надо будет начинать только в 1м квадрате 16x16, а не в 4х?

непонятно, что это дает.

Лучшим доказательством того, что идея зеркалирования работает,
будет реализация этого замечательного алгоритма, а не слова.

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

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

Алгоритм:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
procedure BackTrackingSymmetric;
var
  Queen, Col, Row: integer;
begin;
  for Queen:=0 to QueenCount-2 do QueenColRow[Queen].QueenRow:=Queen+1;   //symmetric
  QueenColRow[QueenCount-1].QueenRow:=0;                                  //symmetric

  Queen:=QueenCount-1;
  with QueenColRow[Queen] do begin;
    Col:=BoardSize-1;
    Row:=QueenRow;
    end;
  while true do begin;
    while Col>=0 do begin;
      if CountCol[Col] or CountDiagP[Col+Row] or CountDiagM[Col-Row]=0 then begin;
        CountCol[Col]:=1;
        CountDiagP[Col+Row]:=1;
        CountDiagM[Col-Row]:=1;
        QueenColRow[Queen].QueenCol:=Col;
        if Queen>0 then begin;
          dec(Queen);
          if Row=0 then begin;
            Row:=BoardSize-1-Col; if Col>Row then Col:=Row else dec(Col); //symmetric
            end
          else Col:=BoardSize-1;
          Row:=QueenColRow[Queen].QueenRow;
          continue;
          end;
        CountSymmetricSolution;                                           //symmetric
        //exit; //comment this statement to calculate all solutions
        CountCol[Col]:=0;
        CountDiagP[Col+Row]:=0;
        CountDiagM[Col-Row]:=0;
        end;
      dec(Col);
      end;
    inc(Queen);
    if Queen>=QueenCount then break;
    with QueenColRow[Queen] do begin;
      Col:=QueenCol;
      Row:=QueenRow;
      end;
    CountCol[Col]:=0;
    CountDiagP[Col+Row]:=0;
    CountDiagM[Col-Row]:=0;
    dec(Col);
    end;
  end;



Вывод с учетом симметрии:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure CountSymmetricSolution;
var
  i, SymCount: integer;
begin;
  if SolutionCount=0 then ShowFirstSolution;
  if BoardSize>1
  then if QueenColRow[BoardSize-1].QueenCol
        + QueenColRow[BoardSize-2].QueenCol
        <>BoardSize-1
       then SymCount:=4
       else SymCount:=2
  else SymCount:=1;
  inc(SolutionCount, SymCount);
  for i:=0 to BoardSize-2 do //excluding big digonals
    if (CountDiagP[i]=CountDiagP[i+BoardSize])
    or (CountDiagM[i+1]=CountDiagM[i+1-BoardSize]) then exit;
  if ModularCount=0 then ShowFirstSolution;
  inc(ModularCount, SymCount);
  end;



Итого получилось быстрее несимметричного варианта почти в 2 раза.

Внутренние структуры алгоритма уже раньше были изменены под градиентный спуск и в данном случае это позволило добиться ускорения. Хитрость состоит в порядке перебора, чтобы обеспечить получение алгоритмом только уникальных решений:
1. Порядок перебора для строк: 0, N-1, ... 1.
2. Порядок перебора для столбцов строки N-1: Min(Col-1,BoardSize-1-Col), ... 0, где Col - текущий столбец строки 0.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518736
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovtip78т.е. непонятно, что надо будет начинать только в 1м квадрате 16x16, а не в 4х?

непонятно, что это дает.

Лучшим доказательством того, что идея зеркалирования работает,
будет реализация этого замечательного алгоритма, а не слова.

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

Реализуйте, например, поиск с возвратом двумя способами )
чё-то мне влом
да и денег у вас не хватит моё время оплачивать.
в чём тут сложность понимания то?
весь алгоритм в том, что первый ферзь ставится только в 16 клеток, а не в 64
как 64 может быть быстрее 16 для меня загадка. алгоритм в помойку.

первый ферзь ставится в любую точку на доске
после этого пошёл поиск места для следующего
у каждого ферзя есть своё дерево ходов до полного исчезновения свободных клеток (ходов будут миллионы-миллиарды, но они конечны и ограничены)
8й ферзь отработает все свободные клетки
после чего 7й ферзь сдвинется на следующую свободную клетку и снова 8й ферзь будет пробивать все свободные
когда у 7го закончатся клетки, сдвинется 6й итд
и вот ровно такие же действия (зеркально) для каждого ферзя, но на другой стороне поля, будут происходить, если поставить первого ферзя в другой противоположный квадрат.
это же перебор. ВСЕ свободные клетки на доске будут задействованы для каждого ферзя.
В одном квадрате 1й ферзь встаёт на 3:4, 2й на 1:1, в противоположном они же займут 6:5 и 8:8, после чего ровно также 2й пойдёт пробивать все клетки, получая ровно те же (зеркальные) результаты
я хз, как ещё понятнее объяснить, вроде элементарно.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518742
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78чё-то мне влом
да и денег у вас не хватит моё время оплачивать.

С чего вы взяли, что тут вас кто-то наймет? Для поиска работы есть другой форум.

tip78в чём тут сложность понимания то?
весь алгоритм в том, что первый ферзь ставится только в 16 клеток, а не в 64
как 64 может быть быстрее 16 для меня загадка. алгоритм в помойку.

Да запросто: алгоритм-64 есть и у него есть время работы,
а алгоритм-16 пока только у вас в голове и его время работы там же.

tip78первый ферзь ставится в любую точку на доске
после этого пошёл поиск места для следующего
у каждого ферзя есть своё дерево ходов до полного исчезновения свободных клеток (ходов будут миллионы-миллиарды, но они конечны и ограничены)
8й ферзь отработает все свободные клетки
после чего 7й ферзь сдвинется на следующую свободную клетку и снова 8й ферзь будет пробивать все свободные
когда у 7го закончатся клетки, сдвинется 6й итд
и вот ровно такие же действия (зеркально) для каждого ферзя, но на другой стороне поля, будут происходить, если поставить первого ферзя в другой противоположный квадрат.
это же перебор. ВСЕ свободные клетки на доске будут задействованы для каждого ферзя.
В одном квадрате 1й ферзь встаёт на 3:4, 2й на 1:1, в противоположном они же займут 6:5 и 8:8, после чего ровно также 2й пойдёт пробивать все клетки, получая ровно те же (зеркальные) результаты
я хз, как ещё понятнее объяснить, вроде элементарно.

Да всем это понятно. Не это надо объяснять.

Объясните, как ваш алгоритм будет использовать факт симметрии решений для ускорения работы.

А то что вы рассказываете уже в который раз - не алгоритм.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518744
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пора рисовать mind-map. В топике уже собрана куча фактов. Сложно в этом
всем разбираться. Участники путаются в показаниях. Переспрашивают то
что уже обсуждалось. Спорят заново. И нечитали основ по шахматам и
алгоримам.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39518762
Мудроглюков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovmaytonЯ думаю что яйцеголовые ботаны не такие наивные. И лям бачей так просто никому не отдадут.
Задача генерации всех решений из начальных условий - не тривиальная. И здесь "с наскока"
или "карандашом на салфетке" никто ее не сделает.

Тут нужны усилия. Причем я думаю что даже негативный результат тоже будет воспринят
положительно. Тоесть даже если не будет найдено полиномиальное решение - и будет
доказано что его нет - то это тоже серъезное продвижение в науке.

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

Правда был, вроде, чувак, который говорил что-то вроде
"дайте мне всю вашу память, и я решу". Если ничего не путаю )

Давно уже замечено для большинства комбинаторных задач: возможно уменьшить
время вычислений за счет увеличения объема используемой памяти, и наоборот.
Поэтому уже оценки полиномиальности не "времени" (что вообще нелепо практически в
связи с быстродействием очень разным у разных вычмощностей), а входных
данных (объема обрабатываемых данных, размернрсти задачи = здесь 8 ферзей и 1000
ферзей).

Параллелизм реализации тоже уже существеннен - тоже более связывается с объемом задачи,
а не с каким-то "временем" вычислений.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39519228
Мудроглюков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Институт Клея платит 1 млн баксов за, имхо (так как это мнение о том, как представляю)),
эффективный алгоритм решения задачи, то есть такой когда ресурсозатраты на
осуществление вычисления программой, реализующей этот алгоритм, не растут
экспоненциально (как степень числа больше 2, ...) от "размера" ("объема", "количества необходимых", ...) входных
данных = в задаче "о ферзях" это количество клеток доски (NxN) или количество ферзей (N), где для доски NxN N ферзей.

Если такой алгоритм будет найден, что ресурсы R(время, память, количество параллельных процессоров, скорость каналов связи, ...) есть N^k, а не k^N, где k>1, а N - количество ферзей или количество клеток в ряду доски, то значит по
концепции NP-трудности NP=P. И Институт Клея после надлежащего оформления результата в виде пары публикаций
в признанных Миром изданиях готов выдать премию $1млн.

______________________
Также нахождение количества решений вообще представляет собой задачу, так как нет формулы подсчета количества решений - и количества решений вычисляются через, в значительной степени, генерации самих решений. Это как
"число конкретно" NP=P получается, если не будет чего-то, что будет формулой (или программой вычисления количества
решений).


Так вроде.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39519454
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мудроглюков,

гражданам РФ не заплатит, у них закон есть запрещающий это, меценаты только если скинутся

вот такие дела ...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39519489
jbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan),
а Перельману они давали деньги, потому что знали, что он откажется от денег?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39519519
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-же говорил. Шахматы - это просто популяризация самой идеи поиска P -> NP.
Форма подачи материала.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39519611
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jbondkealon(Ruslan),
а Перельману они давали деньги, потому что знали, что он откажется от денег?

пардон, перепутал с другим случаем
можно решать дальше :-)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39519751
Мудроглюков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ-же говорил. Шахматы - это просто популяризация самой идеи поиска P -> NP.
Форма подачи материала.
Не совсем так, а точнее, совсем не так.
Доказано (то есть принципиально), что если хотя бы для одной NP-полной задачи будет
создан-найден-изобретен алгоритм, вычислительная (ресурсозатратная) трудность (NP-трудность) которого будет расти
в зависимости от размеров входных данных N как полиномиально, то есть пропорционально ,
а не как обычно при неэффективных алгоритмах, экспоненциально, то есть как ,
то, значит, такие же (по этому свойству) алгоритмы существуют для любой другой NP-полной задачи.

PS Всего, как бы, официально NP-полнота строго обоснована для вроде 4-5 тысяч разных (по постановке и
рассматриваемым объектам) задач.

Для задачи "О размещении ферзей" NP-полнота строго обоснована в признанных публикациях.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520454
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
насчёт гипотезы о том, что {A^k} покроет все позиции для N.
Всё бы было хорошо, когда б для N знать А, и чтоб К=const ил очень медленно растёт.

Если брать только А из числа тех самых 27! и эл-ты 0/1, то это вроде бы конечная циклическая группа. И тогда правильные -- в ней незамкнутое подмн-во.
Каждая А - некоторая перестановка ортонорированных веторов. Мы не сможем получить А * А ни вырожденное, ни чтобы в строке было 2 эл-та. Вроде так ...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520468
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
главное только забыл. Мне не пока не верится, что все 27! матриц можно покрыть одной цикл-й группой. То есть, что единственная, а не 27! = {A1^k1} U {A2^k2} U ...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520482
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
если я верно вспомнил, то 27! (вообще-то N!), будучи группой 27-перестановок имеет спец. имя S 27 , и она не коммутативна.
Значит не может быть циклической.
Значит имеет неск. образующих.
Наверное их все можно найти теоретически, вот только как распадаются по этим классам правильные перестановки?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520569
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98kealon(Ruslan),
если я верно вспомнил, то 27! (вообще-то N!), будучи группой 27-перестановок имеет спец. имя S 27 , и она не коммутативна.
Значит не может быть циклической.
Значит имеет неск. образующих.
Наверное их все можно найти теоретически, вот только как распадаются по этим классам правильные перестановки?
выходит расширяем предположение: таких "базовых" матриц больше 1-й и следовательно решения входят в комбинации их перемножений

с оценкой количества вариантов вроде как проблем нет, для любой такой A существует k, такой что A = A^k - т.е. она при перемножении приходит к самой себе

для начала бы проверить как растёт количество таких базовых матриц в зависимости от N

PS: что-то это очень дико напоминает задачу факторизации
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520573
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И даже, после освежения памяти,
27! = не объединение, а прямоме произведение подгрупп: {A1^k1} @ {A2^k2} @ ...
Иначе тогда а и в из разных ручейков не перемножить ...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520578
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan), ну да, похоже, если только степени п/групп должны быть простыми в этом разложении.
Только я не помню, уточнить надо. Помню, это была заключительная у нас теорема в курсе В.алгебры.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520582
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)для начала бы проверить как растёт количество таких базовых матриц в зависимости от N Боюсь, что КОРЕНЬ( О(N!)). Т.к. это разложение всех перестановок. Надо рыться в теории групп, я не с той кафедры ... ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520611
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98kealon(Ruslan), ну да, похоже, если только степени п/групп должны быть простыми в этом разложении.
Только я не помню, уточнить надо. Помню, это была заключительная у нас теорема в курсе В.алгебры.
ну я вообще физик
в целом для записи расстановки на доске достаточно массива A[N] (N! вариантов)
возьмём например, что каждый элемент содержит позицию x, а его позиция в массиве это y, тогда

перемножение двух матриц A, B будет вестись по формуле R[i] := B[A[i]]

перемножение двух матриц всегда будет давать матрицу, удовлетворяющую условию по вертикалям и горизонталям, если исходные матрицы удовлетворяли этим условиям
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520647
Мудроглюков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98kealon(Ruslan),
насчёт гипотезы о том, что {A^k} покроет все позиции для N.
Всё бы было хорошо, когда б для N знать А, и чтоб К=const ил очень медленно растёт.

Если брать только А из числа тех самых 27! и эл-ты 0/1, то это вроде бы конечная циклическая группа. И тогда правильные -- в ней незамкнутое подмн-во.
Каждая А - некоторая перестановка ортонорированных веторов. Мы не сможем получить А * А ни вырожденное, ни чтобы в строке было 2 эл-та. Вроде так ...

ну даже в тупом (в смысле бесхитростной идеи) методе ветвей и границ ЕСТЬ ОТСЕЧЕНИЯ бесперспективных ветвей и чем больше размерность тем больше "бесперспективностей"

и всё дуально - с одной стороны алгоритм, а с другой наша вычислительная система
PS В каком-то смысле может быть вся наша жизнь 8 млрд людей - это может быть решение какой-то задачи = вот и
все ВОЗМОЖНЫЕ беды человечество проходит в бэктрекинге , НО разные страны - разные беды (типа уже проанализоровано)

Вот и орды мошенников в России во всем -где кидалово, казалось бы "какого черта к несчастным приставать", и пенсионеров и инвалидов, и в ритуальном бизнесе, и в бизнесе салонов красоты (казалось бы - в чем там может быть), в недвижимости, в ... - вообще везде = куда ни ткни везде есть "схемы кидалово".

8^)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520685
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчёт отсечений нифига не понял ...

устала я (( щас глупость скажу.
Матрица А.
Строки (либо столбы) -- базисные вектора 27-мерного пр-ва.
Здесь Е= 1 - это запись матрицы в исходной системе координат.
Перестановка осей определляется из А=Е умножением на В, к-рая является м-цей преобразования координат.
Любое из этих преобразований сводится к комбинации парных перестановок осей местами, т.е. к комбинации некоторых элементарных вращений.

Берём аналогию с теоремой для группы перестановок Sn. Каждая перестановка раскладывается в произведение транспозиций, где трансп-ция -- перестановка местами 2-х эл-тов.

Забыл, что хотел сказать ... ээ-э-э ..., вот:
Предполагаю, что для наших баранов А в качестве элементарных образующих матриц В можно взять такие, чтобы В*А переставляло у Е ровно 2 строки (столба) -- аналог перестановки 2-х осей координат.
Тогда кол-во образующих = 27 ???
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520698
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Е ровно 2 строки (столба) -- аналог перестановки 2-х осей координат.
Тогда кол-во образующих = 27 ???
N-1 достаточно, с помощью них можно реализовать любую другую
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520816
Мудроглюков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
exp98

Так вы чё, для 27 ферзей количество решений пытаетесь посчитать через группы
перестановок?
PS Последовательность количество_решений(N_ферзей) официально подсчитана
только до 27 ферзей. И пробуете сосчитать для 28, пытаясь по ходу вывести рекурентную
формулу?

В прямой модели задачи вроде ж нет никаких групп перестановок, так как
ферзи по диагоналям еще ж жеж же атакуют, то вы будто не учитываете что ли. Или что?

_______
Вот если как-то преобразовать постановку задачи, чтобы сократить какие-то
проверки каких-то условий при переборе? Или ....? Или ....? ....?
То есть в чём состязаются решатели NP-полных задач, достигая каких-то частичных успехов,
но пока очень недостаточных для полного успеха.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520863
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мудроглюковkealon(Ruslan),
exp98

Так вы чё, для 27 ферзей количество решений пытаетесь посчитать через группы
перестановок?
PS Последовательность количество_решений(N_ферзей) официально подсчитана
только до 27 ферзей. И пробуете сосчитать для 28, пытаясь по ходу вывести рекурентную
формулу?
это бы было идеально, но пока за малым дело - хотя бы оптимизировать итератор по N! вариантов

МудроглюковВ прямой модели задачи вроде ж нет никаких групп перестановок, так как
ферзи по диагоналям еще ж жеж же атакуют, то вы будто не учитываете что ли. Или что?

_______
Вот если как-то преобразовать постановку задачи, чтобы сократить какие-то
проверки каких-то условий при переборе? Или ....? Или ....? ....?
То есть в чём состязаются решатели NP-полных задач, достигая каких-то частичных успехов,
но пока очень недостаточных для полного успеха.
exp98 пытается проверить моё предположение "снизу" и подогнать под него какую то базу
фактически сейчас твёрдо известно, что обладая максимум (N-1) матрицами перевода можно из единичной матрицы получить все решения

работая с перестановками единичной матрицы мы всегда соблюдаем условие по вертикалям и горизонталям

на каждом преобразовании мы будем точно знать сколько совпадающих элементов на левых и правых диагоналях, стоимость этого знания - O(количество изменившихся строк)

алгоритм перестановок охватывающий все N! переборов, циклический - ????, было бы неплохо его найти

произведение матриц ассоциативно ( (A * B) * C = A * (B * C) ), значит зная количество совпадений по диагоналям можно сразу пропускать определённое количество переборов
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520919
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ахтунг !!! Дисклаймер!!! К несчастью, сказанное выше про разложения неверно!

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

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

С другой стороны, всё же наши матрицы изоморфны группе подстановок Sn и на транспозиции их разлагать можно.
Уверенно можно сказать, что есть чётные и ннечётные перестановки, или два класса матриц.
И что правильные матрицы в общем случае не лежат в одной цикл. подгруппе.
Например такая В

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 [code=plsql]
	1						
			1				
					1		
							1
		1					
1							
						1	
				1			

и В*В - неправильная.

Аналогия с перестанвкой осей координат, я считаю, проходит, только их сильно больше N.
Ухожу заливать горе кофеём.

З.Ы.
Введение в теор. групп можно получить (ссылку не сохранил, pdf-файл)
практически один в один как было у нас в лекциях.

Федоровский
АЛГЕБРА
Введение в теорию групп
МГТУ Баумана

P/S. Да, пытаемся с нуля сокртить перебор, в меру сил.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39520925
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мудроглюков,
-- по диагоналям еще ж жеж же атакуют, то вы будто не учитываете что ли. Или что?

Или что. Мух от котлет.
Групповые свойства - с точностью до изоморфизма эл-тов.
Диагонали - внутреннее св-во структуры элем-в.
Графические паттерны - сбоку от всего этого.
Блуждание по поверхности числа коллизий тоже сбоку.
и т.д.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39521259
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПора рисовать mind-map Твой газон - тебе косить.
А без шуток -- там как везде. Выше я делал набросок, а вот ещё попытка систематизировать на своё разумение, и по ссылкам не лазил.
1) Некоторые хотят ускорять за счёт самих программ.

2) Другие налегают на уровни сокращения перебора за счёт:
2.1 Представление матриц
2.1.1. представление эемента из структуры 2.1.
2.1.1.1. представление эемента из структуры 2.1.1.
........
На каждом уровне можно фильтровать перебор, особенно когда св-во сквозное на всём уровне.
С каждым уровнем связаны свои типы доступной инфы и надежды, к-рые питают исслед-лей.

В п.2.1. упомянуты виды : матрицы - правильные и все, перестановки, оси координат, строки длины N.
В 2.1.1. диагонали.
Глубже, вроде не залезали.

На каждом уровне можно использовать:
3) За счёт навигации, ориентированной на локальный/глобальный перебор.
4) За счёт гипотез о хэшах (распознавание по паттернам, другое не упоминалось).
5) Непосредственное конструирование -- блочно-гнездовая штамповка (при чём тут фракталы, я не понял).
6) Хорошенькую теорию.

В 2.1. можно попробовать и такую фантазию, если ещё не было.
Берём N пар (i,j) - где в матрице стоит фишка.
Тогда например i - амплитуда, j - номер гармоники из фиксированного набора.
Затем долго-долго смотреть на полученные функции.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39521371
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня не покидает идея о том чтобы завернуть доску в тор.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39521406
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... а вот количество расстановок для N=[1..27]

https://oeis.org/A000170
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39521408
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonХм... а вот количество расстановок для N=[1..27]

https://oeis.org/A000170 кошмар, даже цифр таких не знаю 234'907'967'154'122'528
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39521410
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Пара фактов по ссылке:
- кол-во решений пропорционально n!, т.е. найти все решения - задача неподъемная. Возможно, нужно найти количество решений?
- исходники программы расчета Q27 на FPGA: https://github.com/preusser/q27
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39521411
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
234 квадриллиона вроде.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39521413
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfmayton,

Пара фактов по ссылке:
- кол-во решений пропорционально n!, т.е. найти все решения - задача неподъемная. Возможно, нужно найти количество решений?

В топике решали другую задачу. Притянуть за уши NP алгоритм к более лёгкой форме.

исходники программы расчета Q27 на FPGA: https://github.com/preusser/q27
Что нам это даёт? У нас возможне не хватит кремния и металла на планете чтобы
построить вычислительный кластер для этой задачи.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39521531
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ топике решали другую задачу. Притянуть за уши NP алгоритм к более лёгкой форме.


Вряд ли получится.

Но можно попробовать немного ускорить известные алгоритмы:
1. подсчета количества решений (с неполным учетом симметрий),
2. подсчета всех завершений расстановки на полях малого размера или почти завершенных,
3. нахождения одного завершения на большом поле.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39521828
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonscfmayton,

Пара фактов по ссылке:
- кол-во решений пропорционально n!, т.е. найти все решения - задача неподъемная. Возможно, нужно найти количество решений?

В топике решали другую задачу. Притянуть за уши NP алгоритм к более лёгкой форме.

исходники программы расчета Q27 на FPGA: https://github.com/preusser/q27
Что нам это даёт? У нас возможне не хватит кремния и металла на планете чтобы
построить вычислительный кластер для этой задачи.
да ща всё будет
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39521937
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78, к нему очередь будет, в к-рой расстановка фишек будет стоять в хвосте.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522042
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы ещё раз внимательно посмотрите на число решений для вектора из 27 ферзей.
В уме экстраполируте на вектор из 1000. Даже не виде числа. Просто прикиньте порядок.

А потом высказывайте восхищение или неодобрение китайским дата центром.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522235
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, туго с сарказмом у вас, бросайте вы эти задачки ))
эта задачка требует чудес
даже если квантовый комп помножит её на 10, она всё-равно упрётся, потому что другого алгоритма не будет.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522270
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно. Вижу тут резиденты камеди клаба собрались. Ну ОК.

По инерции продолжаю мемфорсить индексирование и тор.

Открытые вопросы.
- перейти от декартовой системы координат к тору. Посмотреть профиты.
- балансировка доски. Плостность размещения фигур. Координаты - код Грея.
Поискать минимизированную функцию расстановки.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522288
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так есть смысл заморачиваться нахождением нескольких уникальных решений для доски 1000*1000 ?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522296
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276,

известен алгоритм поиска случайного решения.

С вероятностью почти 1 его первая сотня решений для большой доски - уникальные.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522298
Ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr Sharahovex1276,

известен алгоритм поиска случайного решения.

С вероятностью почти 1 его первая сотня решений для большой доски - уникальные.

Можно ли где-то ознакомиться с этим алгоритмом или его принципами?
Способен ли он достраивать позиции с несколькими выставленными ферзями?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522310
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex1276Aleksandr Sharahovex1276,

известен алгоритм поиска случайного решения.

С вероятностью почти 1 его первая сотня решений для большой доски - уникальные.

Можно ли где-то ознакомиться с этим алгоритмом или его принципами?
Способен ли он достраивать позиции с несколькими выставленными ферзями?

Я уже давал тут эту ссылку http://www.fizyka.umk.pl/~milosz/AlgIILab/10.1.1.57.4685.pdf
В википедии тоже есть ссылка статью этих авторов.

В принципе работает. Как будет время причешу и выложу.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522319
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В гитхабе нашел одну из реализаций. С рандомными начальными установками. И с последовательной
минимизацией конфликтов.

Для 40х40 находит 1 рандомное решение за 25 секунд. Не могу подтвердить что это реализация
предложенная университетом Юта. Но очень похоже.
Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522320
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ гитхабе нашел одну из реализаций. С рандомными начальными установками. И с последовательной
минимизацией конфликтов.
Для 40х40 находит 1 рандомное решение за 25 секунд. Не могу подтвердить что это реализация
предложенная университетом Юта. Но очень похоже.


У меня менее 40 сек на одно решение на поле 10^5x10^5.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522321
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай причёсывай... Чесун.. :) Ждем.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522357
Михаил Фото
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Занятно
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522362
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как завершить расстановку ферзей (N queens completion problem)


Выложил здесь http://guildalfa.ru/alsha/node/35
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522371
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, какая польза от одних сорцов?
Выложи бинарь. Не все-ж имеют твой компиллер.

Заодно люди протестят твой результат. Вдруг ты обманул
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522376
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, придется поверить на слово )

У моего бинаря форма как приборная панель самолета - там дофига места занимает экспериментальная часть для всех задач с ферзями, причем что-то писалось еще при царе горохе.

Ломать не хочу, да и непонятно зачем. К тому же бинарь на сайте - дурной тон.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522392
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Треш конечно. Делфи-Паскаль я имею в виду. Кроме того... эти длинные названия...
Ну я понимаю зачем они нужны в бизнес-приложениях. Ордер. Опцион. Цена. Комиссия. Но в алгоритмических
я-бы вводил { i,j,k } как параметры циклов. Это естесственно для математики и алгоритмов. Счетчики там...
флаги.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522396
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТреш конечно. Делфи-Паскаль я имею в виду. Кроме того... эти длинные названия...
Ну я понимаю зачем они нужны в бизнес-приложениях. Ордер. Опцион. Цена. Комиссия. Но в алгоритмических
я-бы вводил { i,j,k } как параметры циклов. Это естесственно для математики и алгоритмов. Счетчики там...
флаги.

Ну так флаг в руки )
Получится короче и непонятнее.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522400
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Кнута и Седжвика - еще непонятнее и вообще, математика - непонятный язык.
Короткие обозначения...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522403
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonУ Кнута и Седжвика - еще непонятнее и вообще, математика - непонятный язык.
Короткие обозначения...

... и длинные комментарии ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522409
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно... насмеялись.

Как тебе идея с индексированием доски?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522413
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу ладно... насмеялись.

Как тебе идея с индексированием доски?

на мой взгляд - тупиковый путь.
Возможно, я не до конца понимаю, что в точности стоит за этим словами.

Это как с симметрией - в теории классно.
На деле только зеркальная дает ощутимый выигрыш.
Попробовал лево-право, верх-низ - получил те же самые 2 раза.
Ща для очистки совести добью полную симметрию, посмотрю как там будет. Еще половины не сделал, но уже выглядит монструозно. Плюс работа с памятью, вряд ли это будет быстро. Посмотрю и успокоюсь.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522416
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открытым остался вопрос - как найти все решения. Переозвучу постановку еще раз.
(для других, которые только начали читать топик).

1000-queens problem
Дана квадратная шахматная доска размером 1000х1000. (n=1000). На доске установлено
m ферзей, не угрожающих друг другу. (m меньше либо равно n).

Найти все возможные ферзевые решения не угрожающих друг другу ферзей на данной доске
при условии что m уже установлены и не снимаются.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522418
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

так доказано уже, что количество решений - не полиномиально от N. Т.е. найти их все за полиномиальное время невозможно.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522419
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scf, как это противоречит тому что я написал?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522420
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

смысл задачи в том, чтобы доказать, что она не NP-полная. Задача поиска всех решений доказанно NP-полная. Вывод - речь изначально шла о какой-то другой задаче?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522425
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfmayton,

смысл задачи в том, чтобы доказать, что она не NP-полная. Задача поиска всех решений доказанно NP-полная. Вывод - речь изначально шла о какой-то другой задаче?
Я понял вас. Сразу скажу что я пришел в топик не для того чтобы что-то доказывать. Меня
просто интересует шахматная механика и алгоритмы и структуры данных.

Вот как-то в таком-вот аспекте.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522581
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОткрытым остался вопрос - как найти все решения. Переозвучу постановку еще раз.
(для других, которые только начали читать топик).

1000-queens problem
Дана квадратная шахматная доска размером 1000х1000. (n=1000). На доске установлено
m ферзей, не угрожающих друг другу. (m меньше либо равно n).

Найти все возможные ферзевые решения не угрожающих друг другу ферзей на данной доске
при условии что m уже установлены и не снимаются.


На самом деле, чтобы получить премию, этого недостаточно.

Вот тут все просто и ясно сформулировано, чтобы даже не пытались http://claymath.org/events/news/8-queens-puzzle
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522629
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovЭто как с симметрией - в теории классно.
На деле только зеркальная дает ощутимый выигрыш.
Попробовал лево-право, верх-низ - получил те же самые 2 раза.
Ща для очистки совести добью полную симметрию, посмотрю как там будет. Еще половины не сделал, но уже выглядит монструозно. Плюс работа с памятью, вряд ли это будет быстро. Посмотрю и успокоюсь.
"лево-право" это симметрия по пол-доски чтоли?
а я говорил про разделение доски на 4 квадрата и зеркалирование первых ходов
что во всех 4х квадратах будет зеркально одинаковая картина
вы похоже даже не поняли, о чём речь
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522638
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Aleksandr SharahovЭто как с симметрией - в теории классно.
На деле только зеркальная дает ощутимый выигрыш.
Попробовал лево-право, верх-низ - получил те же самые 2 раза.
Ща для очистки совести добью полную симметрию, посмотрю как там будет. Еще половины не сделал, но уже выглядит монструозно. Плюс работа с памятью, вряд ли это будет быстро. Посмотрю и успокоюсь.
"лево-право" это симметрия по пол-доски чтоли?
а я говорил про разделение доски на 4 квадрата и зеркалирование первых ходов
что во всех 4х квадратах будет зеркально одинаковая картина
вы похоже даже не поняли, о чём речь

Более того, я даже не пробовал понять. Не хочу за вас додумывать.
Попробуйте реализовать сами то, что предлагаете. Тогда и объяснить сможете понятно.

При решении задачи о ферзях могут использоваться следующие виды симметрий:
1. зеркальная симметрия относительно вертикали (лево-право),
2. зеркальная симметрия относительно горизонтали (верх-низ),
3. повороты на 90, 180, 270 градусов.

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

Каждое фундаментальное решение может учитываться 1, 2, 4 или 8 раз в общем количестве решений.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522667
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovmaytonОткрытым остался вопрос - как найти все решения. Переозвучу постановку еще раз.
(для других, которые только начали читать топик).

1000-queens problem
пропущено...


На самом деле, чтобы получить премию, этого недостаточно.

Вот тут все просто и ясно сформулировано, чтобы даже не пытались http://claymath.org/events/news/8-queens-puzzle
в плане грубого перебора, что полностью все расстановки найти O(N!), что найти все дополнения (O((N-k)!) - это одно и тоже

Но перебор, это явно тупик, вот как-то бы выйти на формулу количества решений.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522727
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonОткрытым остался вопрос - как найти все решения. Переозвучу постановку еще раз.
(для других, которые только начали читать топик).

1000-queens problem
Дана квадратная шахматная доска размером 1000х1000. (n=1000). На доске установлено
m ферзей, не угрожающих друг другу. (m меньше либо равно n).

Найти все возможные ферзевые решения не угрожающих друг другу ферзей на данной доске
при условии что m уже установлены и не снимаются.


Что можно считать решением подобной формулировки для доски 1000x1000?

Очевидно что поиск всех решений скорее всего натолкнется на неспособность в каком либо виде сохранить более 10^20 решений. Как собственно и проверить их уникальность.

Будет ли являться решением задачи - способность алгоритма посчитать за вменяемое время все возможные решения (К количество решений) при M предустановленных (неподвижных) ферзей. Но каким образом можно будет проверить что это количество справедливо?

Может быть при значительно увеличении числа M, например до 900-980 алгоритм поиска с возвратом сможет проверить справедливость выводов более быстрого алгоритма? Который и нужно найти.

Допустимо ли переформулировать задачу таким образом:

Найти все возможные ферзевые решения не угрожающих друг другу ферзей на данной доске (или количество таких решений)
при условии что m уже установлены и не снимаются.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522733
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan) Но перебор, это явно тупик, вот как-то бы выйти на формулу количества решений.
Формула возможна только для пустой доски, каждый установленный ферзь в корне меняет количество возможных решений. Более того несколькими неверными ходами можно вообще запороть доску, так что решений не будет.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522785
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276Очевидно что поиск всех решений скорее всего натолкнется на неспособность в каком либо виде сохранить более 10^20 решений. Как собственно и проверить их уникальность.

Нигде не было требования сохранять.
Для проверки уникальности достаточно применить к решению все симметрии и убедиться, что вес решения меньше веса симметричных изображений. Или сразу генерировать только уникальные, если так будет быстрее для алгоритма. Или генерировать симметричные не в отношении всех симметрий и проверять не использованные.

ex1276Будет ли являться решением задачи - способность алгоритма посчитать за вменяемое время все возможные решения (К количество решений) при M предустановленных (неподвижных) ферзей. Но каким образом можно будет проверить что это количество справедливо?


Это должен гарантировать алгоритм, иначе зачем он нужен.

ex1276Может быть при значительно увеличении числа M, например до 900-980 алгоритм поиска с возвратом сможет проверить справедливость выводов более быстрого алгоритма? Который и нужно найти.


Да, 980 ферзей обычный поиск с возвратом (после небольшой модификации) легко достроит до 1000.


ex1276Допустимо ли переформулировать задачу таким образом:
Найти все возможные ферзевые решения не угрожающих друг другу ферзей на данной доске (или количество таких решений)
при условии что m уже установлены и не снимаются.

Это не совсем то, что надо. Если углубляться в теории, не хватает требования найти ответ при жизни нашей вселенной. )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522804
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr Sharahov Нигде не было требования сохранять.
Для проверки уникальности достаточно применить к решению все симметрии и убедиться, что вес решения меньше веса симметричных изображений. Или сразу генерировать только уникальные, если так будет быстрее для алгоритма. Или генерировать симметричные не в отношении всех симметрий и проверять не использованные.

Александр, немного не понял про вес. Мы говорим про центр тяжести заполненной доски? Который проверяем с учетом 8 поворотов/отражений с уникальными решениями из накопленной базы.

Или имеется в виду какая-то другая форма хэширования заполненной доски?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522814
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276Aleksandr Sharahov Нигде не было требования сохранять.
Для проверки уникальности достаточно применить к решению все симметрии и убедиться, что вес решения меньше веса симметричных изображений. Или сразу генерировать только уникальные, если так будет быстрее для алгоритма. Или генерировать симметричные не в отношении всех симметрий и проверять не использованные.

Александр, немного не понял про вес.

Каждое решение, если записать его в порядке следования строк - это просто вектор с номерами столбцов. Например, решение 42031 означает, что ферзи стоят в клетках 04 12 20 33 41.
На номер столбца можно смотреть как на цифру в N-ричной системе счисления. Можно также получить решение симметричное нашему - 02413, если его отразить зеркально относительно вертикали. Это и будет фундаментальное решение, т.к. его вес (число в 5-ричной системе) 02413 < 42031.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522836
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr SharahovКаждое решение, если записать его в порядке следования строк - это просто вектор с номерами столбцов. Например, решение 42031 означает, что ферзи стоят в клетках 04 12 20 33 41.
На номер столбца можно смотреть как на цифру в N-ричной системе счисления. Можно также получить решение симметричное нашему - 02413, если его отразить зеркально относительно вертикали. Это и будет фундаментальное решение, т.к. его вес (число в 5-ричной системе) 02413 < 42031.

А ведь отличная идея.
Только беспокоюсь, что n-ричные системы счисления (при n>1000) с трудом выдержат библиотеки сверхбольших чисел. Числа на больших досках все равно будут эквивалентны n^n. Если не ошибаюсь, то для записи решения 1000 доски понадобится примерно 1250 байт. MPArith выдержит доску до 12000*12000.

В целом соглашусь, что для доски 1000x1000 этот вариант приемлим.
Для больших досок похоже придется искать какие-то варианты свертки решений.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522850
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quot ex1276,

Не надо библиотек и прочего. Это было сказано только для демонстрации идеи, на самом деле достаточно 4 цифр. Подумайте )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522859
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr SharahovНе надо библиотек и прочего. Это было сказано только для демонстрации идеи, на самом деле достаточно 4 цифр. Подумайте )
Я в недоумении )
Если обсуждать размерность чисел, то а принципе достаточно одного сверхбольшого числа )

У меня нет мыслей, как четырьмя двухбайтными числами записать решение доски 1000x1000 без использования сверток/хэшей.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522867
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276Aleksandr SharahovНе надо библиотек и прочего. Это было сказано только для демонстрации идеи, на самом деле достаточно 4 цифр. Подумайте )
Я в недоумении )
Если обсуждать размерность чисел, то а принципе достаточно одного сверхбольшого числа )

У меня нет мыслей, как четырьмя двухбайтными числами записать решение доски 1000x1000 без использования сверток/хэшей.

Нам не надо записывать решение.
Нам надо из 8 решений симметричных решений (как бы они не были перетасованы) уметь выбирать всегда одного представителя.
Для этого достаточно задать функцию веса решения.
В функции веса можно использовать не всю информацию из решения, а только часть - ведь надо уметь различать не все решения, а только 8.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522878
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется, я снова ступил на скользкую дорожку и могу быть неправильно понят.
Требуется кое-что прояснить.

1. Использовать симметрию в задаче завершения в общем случае не получится.
2. В процессе вычислений обычной задачи генерации точно сказать будет ли очередное решение иметь симметричные решения или нет тоже не получается.
3. Но благодаря симметрии можно сократить перебор на первых шагах рекурсии в 2-8 раз.

Понятно, что в масштабах вселенной 2-8 раз - сущие копейки.
Тем более, что 8 все равно не достичь из-за накладных расходов на более сложную организацию вычислений.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522880
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пытался понять возможный принцип алгоритма, который уже накопил 1 млрд. уникальных решений и получает 1 000 000 001 решение, ему нужно быстро проверить, является ли это решение уникальным по отношению к предыдущему 1 млрд. решений.

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

Но вектор уникальных решений все равно придется хранить в базе в точном виде.
Как отдельные уникальные решения могут быть записаны в 4-х числах?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522897
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276Я пытался понять возможный принцип алгоритма, который уже накопил 1 млрд. уникальных решений и получает 1 000 000 001 решение, ему нужно быстро проверить, является ли это решение уникальным по отношению к предыдущему 1 млрд. решений.

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

Но вектор уникальных решений все равно придется хранить в базе в точном виде.
Как отдельные уникальные решения могут быть записаны в 4-х числах?

В таком виде - никак. Потому что порядок, в котором генерировались решения произвольный.
Давайте представим решение в виде графа с 4 вершинами.
Код: pascal
1.
2.
3.
1-2
|  |
3-4


Понятно, что поворотами и отражениями всегда можно поставить на 1 место самую легкую вершину и т.д.
Мы в цикле будем проверять возможный вес решения и не генерировать (пропускать) решения,
у которых веса вершин находятся не в таком порядке 1<=2<=3<=4, а для правильного порядка будем генерировать сразу все симметричные.
Теперь как считать вес вершины.
Для вершины 1 - это расстояние от угла 1 до ферзя в первой строке,
для вершины 2 - это расстояние от угла 2 до ферзя в последнем столбце,
для вершины 3 - это расстояние от угла 3 до ферзя в первом столбце,
для вершины 4 - это расстояние от угла 4 до ферзя в последней строке.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522917
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

слишком сложно как-то замутил, из всех вроде адекватно можно только зеркальную симметрию использовать
например считать только решения в которых одна из строк выше другой
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522920
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Aleksandr Sharahov,

слишком сложно как-то замутил, из всех вроде адекватно можно только зеркальную симметрию использовать
например считать только решения в которых одна из строк выше другой

Это точно, у меня зеркальная (лево-право) бьет по скорости даже двойную зеркальную (лево-право, верх-низ).

А с поворотами сел в лужу, отладить не могу,
до 9 выдает верный результат,
а с 10 начинает потихоньку добавлять от себя лишние решения.
Вот пока сижу и думаю, как их отловить, тотальную охоту начинать не хочется.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522926
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

смылса нет мне кажется, как верно заметили даже если удастся поделить на 8 по сравнению с факториалом это ....
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522934
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

есть спортивный интерес - генерировать быстрее зеркала.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522950
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovkealon(Ruslan)Aleksandr Sharahov,

слишком сложно как-то замутил, из всех вроде адекватно можно только зеркальную симметрию использовать
например считать только решения в которых одна из строк выше другой

Это точно, у меня зеркальная (лево-право) бьет по скорости даже двойную зеркальную (лево-право, верх-низ).
да у вас прогресс!
Aleksandr Sharahovmayton,

зачем вообще возиться с зеркалированием?

Ведь в нашем случае:
1. при поиске всех перестановок зеркалирование не дает выигрыша по времени,
2. никто не спрашивает, сколько уникальных решений было найдено.
неужели таки осилили мою идею зеркалирования?
осталось только понять, зачем вы считаете все 4 квадрата ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522956
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78неужели таки осилили мою идею зеркалирования?
осталось только понять, зачем вы считаете все 4 квадрата ))

Понять вашу идею невозможно, даже вам.

Понять чужие идеи можно, но не вам.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522957
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovНа самом деле, чтобы получить премию, этого недостаточно.

Вот тут все просто и ясно сформулировано, чтобы даже не пытались http://claymath.org/events/news/8-queens-puzzle
Поскольку язык форума - русский. А у нас в сабже даже с русским есть непонимания
(Бодаемся с зеркалами и хранением уже несколько недель) то я предлагаю перевести
публикацию и опубликовать здесь.

Никто не против? Я надеюсь моего слабого intermediate хватит чтобы осилить эти шахматные
прокламации.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522972
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Ахтунг !!! Дисклаймер!!! К несчастью, сказанное выше про разложения неверно!

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

Наши матрицы не коммутативны, след-но теорема неприменима.
Правда, кой-какие циклические п/группы у нас есть, но в прямое произв-е не разложить.
И в разложении наверняка будут в наличии и нециклические п/группы.
И пользы пока не видно.
...................
метод в принципе годный, только медленный из-за необходимости перестраивать индекс и превышение

из плюсов: ему интерферентно откуда искать, с нуля или с заданного начального состояния
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522980
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Готово.

http://claymath.org/events/news/8-queens-puzzle Последняя статья о сложности n-Ферзей. Финал.

Проблема в Университете Святого Эндрюса. Университет
может указать нам на проблему тысячелетия.

Документ интересен вкладом в сложность теории, но не
решает проблему поиска решения 8-Ферзевой загадки и даже
более того N-Ферзевой.

Один из авторов, Ян Джент комментирует: "Загадка 8-Ферзей
на доске - классическая. И все решения ее давно известны.
Также известно что обобщенная загадка n-Ферзей, может
быть решена на всех досках большего размера: это загадка
размещения n ферзей на все n-по-n досках так что ферзи
не атакуют друг друга."

Новые исследования вносят сомнения что существует решение n-Ферзей,
не просто на большей доске, но также при условии что некоторые
ферзи уже размещены. Если некоторые ферзи стоят на доске nxn,
можете-ли вы найти решение n-Ферзей загадки без передвижения
вышеуказанных ферзей?

Технический вклад о котором говорит статья заключается в том что
проблема завершения n-Ферзей относится к классу NP-Полных
алгоритмов. Если это правда, то подразумевается что ЛЮБОЙ
алгоритм который может решать n-Ферзевое окончание может
быть использован опосредовано для решения любых других
проблем NP-класса.

Это неприменимо к классической оригинальной n-Ферзевой
загадке, потому-что дополнение предварительно установленных
ферзей - критически важно.

К сожалению, некоторые отчоты о нашей работы дали основание
полагать что решение 8-Ферзевой загадки, или n-ферзевой
загадки для любого n, может привести к получению награды
тысячелетия. Это не так по следующим двум причинам.

1) Как выше было сказано, документ говорит о завершении
n-Ферзевой задачи а не об оригинальной n-Ферзевой.

2) Даже нахождение алгоритмического решения загадки
n-Ферзевого Окончания для любого n, будет недостаточно.

Достаточно было-бы найти доказательство существования
полиномиального алгоритма n-Ферзей, либо доказательство
невозможности этого алгоритма.


Если вы нашли неточности в переводе - сообщайте. Поправлю.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39522990
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мысли о комбинаторике. Ферзи 4х4 имеют 4! = 24 решений из которых
большая часть - некорректны. Они не проходят checks по диагоналям.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321


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

Сам генератор permutations - тривиален. Вы можете найти его в библиотеке stl. Либо найти
любые другие имплементации. Он будет везде одинаковый.

Найдем альтернативный генератор - изменим сложность с факториальной или по Стирлингу n в степени n
хотя-бы до более простой. Ферзевые начальные установки в данном случае - просто некие фиксированные
числа в данной последовательности которые "не двигаются".
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523029
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВозникает вопрос. Можем-ли мы улучшить генератор permutations настолько, чтобы он двигался
по последовательности пермутаций длинными прыжками сразу пропуская большую последовательность
невалидных комбинаций? Примерно так-же как и мы делали в топике генерации простых
чисел.

Сам генератор permutations - тривиален. Вы можете найти его в библиотеке stl. Либо найти
любые другие имплементации. Он будет везде одинаковый.

Найдем альтернативный генератор - изменим сложность с факториальной или по Стирлингу n в степени n
хотя-бы до более простой. Ферзевые начальные установки в данном случае - просто некие фиксированные
числа в данной последовательности которые "не двигаются".
можем

вот смотри, в твоём примере

1234 - 3 элемента на диагоналях лишние
1243 - 2 элемента лишние
1432 - 2 элемента лишние
4231 - 2 элемента лишние

1324
1342
1423
4321

3214
3241
3412
4213

2134
2143
2431
4132

...
т.е. любой вариант перестановки можно записать "числом" {Ak}, где k - 0..(N-2), Ak - 0..(N-k)
каждый обмен строчек изменяет превышение максимум на 2, первые разряды в количестве (Превышениe/2) можно пропускать

но это не сильно поможет в силу количества решений, алгоритм на шарпе в вики собственно это и делает.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523034
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

проблема в том, что требование "не бить по диагонали" (например, a[i]-i<>a[j]-j) не привязано к месту.

Все равно придется или попарно проверять или проверять флаги диагоналей. А это и так делают стандартные решения.

Получается, что представление кандидата в виде перестановки только помогает упростить запись найденного решения, но не найти его.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523061
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы не услышали моё предложение. Ещё раз обратите внимание на алгоритм генерации permutations.

Он на 99% состоит из операций циклического вращения младших элементов разрядной сетки.

Меняет ли вращение ситуацию когда 2 ферзя под боем? Открытый вопрос.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523085
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovkealon(Ruslan)Aleksandr Sharahov,

слишком сложно как-то замутил, из всех вроде адекватно можно только зеркальную симметрию использовать
например считать только решения в которых одна из строк выше другой

Это точно, у меня зеркальная (лево-право) бьет по скорости даже двойную зеркальную (лево-право, верх-низ).

А с поворотами сел в лужу, отладить не могу,
до 9 выдает верный результат,
а с 10 начинает потихоньку добавлять от себя лишние решения.
Вот пока сижу и думаю, как их отловить, тотальную охоту начинать не хочется.

Разобрался с причиной появления "лишних" решений. Отлаживая свой алгоритм зеркалирования на 8, я, естественно, подсчитывал разные решения внутри разных периметров в одну клетку. Понятно, что это число не совпадает с количеством фундаментальных решений, как раз с N=10 начинаются расхождения.

В результате алгоритм с сильно неоптимальной реализацией периметра на паскале побеждает очень неплохую рекурсивную версию на ассемблере примерно на 10%. Игра стоила свеч, и есть куда копать. Думаю еще 10% точно можно получить.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523094
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВы не услышали моё предложение. Ещё раз обратите внимание на алгоритм генерации permutations.

Он на 99% состоит из операций циклического вращения младших элементов разрядной сетки.

Меняет ли вращение ситуацию когда 2 ферзя под боем? Открытый вопрос.

В общем случае меняет.
Но что это дает? Перебор этим не ускорить.
А градиентный спуск запросто может застрять в яме. Правда, для больших N это почти невероятно, что продемонстрировали те два товарища своим вероятностным алгоритмом.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523162
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovtip78неужели таки осилили мою идею зеркалирования?
осталось только понять, зачем вы считаете все 4 квадрата ))

Понять вашу идею невозможно, даже вам.

Понять чужие идеи можно, но не вам.
а, так вы мелкий воришка чужих идей
"не понял он", ну-ну, форум всё помнит ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523173
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

вам, как первооткрывателю, будет интересно погуглить "n queens symmetry".
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523176
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

забыл добавить:

но вашей идеи там нет, так что срочно патентуйте ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523179
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВы не услышали моё предложение. Ещё раз обратите внимание на алгоритм генерации permutations.

Он на 99% состоит из операций циклического вращения младших элементов разрядной сетки.

Меняет ли вращение ситуацию когда 2 ферзя под боем? Открытый вопрос.может поменять превышение максимум на 2 либо вниз, либо увеличит.
посмотри, то что я показал, оно просто по другому построено чем у тебя и позволяет легче обходить "ямы"
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523247
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

все, перестаю велосипедить,
нашлась интересная и очень быстрая реализация генерации с использованием 8-кратной симметрии

http://www.ic-net.or.jp/home/takaken/e/queen/
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523253
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovkealon(Ruslan),

все, перестаю велосипедить,
нашлась интересная и очень быстрая реализация генерации с использованием 8-кратной симметрии

http://www.ic-net.or.jp/home/takaken/e/queen/

Я чуть иначе зеркалил 3 точки на периметре (одна в углу, на одном выбранном ребре координата больше другого), в остальном совпадает.
С проверкой уникальности очень неочевидные циклы. Круто.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523255
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovkealon(Ruslan),

все, перестаю велосипедить,
нашлась интересная и очень быстрая реализация генерации с использованием 8-кратной симметрии

http://www.ic-net.or.jp/home/takaken/e/queen/
круто, только проблему факториала не решает
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523287
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Aleksandr Sharahovkealon(Ruslan),

все, перестаю велосипедить,
нашлась интересная и очень быстрая реализация генерации с использованием 8-кратной симметрии

http://www.ic-net.or.jp/home/takaken/e/queen/
круто, только проблему факториала не решает

О решении проблемы факториала можно только мечтать.
А вот то, как он обошелся с углом, запало в душу )
Есть идея попробовать ограничиться диагональными зеркалами и лево-право. Вдруг получится проще.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523332
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А рассматривалась ли где такая постановка?
Последовательности слов переменной длины. Они возникают из суперпозиции элементарных транспозиций соседних строк матрицы Е.

Для S26 имеем их 26 a,b,c, ... z. Остальные (и соответственно матрицы) описываются словами из этого алфавита. Например, если я не обшибаюсь, перестановка 1-й и 3 строки описывается словом aba, для 1 и 6-й: abcdedcba, и т.д., а = а^-1, dcba = (abcd)^-1. Много слов разного написания на самом деле совпадут как матрицы. Слова удобно SQL-ить.

Перекладывал ли кто алгоритм полной расстановки на такие слова?
Я во всю тему не вдавался, хотя реально мне ещё доооолго будет не до этого, топик не закрывайте только.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523384
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,
20804921 тоже самое, слова в масштабах N! совсем неудобно sql-ить
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523392
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovkealon(Ruslan),

все, перестаю велосипедить,
нашлась интересная и очень быстрая реализация генерации с использованием 8-кратной симметрии

http://www.ic-net.or.jp/home/takaken/e/queen/
так а что вы не могли понять (или делали вид, что не могли) всё это время?
вот он сделал ровно тоже самое, что говорил я, только с формулами сумел посчитать особые случаи (углы/не углы)
у него ещё сложнее, чем у меня описание, но его вы поняли (причём на другом языке), а меня - нет
мутный вы тип ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523394
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98, нужны биты, а не байты
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523422
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78у него ещё сложнее, чем у меня описание, но его вы поняли (причём на другом языке), а меня - нет

потому что он сказал, как с учетом симметрии переходит от одного решения к следующему, а вы нет
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523437
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78exp98, нужны биты, а не байты
kealon(Ruslan) слова в масштабах N! совсем неудобно sql-ить до 10-20 вполне.
На этом этапе не гонюсь за скоростью и экономией. Вопрос в принципе: поиск полезных свойств. А то будет выдвижение гипотез с лагом в 10 лет ....
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523463
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополню.
Сейчас здесь вы зациклились на методах "блуждания по пересечённой местности" и даже с учётом того, что правильные матрицы занимают мизерную долю. Однако мы совсем ещё не исчерпали возможности групповых свойств наших матриц. В любом случае что-то реально ускорить (на ближайшие 25 лет) можно за счёт удачной классификации.

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

Мой план состоит из 2-х пп.
1) см. предыдущий пост про слова.

2) Вместо разбиния на Произв( {Ai^ki} ), стоит поизучать наименьшую группу Х, к-рую порождают правильные матрицы. Поскольку класс правильных не замкнут, то в Х попадут также и неправильные. Поизучать смежные классы типа а*Х или а*Ха^-1, где а неправильная .... Какое распределение в некоторой нумерации, каков % тех и других, на какие классы можно разбить, основываясь только на св-вах матриц, какие св-ва этих классов и т.д.

Такой примерно план для первых N.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523524
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задумался о том, какая связь между Генетическими Алгоритмами и методом PTA двух челов из Utah.
Общего много. Подход к отбору. Берем случайные хромосомы. Далее. Мутации и кроссовера нет.
Но зато есть забавный обмен местами признаков в одной удачной хромосоме. Если не быть педантами
и представить что ГА это вовсе не алгоритм а скорее философский принцип отбора и селекции решений.

Еще мысль. PTA(Polynominal Time Algorithm) в силу особенностей ГА будет выдавать нам решения
с хорошей скоростью только на старте. (Ее можно оценить). Со временем эта скорость будет падать.
Мы будем попадать в "distinct solutions". Количество решений будет стремиться к финальному но не
скоро достигнет его. В конце (когда потухнет солнце и космос будет состоять из редких black-holes),
мы все таки найдем последнее решение (ведь их количество - счетное) однако комбинаторный алгоритм
нас может к тому времени обогнать. (Это тоже надо оценить).

Если мы откажемся от "случайности" в выборе вектора ферзей в PTA и заменим его на псевдо-случайность
то тогда есть надежда что генерация решений будет более осмысленная. Без distinct. Правда локальные
минимумы подкинут свинью. Надо решить как быть с ними. Или тоже подвергнуть их псевдо-случайным
перестановкам.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523532
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton...Берем случайные хромосомы...
У них целенаправленно берутся и обмениваются только те, которые улучшают результат при обмене.
Т.е. ничего общего в алгоритмах нет, хотя воспоминания навевают. Это как жара и оранжевый.


maytonЕсли мы откажемся от "случайности" в выборе вектора ферзей в PTA и заменим его на псевдо-случайность
то тогда есть надежда что генерация решений будет более осмысленная. Без distinct. Правда локальные
минимумы подкинут свинью. Надо решить как быть с ними. Или тоже подвергнуть их псевдо-случайным
перестановкам.
Немного погонял алгоритм. Впечатление нереальности происходящего не покидает.
В то время как при N=100 можем запросто 50 раз подряд попасть в яму, при N=50000 решение всегда (насколько хватило терпения жмакать кнопку) находится с первой попытки.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523535
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovНемного погонял алгоритм. Впечатление нереальности происходящего не покидает.
В то время как при N=100 можем запросто 50 раз подряд попасть в яму, при N=50000 решение всегда (насколько хватило терпения жмакать кнопку) находится с первой попытки.
Не-ре-аль-но... может у тебя снова бага. Как с зеркалом.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523537
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAleksandr SharahovНемного погонял алгоритм. Впечатление нереальности происходящего не покидает.
В то время как при N=100 можем запросто 50 раз подряд попасть в яму, при N=50000 решение всегда (насколько хватило терпения жмакать кнопку) находится с первой попытки.
Не-ре-аль-но... может у тебя снова бага. Как с зеркалом.

Сам офигевал поначалу, решения выводил и пристально разглядывал. В общем, рекомендую ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523542
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытался изобразить свою мысль. Я ввожу функцию X(n)
(это не "Икс" а это я пытался нарисовать греческую букву "Хи")
которая будет возвращать общее количество решений ферзевой
задачи для размера доски n, включая зеркала и развороты.

Вобщем синий график - это наш рекурсивный факториальный
брутфорс. А красный это полиномиальный искатель случайных
решений.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523544
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Aleksandr Sharahovпропущено...


Это точно, у меня зеркальная (лево-право) бьет по скорости даже двойную зеркальную (лево-право, верх-низ).
да у вас прогресс!
Aleksandr Sharahovmayton,

зачем вообще возиться с зеркалированием?

Ведь в нашем случае:
1. при поиске всех перестановок зеркалирование не дает выигрыша по времени,
2. никто не спрашивает, сколько уникальных решений было найдено.
неужели таки осилили мою идею зеркалирования?
осталось только понять, зачем вы считаете все 4 квадрата ))
Я-бы здесь дополнил сам себя. Считаю что расчет зеркал и разворотов
не приближает нас к финалу (к полному перерасчету всех ферзевых решений).
Имея 1 решение мы всегда (за константное время) расчитаем всех его братьев.
Но есть технические приёмы, работы с матрицами на аппаратной архитектуре x86.
В учебных примерах на wiki мы обходим клетки сверху вниз. Профанация! Нужно
сменить направление.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523582
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

У меня вот почему-то появляется стойкое убеждение, что причина такого факториального роста решений скрыта как раз в возможности различных отображений: повороты, фрактальное наложение и т.д.. Т.е. такие "решения-призраки" и приводят к взрывному росту количества, они же и мешают сделать вменяемые огибающие для перебора.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523605
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а у меня почему-то мнение, что причина в неудачной нумерации. Смех в том, что заведомосуществует удачная, в к-рой правильные позиции расположены подряд. Нужно только её быстро найти. А так можно только мечтать об адаптивной нумерации пом ере продвижения, тоже конечно быстрой.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523612
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

и простое число можно найти по его номеру, главное - знать, где искать )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523613
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)повороты, фрактальное наложение эу, какие повороты? из этого если только "фрактальные" комбинации. С другой стороны мне как раз давно кажется что их ("фрактальные") рзанообразие действительно растёт c N.
Во всяком случае где-то в начале был рисунок, там 2 расходящиеся "линии" по диагонали. Если в том же духе за основу взять другой патерн, то по мере роста могут добавляться 3-я, 4-я и т.д линии.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523616
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov простое число можно найти по его номеру, главное - знать, где искать ) да вот здесь и искать:
( a*x/Ln x ; A*x/Ln x ), по Чебышеву, где A~1,05 a~0,92
шютка тоже
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523674
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, если бы можно было хоть как-то увязать решения с простыми числами, было бы вообще шикарно
не пришлось бы двойную работу делать ^^
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523675
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но по-моему всех чисел меньше, чем решений
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39523991
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78, а зачем вам простые числа?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524010
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С простыми числами тоже не все просто. Насколько я знаю задача: "найти следующее простое число" не решена. Решена задача найти простое заданной размерности.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524035
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)mayton,

У меня вот почему-то появляется стойкое убеждение, что причина такого факториального роста решений скрыта как раз в возможности различных отображений: повороты, фрактальное наложение и т.д.. Т.е. такие "решения-призраки" и приводят к взрывному росту количества, они же и мешают сделать вменяемые огибающие для перебора.
Эти ваши ферзи уже неделю мне не дают покоя. И отобрали у меня полезную задачку унификации Шутка.

По сабжу. Я чем дольше думаю о BackTracking и Polynomial то тем больше понимаю что это настолько разные
алгоритмы что их пора разделить на два топика а модератора просить выкосить все рефералы и сравнения.

Они - разные и решают разные задачи.

Кажется что уже где-то проговорили что не будем хранить найденные значения но... нет
кто-то снова спрашивает а куда дескыть мы их положим? Какая нахер разница для BackTracking! Он итерирует весь
континуум! Вобщем... жутко бесит.

Хочется спросить. Товарищь! Ты сейчас о каком АЛГОРИТМЕ говорил?

Бесит тема зеркалирования и разворотов. Какое это имеет значение?! Родные! Мы импрувим асимптоматику!
Мы решаем вопросы теории пределов. Какое имеет значение добавите вы коефициентик или нет! Вообще ни разу не играет роли!
Не влияет. Не оказывает. Не помогает.

Сорян друзья. Пойду накапаю себе капель...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524037
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

В разнообразии наша сила, а если только импрувить асимптоматику топик пустым будет. Не отмпрувим.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524065
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понаблюдал за ферзями на примере доски 8х8. Они не одинаковые. Тоесть
они как фигуры - одинаковые но в зависимости от позиции - кроют разное
число клеток. К примеру ферзь в углу кроет только 1+7+7+7 = 22 клетки.
Ферзь в центре - до 28 клеток.

Можно сказать что "центровой" ферзь - рангом повыше.

Если алгоритм BackTracking будет делать проверки не в декартовом
порядке а в порядке старшинства рангов - то весть мысль что мы
быстрее будем проскакивать рекурсивные ямы.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524067
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПонаблюдал за ферзями на примере доски 8х8. Они не одинаковые. Тоесть
они как фигуры - одинаковые но в зависимости от позиции - кроют разное
число клеток. К примеру ферзь в углу кроет только 1+7+7+7 = 22 клетки.
Ферзь в центре - до 28 клеток.

Можно сказать что "центровой" ферзь - рангом повыше.

Если алгоритм BackTracking будет делать проверки не в декартовом
порядке а в порядке старшинства рангов - то весть мысль что мы
быстрее будем проскакивать рекурсивные ямы.

В целом да.

Но есть еще один более сильный эффект. Несколько ферзей в соседних строках сильнее чем далеко стоящие. Т.е. выгодно идти по строкам. И оказывается совершенно пофигу, откуда идти. Из центра или сверху. Однако, проход сверху позволяет не рвать цикл.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524072
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил в статью еще исходников и текста. Попробовал немного систематизировать.

Адрес прежний http://guildalfa.ru/alsha/node/35
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524095
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой смысл в блог толкать исходники? КМК уместно опубликовать формулу или идею.

Просто ИМХО.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524125
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКакой смысл в блог толкать исходники? КМК уместно опубликовать формулу или идею.
Просто ИМХО.

У меня другая имха: ))

Для меня лучшее выражение идеи - алгоритм.

Для меня запись алгоритма проще всего выглядит на алгоритмическом языке Pascal.


Р.S.1. Тут много говорилось об идее использовать симметрию. Но сколько не повторяй заклинание "симметрия, симметрия..." симметричнее становится только во рту говорящего.

P.S.2. А на C, да, не пишут алгоритмы, на C бывают только исходники ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524149
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я не об этом. Я о том что если ты ищешь коллаборативную работу - то публикуешь в гитхаб.

Народ находит. Включается. А в твоём случае получается исходник ради восхваления себя самого любимого.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524156
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДа я не об этом. Я о том что если ты ищешь коллаборативную работу - то публикуешь в гитхаб.

Народ находит. Включается. А в твоём случае получается исходник ради восхваления себя самого любимого.



1. Я не ищу работу.

2. Мне так удобнее восхвалять себя чужими алгоритмами.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524185
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты, главное, хостинг не закрывай, я туда лазить буду (когда-нибудь). Статус версии желательно (без ошибок / есть недоработки и т.п.)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524214
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Ты, главное, хостинг не закрывай, я туда лазить буду (когда-нибудь). Статус версии желательно (без ошибок / есть недоработки и т.п.)

Все алгоритмы проверены в работе, ошибок не найдено.

Если найдешь ошибки в алгоритмах, пиши в комментариях или тут - сразу исправлю.
Ну или в описании где неточности-неясности, тоже поправлю.

Описания хоть и довольно краткие,
но основную идею алгоритма обычно стараюсь не упустить.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524239
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton Бесит тема зеркалирования и разворотов. Какое это имеет значение?! Мы импрувим асимптоматику!
Какое имеет значение добавите вы коефициентик или нет! mayton, коэфф-тик в показатель степени (вернее вычесть из него) -- 1-е место в соревновании.

Значение? как раз в надежде, что штуки распадутся на быстро вычислимые классы, возможно с хорошей ассимптотикой. Без этого имеется только один половой признак - диагонали. Фигня только, что если говорить о настоящих фракталах, по Барнсли, то их подбор "под заказ" - такая же хрень, что и с фишками, по-видимому.
И та же хрень с твоими хромосомами. Пока сам не найдёшь первичные половые признаки, не сможешь эффективно указать эти хромосомы. И то же самое с сетками.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524265
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, если не убеждает обнадёживает, напомню, что та самая т.Ферма на последнем этапе была доказана перебором за счёт классификации, кажется возможных исключений, коих не могло быть бесконечное кол-во, только хз где. Как-то так. То есть именно по этим самым, половым.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524297
А. Х.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Ttip78так мы что, цифру ищем, сколько существует вариантов по-разному ферзей навтыкать?
А какой практический смысл в этом?
может всё-таки надо самый эффективный (где больше всех ферзей влезло)?
Какой практический смысл втыкать ферзей?

Влезет не больше чем клеток по горизонтали/вертикали, т.к. на одной линии (вертикальной/горизонтальной) больше одного ферзя не поставить.

Дима, какой практический смысл вообще что-то куда-то втыкать ? Но тем не менее - всё вокруг этого вертится. Вся наша жизнь - сплошная бессмысленная суета.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524503
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

Зачем мы опять говорим о фракталах? Нет я не навязывают течение мысли. Просто спросил.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524514
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтоб больше не бесило кого-то (как вседа в надежде на это).
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524520
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько в топике алгоритмов? Минимум три.

Я буду тезисно писать классификацию того что у нас есть. А вы говорите если что где не ок.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524604
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСколько в топике алгоритмов? Минимум три.

Я буду тезисно писать классификацию того что у нас есть. А вы говорите если что где не ок.

Можно списать классификацию задач из моей статьи.
Из той, где я прославляю себя )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524628
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovmaytonСколько в топике алгоритмов? Минимум три.

Я буду тезисно писать классификацию того что у нас есть. А вы говорите если что где не ок.

Можно списать классификацию задач из моей статьи.
Из той, где я прославляю себя )
Я думаю что вашего блога "слишком много" в топике.

Я попробую сам переосмыслить топик без отсылок. По крайней мере на частные ресурсы.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39524642
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

извини, думал, ты ищешь коллаборативную работу ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525114
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто к слову: Пилите, Шура, пилите, они золотые.

Я отдаю себе оточёт, что повторяю сделанное, но всё же ...
Поигравшись с экселом получил интересную картинку.
-Взял из инета (автор известный Е.Гик) 12 базовых позиций (из 92) , N=8 (потом посмотрел на некоторых производных)
-Образовал из них степени матриц {A^k}
-Неожиданно появились забавные свойства при условии, что я верно проверяю правильность
а) Каждая такая серия образует "циклическую группу", Аp=E, Ар-1= А* (транспонированная, она же = обратной)
б) в каждой серии правильные только А1 и Ар-1, где р - порядок группы (т.е. между ними все - неправильные), соответственно в) count(distinct p) = 4,
p count(p)12 47 68 14 1 вообще, что-то говорилось про разное кол-во возможных симметрий по типу, но на одном примере делать вывод рано.

Т.е.на одном примере видим:
Если А - прав, то А2 - неправ.
Ар-2 * А = А*=Ар-1
Наверняка на кончике пера уже разобрано где-то ...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525179
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

стоит ещё взглянуть как найти корень из матрицы
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525585
jbond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что-то притихли, решили задачу что ли?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525656
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jbondчто-то притихли, решили задачу что ли?

Для себя решил, что пора и делом заняться )

Из последних результатов - адаптировал алгоритм на битовых масках
(Martin Richards) к задаче завершения расстановки ферзей
(это предпоследний алгоритм у меня в статье).
Подробно описывать не стал, кому интересно - разберется.
Замечу лишь, что наибольшие трудности были связаны
с исключением из обработки строк, в которых уже стоят ферзи,
и это дало наибольшее ускорение.

Адаптированный алгоритм заполняет пустую доску всего в 5 медленнее,
чем алгоритм японский (takaken), который использует все симметрии.

В частности, на доске 32x32 (это максимальный размер)
на завершение расстановки 12 ферзей обычно уходит менее минуты.
Это гораздо меньше времени заполнения ферзями доски 20x20.
Т.е. для практики (если она у кого-нибудь есть) достаточно.

Понятно также, что, используя адаптированный алгоритм,
можно дробить задачу на подзадачи с учетом симметрии
на массу компов/ядер и постепенно в фоновом режиме
вычислить количество всех расстановок для N=28,
если оно еще кому-то надо.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525657
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jbondчто-то притихли, решили задачу что ли?

Для себя решил, что пора и делом заняться )

Из последних результатов - адаптировал алгоритм на битовых масках
(Martin Richards) к задаче завершения расстановки ферзей
(это предпоследний алгоритм у меня в статье).
Подробно описывать не стал, кому интересно - разберется.
Замечу лишь, что наибольшие трудности были связаны
с исключением из обработки строк, в которых уже стоят ферзи,
и это дало наибольшее ускорение.

Адаптированный алгоритм заполняет пустую доску всего в 5 медленнее,
чем алгоритм японский (takaken), который использует все симметрии.

В частности, на доске 32x32 (это максимальный размер)
на завершение расстановки 12 ферзей обычно уходит менее минуты.
Это гораздо меньше времени заполнения ферзями доски 20x20.
Т.е. для практики (если она у кого-нибудь есть) достаточно.

Понятно также, что, используя адаптированный алгоритм,
можно дробить задачу на подзадачи с учетом симметрии
на массу компов/ядер и постепенно в фоновом режиме
вычислить количество всех расстановок для N=28,
если оно еще кому-то надо.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525661
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, задвоилось
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525665
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan) найти корень из матрицы шутка такая? из Е, да? в группе всегда есть место равенству а*а=в для любого в. jbond что-то притихли, решили задачу что ли? нет, ужаснулись ...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525673
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jbond, не учи меня жить, лучше помоги доказать, что А*А обязателно неправильн, если А - правильн, с наскоку не получилось.
Возможно, что также А*В - неправильн, если обе правильн.

Вот разложения для 8-ки:
(1482)(356)(7) - порядок НОК(4,3)=12
(1487356)(2) - порядок 7
(1437)(2)(568)
(1437568)(2)
(1325648)(7)
(1327486)(5)
(1486527)(3)
(167)(2483)(5)
(14576283) - порядок =8
(145)(2)(3768)
(1457386)(2)
(1325)(4867) - порядок НОК(4,4)= 4

Есть одна для 9-ки:
(13786254)(9) - порядок =8
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525691
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)корень из матрицы вот тебе на примере ЦГ-8 порядка 7 (нечётный):
А=(1487356)(2) - порядок 7
А^8=А= А4 * А4
если возводишь в квадрат, то прыгаешь через одного
А2= (1568)(3472) = А5 * А5
А4= (16)(24)(37)(58)
А5= (12536487)
обратно - соответсвенно как-то слиять через раз, щас на примере гляну ... похоже, что комбинации подбором, проверяя правило диагоналей.

Для любой не возьмусь (из наших). А вообще для квадратных как-то через Жордановы клетки, не помню.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525710
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу, не ту взял:
exp98на примере ЦГ-8 порядка 7 (нечётный)
А=(1486527)(3) - порядок 7
А^8=А= А4 * А4
если возводишь в квадрат, то прыгаешь через одного
А2= (1857462)(3) = А5 * А5
А4= (1542876)(3)
А5= (1264758)(3)

обратно - для ЦГ уж точно можно через последовательное возведение в квадоат, а потом домножить до чётной, потом до нечётной. И всё это прыганием по сомножителям. А для ЦГ чётного порядка, я не уверен, что вообще можно, там А9 = А4.5 * А4.5 ... =А
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525721
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ааа, ясно вроде, корень - обратная операция к возведения в квадрат, а последов-сть степеней а а2 а4 а8 а16 ... не замкнута относительно умножения, стал быть обратный не всегда имеется.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525727
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98jbond, не учи меня жить, лучше помоги доказать, что А*А обязателно неправильн, если А - правильн, с наскоку не получилось.
Возможно, что также А*В - неправильн, если обе правильн.
а что вы хотите получить?
чтобы работало перемножение матриц стороны должны быть одинаковы
кол-во строк A = кол-во столбов B или наоборот
но в нашем случае это 2 одинаковых доски
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525736
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Ааа, ясно .... выше снова хрень написал, надоело оправдываться, почистил бы кто за мной ... ((((((
tip78 а что вы хотите получить? док-во либо оповержение гипотезы, сформулированной лишь на примерах N=8 и 5
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39525751
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неправильность - если по диагонали бьются, коллизии то есть по-местной терминологии. А так у нас они все квадратные.
Для А2 критерий для диагоналей звучит так (перефразировка для циклических разложений): суммы всех пар соседних чисел различны и разности - тоже (а значит разнообразие и тех и других = N).
Гипотеза в том, что сумм либо разностей пар через одного меньше N, а значит имеются 2 одинаковых значения.
Либо непосредственно доказать перемножением, либо по индукции, либо ...... хрз.

Для А*В - формулировка похожая.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526379
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, потратил вечер

Получил пару формул расчета количества решений для задачи N ферзей. Просто пошел через разные константы.

Одна формула, как выяснилось, почти повторяет расчеты Benoit Cloitre Nov 10 2002 (constant c around 2.54 such that a(n) is asymptotic to n!/c^n), но является расходящейся, как и его формула. Он не нашел константу, но там в принципе подходит (e) = exp(1). Надо калибровать.

Вторая является сходящейся и с ростом n дает все более точные результаты (на имеющихся данных).
Удивило, что для доски 15x15 точность равна 0,00028.
Точность на 27x27 равна 0,0186 (при точности Benoit Cloitre 0,0879) - более чем в 4 раза лучше.
Еще один компонент формулы мне не нравится, опять же надо калибровать.

Думал, что решения четных и нечетных досок должны подчиняться разным закономерностям. Но это не так.
Цифры страшенные получаются. Любые алгоритмы перебора в принципе никогда не справятся.
Excel выдержал расчет количества решений для досок до 150x150.

Что скажете, в этом есть какая-то ценность?

Полезная ссылка:
https://oeis.org/search?q=A000170
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526457
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276,

конечно, есть.

При желании, опубликовать можно. У буржуев есть онлайн журнал по комбинаторике, есть arxiv.org
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526490
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98, а я о своём безотносительно текущей ценности.
Себе уже не верю. Пробую схематично повторить здесь факты из в/алгебры.
Каждое {А^k} конечно, след-но когда-нить цепочка (траектория) повторится (к=р - наименьшее такое).
Тогда предпоследний в цепочке Ар = Е, Ар-1 = А-1 = А*.
Т.о. {А^k} - ЦГ порядка р. при любом А, в т.ч. и для наших правильных А.
ЦГ - не пересекаются либо полностью подмнож-во одно другого.
Отсюда сразу следует, что А2 не образует самостоятельную траекторию, иначе бы с неё начиналась другая цепочка, а они не могут пересекаться.

Ниже для А - правильных.
Также следует и то, что если А - правильн, тогда А2 (если порядок больше 3) не будет правильн (т.к. у каждой правильн своя траектория, и пересекаются только в Е).
При р=3 имеем только {А, А*, Е}.
Аналогично, никакая Аi из {А^k} не образует самостоятельную траекторию и одновременно она неправильн при р из [2, n-2].
В итоге получилось док-во гипотез для всех N (выдвинутых при N=8).

С другой стороны, ЦГ A порядка, скажем 12, можно разложить в прямое произведение ЦГ-3 и Цг-4, т.е. в виде всех пар {bi*cj}, 3 и 4 - взаимопростые множители.
В скобочной форме записи перестановок это выглядит типа (123)(4)(5)(6)(7)(8) * (1)(2)(3)(4567)(8)
Пример.
А= (1482)(356)(7) - правильн.
В=(1482)(3)(5)(6)(7) , С= (1)(4)(8)(2)(356)(7) - неправ.
А= В*С = С*В
То есть некоторые правильн можно получать получать произведением спец. неправильных. Как генерить эти спец, стоит ещё подумать.

Теперь хочется проверить ещё гипотезу.
А * В = С - неправ., если А и В правильные, т.е найденные траектории нельзя получить друг из друга умножением на правильную.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526591
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

немного запутывает дело терминология "правильности" перестановки, т.к. уже есть правильные матрицы и искомая расстановка ферзей как раз соответствует некоторой правильной матрице, но с дополнительным условием правильности - отсутствием атак по диагонали.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526638
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где раздел терминов? шучу ... я изначально здесь говорю так:
Есть единичная матрица Е.
Перестановками строк получаем все остальные. Всего N! матриц.
Среди них только некотрые удовлетворяют правилам расстановки фишек для классич. задачи N-фишек. Их я зову правильными. (для n=8 их 92)
Ак - эквивалент A^k
Ар - эквивалент A^0 = A^p, p - порядок ЦГ
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526642
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, фигово, когда одни просто правильные, а другие более правильные )
Я пишу соответственно неправильные / правильные.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526676
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А подкиньте, кому нетрудно, на пропитание правильные расстановки для N=9, штук 10-20 без симметрий. Одна у меня есть (13786254)(9).
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526707
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте базу заведем. Я как бывший базовик могу взять на себя часть усилий.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526715
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98А подкиньте, кому нетрудно, на пропитание правильные расстановки для N=9, штук 10-20 без симметрий. Одна у меня есть (13786254)(9).

https://www.ibm.com/developerworks/community/blogs/HermannSW/resource/BLOGS_UPLOADED_IMAGES/n-queens_xsl.pdf?lang=en
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526723
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Вообще, фигово, когда одни просто правильные, а другие более правильные )
Я пишу соответственно неправильные / правильные.

Об этом речь.
Сносит крышу, когда правильную матрицу называют неправильной.
Называй по-другому как-нибудь, например, красивая )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526782
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему-то вспомнились фундаментальные частицы из физики. С довольно странными названиями
типа кварк "красивый", кварк "прелестный" и т.п. Либо физики объединились в творческом экстазе
с лириками либо это был просто троллинг уставших от прагматизма теоретиков.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526803
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тут неплохой словарик
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526893
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как хранить найденные матрицы?

Если база - то оптимально положить вектор ферзей в строку. Причём так положить чтобы
Учесть поиски остаточных решений. А также учесть в логике презентации (view)
Повороты и отражения.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526946
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovexp98Вообще, фигово, когда одни просто правильные, а другие более правильные )
Я пишу соответственно неправильные / правильные. Об этом речь.
Сносит крышу, когда правильную матрицу называют неправильной.
...Но приговор с издёвкой
И не согласен вовсе я,
Меняй формулировку! (с)

Чем же она правильная? правильная для ладей?
- 2*2= ?
- ну там 7, 8, но ни как не 9.
- Ответ немножко правильный, но 7 более правильный, т.к. в стандартной метрике он ближе к искомому.

Или расчётный счёт для платежа правильный, но не совсем. А, ерунда, попробуйте на другой счёт, может получится.

Они все просто даны в исходном множестве перестановок из Е. Других матриц у меня для вас нет.
А правильными везде называют искомые, у людей во всяк случ. Стало быть остальные неправильные. 2-значная классическая логика.

Как раз разные там немножко правильные, чуть более чем немного менее правильные, по-другому правильные и т.п. -- вот это не как у людей. Привычка - дело такое ...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39526960
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКак хранить найденные матрицы? Если база - то оптимально положить вектор ферзей в строку Да может банально в 4 столба? id, num, row, col ? для начала. К полю по его номеру доступаться не комильфо. Тем более рекуррентно доступаться.
Вопрос другой, как долго хранитель будет хранить?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527017
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Aleksandr Sharahovпропущено...
Об этом речь.
Сносит крышу, когда правильную матрицу называют неправильной.
...Но приговор с издёвкой
И не согласен вовсе я,
Меняй формулировку! (с)

Чем же она правильная? правильная для ладей?...


Именно. В алгебре правильной матрицей часто называют матрицу без полностью нулевых строк и столбцов. Иногда различают правильные по строкам и правильные по столбцам.

Но нам пофиг, конечно. А чтоб нас ваще никто не понял простыми назовем все числа, кратные 2, а четными все степени двойки )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527040
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Демагогия не в названиях. Видите ли, эти - неправильные, но мы их и не используем ...
Здесь читать, здесь не читать, а здесь это мы рыбу заворачивали ... А зачем тогда о них вспоминать? Тем более не годится отсылка к тому, что ежели кто-то где-то иногда застолбил это название за другим свойством ... КМ не показатель - там как раз аналогов не было.

В любом случае я 3 раза давал определение и поступил более логично, да и научно. И продолжу его придерживаться:
- Определил рассматриваемое мн-во
- Разделил его на 2 класса
- Именовал классы (важно!) как можно более естесственно.

Без вот этого предварительного шага:
- Вспоминаем всё множество.
- Забываем его бОльшую часть, но именуем её.
- .....
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527049
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

да я не против, не пойми меня неправильно )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527126
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык и я всего лишь иронизировал
только на демагогию у меня рефлекс, трудно смолчать
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527262
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, правильно я понимаю, что любой из алгоритмов перебора так или иначе имеет три блока:

1. Перебор ладейных матриц (нет пересечений ферзей по горизонталям и вертикалям)
В сущности это достигается обычной перестановкой в комбинаторике, количество матриц = N!

Асимптотическая формула количества таких матриц = КОРЕНЬ( 2 * ПИ() * N ) * ( N / EXP(1) ) ^ N
Для доски 100x100, количество ладейных матриц = 10^158

2. Проверка матриц по диагоналям (нет пересечений ферзей на диагоналях) - неуникальные решения задачи

Асимптотическая формула количество решений = КОРЕНЬ( 2 * ПИ() * M ) * ( M / EXP(2) ) ^ M , где M = N +1
Для доски 100x100, количество неуникальных решений = 10^116

3. Проверка решений на уникальность и подсчет количества решений.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527278
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так уж однозначно не скажу:
1) - да, по формуле Стирлинга
2) - да, формулой не интерсовался
3) - как вариант

Можно добавить
4) Управление перебором / фильтрация (подряд / локальные поиски / рекуррентные поиски / ассоциативные поиски ...)
Для задачи с начальным расположением п.4 актуален.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527286
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Не совсем. Просто рекурсия или цикл по строкам.
2. Проверка по столбцам и диагоналям выполняется одновременно.
3. Проверка на уникальность нужна только при генерации всех расстановок с учетом симметрии.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527289
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточнение:
3. ... с учетом *полной* симметрии (вращение и зеркало).
Если только зеркало, то уникальность не нужно проверять.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527293
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276,

Какая польза в выделении ладейных матриц? Они уже учтены в общем ферзевом алгоритме. И нам от них нет пользы.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527314
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonКакая польза в выделении ладейных матриц? Они уже учтены в общем ферзевом алгоритме. И нам от них нет пользы.

По ощущению, каким бы способом мы не проверяли доску на свободные вертикали-горизонтали, быстрее чем через комбинаторную перестановку вектора N (описывающего как раз ладейные матрицы) - проверку сделать не получится.

Но рассудит нас только алгоритм. Буду рад ошибиться
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527318
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да это верно. Мы будем комбинировать ладей. Но если ладья №254 вдруг стала на диагональ с ладьей №255
то мы можем прервать итерацию. Нам нет смысла достраивать оставшихся 745 ладей для финала итерации.
Тоесть расстановка ладей прервана.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527354
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98maytonКак хранить найденные матрицы? Если база - то оптимально положить вектор ферзей в строку Да может банально в 4 столба? id, num, row, col ? для начала. К полю по его номеру доступаться не комильфо. Тем более рекуррентно доступаться.
Вопрос другой, как долго хранитель будет хранить?
Я думаю что хранить удобно денормализованно. В виде вектора номеров горизонталей. По верикали - просто
последовательность поэтому ее можно поскипать.

Например для доски 10х10:

IDQueenVector02,4,6,8,10,1,3,5,7,9

И я бы добавил лидирующие нули для того чтобы сделать запись позиционной. Тогда и разделители можно убрать.

IDQueenVector002040608100103050709

Для доски 10х10 будет соотв. два знакоместа под номер горизонтали. А для доски 1000х1000
надо будет три знака 000..999

Почему мне захотелось убрать запятые и сделать позиционность? Ну... КМК для решения задачи
"остаточных ферзей" нам нужно будет искать по шаблону все расстановки в которых
требуемые места забиты шаблоном а все остальные - метасимволом % или _ (в терминологии SQL).

Пример:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create table queen10x10(
 id number primary key,
 queenvector varchar(20) not null,
 constraint queen_unq unique (queenvector)
);
....

select * from queen10x10 where queenvector like '02__06__10__03050709';



По поводу зеркал... ну... ХЗ. Цена вопроса - размер. Если не жалко - то хранить. Если жалко - то
преобазовывать при поиске в набор шаблонов.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527367
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для чего нужны расстановки в базе данных?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527417
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока не знаю. А для чего нужен этот топик?
Вы знаете... в математике самый запрещенный вопрос - "для чего".

Ни для чего. Просто - поток мозгового сознания контролирует топик.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527550
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, призываю к вашему опыту.

Понимаю, что не хватает мастерства в программировании.
Не могу найти/сделать быстрый алгоритм генерации N-перестановок. Все варианты не нравятся.

Пишу на дельфи, на входе N и вектор текущего решения S[1..N]
Алгоритм, естественно, нерекурсивный.

Пример: S = 12345, N=5
Генерируем: 12354, 12534, 12543 и тд. все N!-1 перестановок.

Хочется изящное простое решение, может кто его знает?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527552
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276Хочется изящное простое решение, может кто его знает?
гугл знает 100-пудово
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527554
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527565
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276Коллеги, призываю к вашему опыту.

Понимаю, что не хватает мастерства в программировании.
Не могу найти/сделать быстрый алгоритм генерации N-перестановок. Все варианты не нравятся.

Пишу на дельфи, на входе N и вектор текущего решения S[1..N]
Алгоритм, естественно, нерекурсивный.

Пример: S = 12345, N=5
Генерируем: 12354, 12534, 12543 и тд. все N!-1 перестановок.

Хочется изящное простое решение, может кто его знает?

Найдешь быстрее, компенсирую разницу )) http://guildalfa.ru/alsha/node/26
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527624
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как правильно смотреть на задачу про ферзей

представьте пароль, который надо узнать:
j9320i09kimvmwl,dpo23kf98ij(FJ(HUGH4ujg3jfifjiokk4ghbcnhbeuhb34y8hUFHuhUh843hf83uhfuHFUHuigh34hik1kjwnefjknvr
его можно узнать только методом перебора, иначе запутаешься в проверенных значениях
но очень хочется узнать его Сразу и Весь
за "целый" миллион
(а пароль открывает двери для всего на свете...)

зы: нигде в природе не видел подобных решений в принципе
зыы: и зеркалирование им тут не подойдёт )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527628
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чорт ! Одни делфисты
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527648
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78 как правильно смотреть на задачу про ферзей
представьте пароль, который надо узнать ... его можно узнать только методом перебора ...но очень хочется узнать его Сразу и Весь Так и хочется ответить, что гладко было на бумаге, да забыли про овраги.
Тем не менее, наука умеет много гитик. Наводка на реальность. Сделали Вин-95. Там тоже надо было вводить пароль однако ...

quot ex1276] навскидку: 12345... - единичная матрица, оно же самое маленькое число. Тупо суммируем с единичкой, с переносом, по модулю N.
Сорри, если чево не так.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527654
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78представьте пароль, который надо узнать:
Ещё одна гитика из жизни. На уроке программирования чел. доказывает, чтобы упорядочить числа, надо сравнить каждое с каждым. Иначе как ты узнаешь кто из них больше? Преп намекнул, что сравнение транзитивно ...

Могу согласиться только, что зеркалирования недостаточно.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527673
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276, выше мой вариант не проходит, последовательность меняет монотонность ... хватит с меня.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527911
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из ссылки, данной на ИБМу, вытащил расстановки для N=9 (и кажется одну забыл) написано: решений = 46 / 352.
136824975 = (1)(23648795)
137285946 = (1)(23796584)
138692574 = (1)(23875946)
146392857 =
146825397 =
147925863 =
148397526 =
157938246 =
157942863 =
159642837 =
168374295 =
174835926 = (1)(27965348)
174839625 =
241796358 = (12473)(598)(6)
247139685 = (124)(37695)(8)
248396157 =
249731685 =
249753168 =
257936418 =
257948136 =
258136974 =
258196374 =
258693147 =
258693174 =
259418637 = (125)(39768)(4)
261379485 = (8)(12695743)
261753948 =
261958473 =
263184975 =
269358417 =
275194683 =
279631485 =
281479635 =
285396417 =
286931475 = (128749536)
358296174 = (1387)(2594)(6)
358297146 = (138425967)
359247186 = (13967)(254)(8)
362951847 = (1326)(/4978)(5)
368159247 = (1384)(2697)(5)
368519724 =
369741825 =
372859164 =
386192574 = (136287594)
427918536 = (2)(14968375)

Хочу отметить вещи в меру своего понимания, известные уже либо неверные. Вдруг кого-то вдохновит.

Раскладываем правильную перестановку матрицы в суперпозицию циклов.
9 = разложение в сумму чисел (что-то мог пропустить)
9 +0
1+8
2+7
2*х +у
3+6
3+5+1
4+5
3+3+3
3+3+ * +*
4+4+1
Вещь такая. Наличие 2 - брутальное транспонирование 2-х элементов - неправильная м-ца
Наличие от двух 3 - скорее всего не пройдёт из-за диагоналей
3+6 - кажется просто теоретически невозможным
Наличие от двух 1 - фишки на главной диагонали.

Остаются классы
9
1+8
3+5+1
4+4+1

1) Не они ли дают тот самый блочный метод?

2) В классе у разложений одинаковый порядок р в силу цикличности разложений
Код: plsql
1.
2.
3.
4.
5.
class  p  count(p)
9  ?  ?
1+8   ?  ?                 -- их меньше чем для 9 ?
3+5+1  3*5=15   ?  
4+4+1   4*4=16  ? 

3) Наличие от двух 3 (от 3-х 4 и т.п.) - на больших размерах наверняка существуют.

Есть мнения?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527922
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и базячка пригодится. Чтоб ваши гипотезы обкатать. И не на жлобском поле 9х9.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527936
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВот и базячка пригодится. Чтоб ваши гипотезы обкатать. И не на жлобском поле 9х9.

Простые гипотезы можно проверять, задавая начальное положение для большого N>=50000.
Практически невозможно задать начальное положение нескольких ферзей, чтобы не было завершения.
Даже для 25000 ферзей находятся завершения.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39527951
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы мне увы... Душа требует водки а мозк новых задач с ферзями и конями.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528140
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonжлобском поле 9х9. Замечу, что данный топик порождён как раз на основе жлобских размеров. Как и многое другое в теории чисел.

Вчерашний труд завершил (за что наверняка получу пендаля от начальства), пока каждую приходится копи/вставкой в силу несовершенства запроса.
Замечен французский перевёртыш
174839625 = (1)(27 69 5348)
174835926 = (1)(27 96 5348)

N=9, 46/352
357142869 = (13786254)(9) ...
136824975 = (1)(23648795)
137285946 = (1)(23796584)
138692574 = (1)(23875946)
146392857 = (1)(2436)(5978)
146825397 = (1)(24897365)
147925863 = (1)(24937865)
148397526 = (1)(2438)(5967)
157938246 = (1)(2537)(4968)
157942863 = (1)(25493786)
159642837 = (1)(2546)(3978)
168374295 = (1)(26438957)
174835926 = (1)(27965348)
174839625 = (1)(27695348)
241796358 = (12473)(598)(6)
247139685 = (124)(37695)(8)
248396157 = (12438597)(6)
249731685 = (12476)(395)(8)
249753168 = (1247)(3986)(5)
257936418 = (12537498)(6)
257948136 = (125496837)
258136974 = (12538794)(6)
258196374 = (12594)(387)(6)
258693147 = (12597)(3846)
258693174 = (125946387)
259418637 = (125)(39768)(4)
261379485 = (12695743)(8)
261753948 = (1263)(4798)(1)
261958473 = (12687493)(5)
263184975 = (1264)(5879)(3)
269358417 = (1268)(3974)(5)
275194683 = (12764)(359)(8)
279631485 = (395)(12746)(8)
281479635 = (1283)(5769)(4)
285396417 = (128)(35974)(6)
286931475 = (128749536)
358296174 = (1387)(2594)(6)
358297146 = (138425967)
359247186 = (13967)(254)(8)
362951847 = (1326)(4978)(5)
368159247 = (1384)(2697)(5)
368519724 = (13826945)(7)
369741825 = (139547826)
372859164 = (1327)(4869)(5)
386192574 = (136287594)
427918536 = (2)(14968375)
Просто интересно, кто не понимает, что за выражениями (1327)(4869)(5) стоит произведение матриц, причём "неправильных" в целом и оно коммутативно?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528238
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksandr SharahovПрактически невозможно задать начальное положение нескольких ферзей, чтобы не было завершения.
Даже для 25000 ферзей находятся завершения.

Вы попробуйте предустанавливаемых ферзей ставить ближе к центру. Например в центральном квадранте.
Интересно сможет ли алгоритм найти решения хотя бы при 100 центральных ферзях на поле 50 000.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528251
ex1276
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может нам устроить тогда гонку размерности решений.
Надо придумать способ представить решение в кратком, наглядном и удобоваримом для интернета виде.
Может так:

N-размерность, дата, автор решения, алгоритм, время поиска в чч:мм:cc
X1,X2,X3,X4...XN

Хотя решение на 50 000 займет 250 Кб, а на 1 млн = 6 Мб.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528314
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ex1276Aleksandr SharahovПрактически невозможно задать начальное положение нескольких ферзей, чтобы не было завершения.
Даже для 25000 ферзей находятся завершения.

Вы попробуйте предустанавливаемых ферзей ставить ближе к центру. Например в центральном квадранте.
Интересно сможет ли алгоритм найти решения хотя бы при 100 центральных ферзях на поле 50 000.

Попробовал на поле 50000х50000 в центральный квадрат 25000х25000 случайно ставить 12500 ферзей.
Завершение нашлось во всех 10 проведенных тестах.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528340
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибки точно нет? другие подтверждают подобное?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528345
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вызывает вопросов почему при доле удачи на 46 порядков меньше, не удаётся промахнуться? С отладкой ГУИ, обычн наоборот, сколько его ни тестируй, юзер в первый же день наткнётся на фигню.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528360
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно взглянуть с т.зр. теории кодирования. С какого момента нач-ая позиция становится префиксным кодом? Подразумеваю, что кодируем 2 значения, т.е. как бы имеем 2 вида хэшей - прав и неправ. Мож надо грамотней сформулировать ...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528367
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Ошибки точно нет? другие подтверждают подобное?

Ошибки нет. Четверть поставленных ферзей еще оставляет достаточно степеней свободы для поиска завершения. Примерно при 15000 ферзей завершения уже находятся не с первой попытки, а затем и вовсе перестают находиться.

Кто другие? Скомпилируй и стань другим )
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528384
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov Скомпилируй и стань другим ) кто доказал, что исходники без ош?

Но я другое хотел сказать, может твоя статистика про 25% в этом русле.
Давным-давно возникала т.н. "алгоритмическая проблема разрешимости для полугрупп с конечным числом образующих" (не знаю, возможно, что на сегодня она породила кучу детализированных подпроблем )

У нас же группа, т.е. частный случай ПГ.
Так вот был результат, вроде такого (за диапазоны не ручаюсь), что если образующие налезают друг на друга до 1/4 своей длины, то проблема разрешима. Если от 1/3 - нет. В промежутке - как сложится.
ПГ представляются в виде слов из алфавита + определяющие комбинации слов наподобие таблицы умножения. Более точно формализовать наш случай сейчас не смогу. Просто вывод сходный: чем больше начальных данных, тем надёжней классифицировать, если доля неоднозначностей не очень большая.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528389
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98кто доказал, что исходники без ош?

Совсем не требуется, чтобы исходники были без ошибок )

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

Вещи кажутся невероятными до тех пор, пока к ним не привыкли. Но это проходит.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528437
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если проверялка в другой проге, то мой вопрос доказательства был о ней. Правдободобность не означает достоверности. А для 10 тыс глазками проверять - стал быть д.б. прога, хоть бы и в эксэл, я так думаю.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528507
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Если проверялка в другой проге, то мой вопрос доказательства был о ней. Правдободобность не означает достоверности. А для 10 тыс глазками проверять - стал быть д.б. прога, хоть бы и в эксэл, я так думаю.

Не надо проверять ни другой прогой, ни глазами.
Достаточно вызвать простую функцию вроде этой:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
function IsSolutionValid: boolean;
var
  i, r, c: integer;
begin;
  FillChar(CountCol[0], BoardSize, 0);
  FillChar(CountDiagP[0], 2*BoardSize-1, 0);
  FillChar(CountDiagM[1-BoardSize], 2*BoardSize-1, 0);
  for i:=0 to BoardSize-1 do with QueenColRow[i] do begin;
    c:=QueenCol;
    r:=QueenRow;
    if (cardinal(c)>=BoardSize) or (cardinal(r)>=BoardSize) then exit;
    if CountCol[c]<>0 then exit;
    CountCol[c]:=1;
    if CountDiagP[c+r]<>0 then exit;
    CountDiagP[c+r]:=1;
    if CountDiagM[c-r]<>0 then exit;
    CountDiagM[c-r]:=1;
    end;
  Result:=true;
  end;
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528509
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, потерял строчку в начале функции
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function IsSolutionValid: boolean;
var
  i, r, c: integer;
begin;
  Result:=false;
  FillChar(CountCol[0], BoardSize, 0);
  FillChar(CountDiagP[0], 2*BoardSize-1, 0);
  FillChar(CountDiagM[1-BoardSize], 2*BoardSize-1, 0);
  for i:=0 to BoardSize-1 do with QueenColRow[i] do begin;
    c:=QueenCol;
    r:=QueenRow;
    if (cardinal(c)>=BoardSize) or (cardinal(r)>=BoardSize) then exit;
    if CountCol[c]<>0 then exit;
    CountCol[c]:=1;
    if CountDiagP[c+r]<>0 then exit;
    CountDiagP[c+r]:=1;
    if CountDiagM[c-r]<>0 then exit;
    CountDiagM[c-r]:=1;
    end;
  Result:=true;
  end;
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528541
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. мой предыдущий пост.

З.Ы. Ну и довольно, ведь так в лом было признаться, мол, питаем доверие к процедуре.
Типа см. сам и тоже питай доверие. Особенно, учитывая загадочные QueenColRow и CountDiagM ...

Если есть спортивный интерес, то ...
для N=9 самыми популярными разложениями оказались вида Card(4+4+1)=13 / 42 и Card(8+1)=16 / 42. Даже не удивлюсь, если заполнять ими (или пятёрками) до 60% , что всё равно будут ответы.
для 4+5 =1 /42, наверное доска маленькая, даже удивился
1+3+5 =9 / 42
9+0 =6 / 42
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528554
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98См. мой предыдущий пост.
З.Ы. Ну и довольно, ведь так в лом было признаться, мол, питаем доверие к процедуре.
Типа см. сам и тоже питай доверие. Особенно, учитывая загадочные QueenColRow и CountDiagM ...


Загадочный QueenColRow - массив положений ферзей,
а CountCol, CountDiagM, CountDiagM, - счетчики ферзей в столбцах и на диагоналях.

Да, я "питаю доверие" к оператору сложения, а ты?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528731
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovAleksandr Sharahov, потерял строчку в начале функции
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function IsSolutionValid: boolean;
var
  i, r, c: integer;
begin;
  Result:=false;
  FillChar(CountCol[0], BoardSize, 0);
  FillChar(CountDiagP[0], 2*BoardSize-1, 0);
  FillChar(CountDiagM[1-BoardSize], 2*BoardSize-1, 0);
  for i:=0 to BoardSize-1 do with QueenColRow[i] do begin;
    c:=QueenCol;
    r:=QueenRow;
    if (cardinal(c)>=BoardSize) or (cardinal(r)>=BoardSize) then exit;
    if CountCol[c]<>0 then exit;
    CountCol[c]:=1;
    if CountDiagP[c+r]<>0 then exit;
    CountDiagP[c+r]:=1;
    if CountDiagM[c-r]<>0 then exit;
    CountDiagM[c-r]:=1;
    end;
  Result:=true;
  end;



простите, а зачем писать так:
Код: pascal
1.
begin;
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39528751
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tactical Nuclear PenguinAleksandr SharahovAleksandr Sharahov, потерял строчку в начале функции
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function IsSolutionValid: boolean;
var
  i, r, c: integer;
begin;
  Result:=false;
  FillChar(CountCol[0], BoardSize, 0);
  FillChar(CountDiagP[0], 2*BoardSize-1, 0);
  FillChar(CountDiagM[1-BoardSize], 2*BoardSize-1, 0);
  for i:=0 to BoardSize-1 do with QueenColRow[i] do begin;
    c:=QueenCol;
    r:=QueenRow;
    if (cardinal(c)>=BoardSize) or (cardinal(r)>=BoardSize) then exit;
    if CountCol[c]<>0 then exit;
    CountCol[c]:=1;
    if CountDiagP[c+r]<>0 then exit;
    CountDiagP[c+r]:=1;
    if CountDiagM[c-r]<>0 then exit;
    CountDiagM[c-r]:=1;
    end;
  Result:=true;
  end;



простите, а зачем писать так:
Код: pascal
1.
begin;



простите, а почему вас не смущает, что написано так:
Код: pascal
1.
2.
  Result:=true;
  end;
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39529323
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tactical Nuclear Penguin а зачем писать так:
Код: pascal
1.
begin;

а в запросах я часто пишу так
Код: plsql
1.
2.
where  2=2
   and .... 

и зачем так делаю ...

авторДа, я "питаю доверие" к оператору сложения, а ты? остаётся питать доверие к "дельфийскому" оракулу.
По-видимому, ВБУ нас просто развели. Получается, что у каждого решения есть свой "родственник" - не решение. Ясно, что при N-1 уже не найдётся, а какая-нить прапрабабушка - да.

Вместо, чтоб искать завершение расстановок, надо искать начальные положения, к-рые невозможно завершить. А точнее, найти минимальное такое начальное положение, к-рое притворяется правильным. Начиная с 10к. Вот, к примеру, задачка в отдельную тему на 2,6 млн, баки клянчить у того же клейна.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39529364
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Вместо, чтоб искать завершение расстановок, надо искать начальные положения, к-рые невозможно завершить. А точнее, найти минимальное такое начальное положение, к-рое притворяется правильным. Начиная с 10к. Вот, к примеру, задачка в отдельную тему на 2,6 млн, баки клянчить у того же клейна.откуда такой вывод? их по идее куда больше
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39529380
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, это фантазия, во всяк Дмитрий затрудняется получить такую позу. Будет интересно узнать, что это не так.
А у меня, не вдаваясь в детали, первой реакцие было как раз, чо этого не мб. А теперь думаю наоборот, что возможно по причине редкости у каждой законченной позы и найдётся не очень близкий предок - их же много больше. Правда правильные позы не равномерн распределены, в каких-то разложениях они гуще. Тем интереснее.
Основываюсь только на словах в теме.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39529383
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Александра Ш, не дмитрия, то есть,
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39529742
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Вместо, чтоб искать завершение расстановок, надо искать начальные положения, к-рые невозможно завершить.

Вот, например, если взять решение для доски 5х5 и поместить в центр доски NxN (N-нечетное), то его можно будет завершить только при N>=25.

Или, например, решение для доски 6х6, помещенное в центр доски NxN (N-четное), невозможно завершить при N<=28 (при N>28 не проверял).

И что это дает?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39529745
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovИли, например, решение для доски 6х6, помещенное в центр доски NxN (N-четное), невозможно завершить при N<=28 (при N>28 не проверял).

Проверил: при N=30 завершения есть.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39529951
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovИ что это дает? отдельную тему на 2,6 млн, других задумок не было/
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532513
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаю свою мысль о permutations с пропусками. Нарисую поясняющую картинку.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532536
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так. Главное - как оптимизировать копирование массивов в рекурсию.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532688
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня не хватило терпенья нарисовать все 24 листа. Но 2 решения я обозначил.
Здесь выполняются условия оптимизации. Имеют места "отсечения" (по типу альфа-бет) заведомо тупиковых веток.
И процедура проверки "ферзей" под боем не зависит линейно от N=1000. Чему равна
средняя глубина дерева - можно прикинуть экспериментально.

Для 1000-й доски возможно не хватит стека чтобы сохранять состояние этого автомата
поэтому придется использовать Heap. В наихудшем случае это будет прогрессия 1000,999,998 e.t.c.
Тоесть приблизительно - полу-площадь шахматной доски. 500 тыс элементов. Для short
типа данных - это (2 байта на элемент) будет примерно 500 000 * 2 = 1 000 000 байт
или примерно 1 мегабайт стека массивов.

Алтернативный вариант - модифицировать вектор ферзей при каждом погружении
в рекурсию а при выходе наверх - восстанавливать. И возможно это не вектор а list.
Или версионный list.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532753
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

неясно, это поиск с возвратом или что-то другое?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532793
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Определённо это поиск. И возврат тоже есть. Но это не самые главные вопросы.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532798
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если это выглядит как утка ... ))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532799
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это утка. :)
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532877
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вчера накрапал. Есть много TODO-s. Но в целом. Работает.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
package mayton.chess;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.Nonnull;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import static java.lang.String.join;
import static java.lang.String.valueOf;
import static java.lang.System.out;

public class MtnQueensGenerator {

    static Logger logger = LoggerFactory.getLogger(MtnQueensGenerator.class);

    public static Integer tailElement(@Nonnull List<Integer> arg) {
        return arg.get(arg.size() - 1);
    }

    // TODO: Remove
    public static List<Integer> headElements(@Nonnull List<Integer> arg) {
        int n = arg.size();
        return arg.stream().limit(n - 1).collect(Collectors.toList());
    }
    public static List<Integer> subList(@Nonnull List<Integer> arg, int i) {
        if (arg == null) {
            throw new IllegalArgumentException("Array cannot be null!");
        }
        int n = arg.size();
        if (i < 0 || i >= n) {
            throw new IllegalArgumentException("Index is out of range");
        }
        if (i == 0) {
            if (n == 1) {
                return Collections.emptyList();
            } else {
                // TODO: Investigate for performance
                return arg.stream().skip(1).collect(Collectors.toList());
            }
        }
        if (i == n - 1) {
            // TODO: Investigate for performance
            return arg.stream().limit(n - 1).collect(Collectors.toList());
        }
        // TODO: Investigate for performance
        List<Integer> res = new ArrayList<>(arg.stream().limit(i).collect(Collectors.toList()));
        res.addAll(arg.stream().skip(i + 1).collect(Collectors.toList()));
        return res;
    }

    public static boolean isConsistent(@Nonnull List<Integer> q, int candidate) {
        int n = q.size();
        for (int i = 0; i < n; i++) {
            int qi = q.get(i);
            int deltai = n - i;
            int deltaRow = qi - candidate;
            if (Math.abs(deltaRow) == deltai) {
                return false;
            }
        }
        return true;
    }

    private static void printSolution(@Nonnull List<Integer> queens) {
        out.printf("Queens : %s\n", formatQueens(queens));
        out.printf("----------------\n");
        int n = queens.size();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                out.print(queens.get(i) == j ? "Q" : "*");
                out.print(" ");
            }
            out.println();
        }
        out.println();
    }

    // TODO: Replace with Guava or smth else
    static List<Integer> fromArray(@Nonnull int[] array) {
        List<Integer> res = new ArrayList<>(array.length);
        for (int elem : array) {
            res.add(elem);
        }
        return res;
    }


    public static String formatQueens(List<Integer> list) {
        StringBuilder sb = new StringBuilder("");
        sb.append(join(",", valueOf(list)));
        sb.append("");
        return sb.toString();
    }

    public static void process(int n, int level, @Nonnull List<Integer> candidates, @Nonnull List<Integer> selected) {
        if (selected.size() == n) {
            // TODO: Improove overloaded isConsistent
            if (isConsistent(headElements(selected), tailElement(selected))) {
                solutions++;
                printSolution(selected);
            }
        } else {
            for (int i = 0; i < candidates.size(); i++) {
                int newCandidate = candidates.get(i);
                if (isConsistent(selected, newCandidate)) {
                    List<Integer> newSelected = new ArrayList<>(selected);
                    newSelected.add(newCandidate);
                    process(n, level + 1, subList(candidates, i), newSelected);
                }
            }
        }
    }

    static int solutions = 0;

    public static void main(String[] args) {
        int n = 8;
        process(n, 0, fromArray(IntStream.range(0, n).toArray()), new ArrayList<>());
        out.printf("Solutions : %d", solutions);
    }

}

...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532932
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю... форкну тему в Java в части оптимизации массивов. Здесь - будем обсуждать алгоритмизацию
а техники language-related - лучше отдельно.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532994
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор взял и поудалял мои сообщения, хотя в коде реализации обсуждаемого алгоритма есть явные ошибки.
Модератор: Надо указывать на ошибки, а не разводить холивар с переходом на личности
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532996
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2, там нет major ошибок. Основной алгоритм-то работает? Работает.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532998
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

хуже нет, когда правильный алгоритм реализован с ошибками в коде. И потом получается, что на тестовых данных все работает, выпускаем в продакшн, начинаются непонятки.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39532999
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2, как вы определите какой алгоритм правильный а какой нет?

Шарахов реализовал расстановку ферзей. На тестовых данных она работает.

Я точно так-же поступаю. Супер-провидения насчет ошибок которых я не увидел
у меня нет. Модульные тесты + four eyes check. Вот на чем стоит весь ентерпрайз.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533000
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И если говорить о реализации, не увидел использования распараллеливания.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533001
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2И если говорить о реализации, не увидел использования распараллеливания.
А что он претендовал на это?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533002
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonasutp2, как вы определите какой алгоритм правильный а какой нет?

Шарахов реализовал расстановку ферзей. На тестовых данных она работает.

Я точно так-же поступаю. Супер-провидения насчет ошибок которых я не увидел
у меня нет. Модульные тесты + four eyes check. Вот на чем стоит весь ентерпрайз.Я не знаю, правильный алгоритм или нет (не вникал). Но я вижу опубликованный код конкретной функции на delphi, содержащей явные ошибки. Мне кажется, этого вполне достаточно, чтобы судить о качестве реализации. И предполагаю, что если таким же образом написан весь остальной код алгоритма, то правильность его работы вызывает как минимум сомнение.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533006
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сказать короче: там нет ошибок.

Чтобы утверждать другое, необходимо привести хотя бы один пример, когда функция выдает неверный результат.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533007
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сделал ему своё замечание касающееся стиля разработки. И коллаборации.

Кстати мой сорс опубликован здесь . Велкам.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533008
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Но я вижу опубликованный код конкретной функции на delphi, содержащей явные ошибки. Мне кажется, этого вполне достаточно, чтобы судить о качестве реализации.
Вы знаете. Функция которая складывает 2 числа типа integer УЖЕ содержит ошибки. Но они касаются
очень глубоких случаев behaviour когда переполняется разрядная сетка и надо принять решение.

Я уверен. Что ВЫ. Шарахов. И я. И все другие разработчики в 99.99% случаев не обращают
на это внимание. Хотя это баг, на который надо среагировать и покрыть это тестами хотя-бы
на уровне пограничных.

Но мы в энтерпрайзе обычно считаем что эти кейсов с переполнением нет и быть не может.
И именно поэтому мы НЕ считаем что функция с ошибкой. Мы просто считаем что ситуация
настолько маловероятна что не стоит с ней заморачиваться. Это как коллизия GUID. Она
теоретически есть но всем забить на нее болт ибо вероятнее вам по башке упадет метеорит.

Как то так.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533016
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovПопробовал на поле 50000х50000 в центральный квадрат 25000х25000 случайно ставить 12500 ферзей.
Завершение нашлось во всех 10 проведенных тестах.

поле 50000x50000 содержит 2.500.000.000 клеток. У Integer (в delphi) максимально возможное число 2.147.483.647. Как проводились тесты с наличием потенциальной ошибка переполнения из за используемых типов данных? И еще - для поля такого размера использовано всего 10 тестов?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533018
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНо мы в энтерпрайзе обычно считаем что эти кейсов с переполнением нет и быть не может.
И именно поэтому мы НЕ считаем что функция с ошибкой. Мы просто считаем что ситуация
настолько маловероятна что не стоит с ней заморачиваться. Это как коллизия GUID. Она
теоретически есть но всем забить на нее болт ибо вероятнее вам по башке упадет метеорит.Это вы за ВСЕХ в энтерпрайзе так говорите или только за себя?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533020
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Я не знаю, правильный алгоритм или нет (не вникал). Но я вижу опубликованный код конкретной функции на delphi, содержащей явные ошибки. Мне кажется, этого вполне достаточно, чтобы судить о качестве реализации. И предполагаю, что если таким же образом написан весь остальной код алгоритма, то правильность его работы вызывает как минимум сомнение.

Хватит пороть бред. От этого код не станет неверным.

Укажи конкретное место ошибки. Что должны получить и что получаем.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533026
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Aleksandr SharahovПопробовал на поле 50000х50000 в центральный квадрат 25000х25000 случайно ставить 12500 ферзей.
Завершение нашлось во всех 10 проведенных тестах.

поле 50000x50000 содержит 2.500.000.000 клеток. У Integer (в delphi) максимально возможное число 2.147.483.647.
И что? На твой взгляд, это имеет значение, когда мы ищем единственное завершение?


asutp2Как проводились тесты с наличием потенциальной ошибка переполнения из за используемых типов данных?
Весь код доступен. Диапазон количества решений известен. Не увидеть тип int64 невозможно. Глаза есть?
Зато есть непоколебимая уверенность в наличии ошибки.


asutp2И еще - для поля такого размера использовано всего 10 тестов?
Конечно, нет. Это была отладка.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533030
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Не понимаю зачем тут приплетать энтерпрайз? Тут не курсы для джунов, не надо тут демагогию на эту тему устраивать.
Какой вообще может быть энтерпрайз по расстановке ферзей?

Прекращаем обсуждать подходы и стили написания кода, т.к. топик совсем не про это.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533038
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2maytonНо мы в энтерпрайзе обычно считаем что эти кейсов с переполнением нет и быть не может.
И именно поэтому мы НЕ считаем что функция с ошибкой. Мы просто считаем что ситуация
настолько маловероятна что не стоит с ней заморачиваться. Это как коллизия GUID. Она
теоретически есть но всем забить на нее болт ибо вероятнее вам по башке упадет метеорит.Это вы за ВСЕХ в энтерпрайзе так говорите или только за себя?
Я говорю за себя и за то комьюнити которое меня окружает последние лет 10-15.
Ничего нового в оценке качества ПО не было придумано. Модульные тесты. UAT.
Акцептенс-тестинг. И всё. Никаких других магий не придумано для поиска ошибок.

И разумеется коде-ревью про которое я уже упоминал. И которое вообще ниочом
и просто гарантирует что коллега во время просмотра вашего кода ни разу не воскликнул
"Whats the fuck...".
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533053
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovasutp2Я не знаю, правильный алгоритм или нет (не вникал). Но я вижу опубликованный код конкретной функции на delphi, содержащей явные ошибки. Мне кажется, этого вполне достаточно, чтобы судить о качестве реализации. И предполагаю, что если таким же образом написан весь остальной код алгоритма, то правильность его работы вызывает как минимум сомнение.

Хватит пороть бред. От этого код не станет неверным.

Укажи конкретное место ошибки. Что должны получить и что получаем.

ок, укажу конкретное место ошибки в IsSolutionValid:

Код: pascal
1.
2.
var
  i, r, c: integer;


помним, что I может принимать значения в диапазоне [-2147483648..2147483647]
теперь смотрим цикл
Код: pascal
1.
for i:=0 to BoardSize-1 do


и смотрим в цикле код
Код: pascal
1.
if (cardinal(c)>=BoardSize) or (cardinal(r)>=BoardSize) then exit;


последний участок кода говорит о том, что BoardSize имеет тип Cardinal. Что говорит дока делфи о Cardinal? Это беззнаковый тип, хранящий значения в диапазоне [0..4294967295].
Значит при I: Integer и BoardSize: Cardinal имеем ситуацию, что при достижении I=2147483647 цикл выполнится, а затем прервется и проверка в большем диапазоне значений не будет выполнена (т.е. когда > 2147483647). Это нормально?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533054
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovВесь код доступенДоступен где? Ссылку плиз
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533071
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2ок, укажу конкретное место ошибки в IsSolutionValid:

Код: pascal
1.
2.
var
  i, r, c: integer;


помним, что I может принимать значения в диапазоне [-2147483648..2147483647]
теперь смотрим цикл
Код: pascal
1.
for i:=0 to BoardSize-1 do


и смотрим в цикле код
Код: pascal
1.
if (cardinal(c)>=BoardSize) or (cardinal(r)>=BoardSize) then exit;


последний участок кода говорит о том, что BoardSize имеет тип Cardinal.


Последний участок кода говорит о том, что использовано явное приведение переменной c к типу cardinal, и еще о том, что тебе пора в школу, учить уроки.
Переменная BoardSize имеет тип integer, и ты б это знал, если бы прежде чем делать выводы не поленился заглянуть в код.



asutp2Что говорит дока делфи о Cardinal? Это беззнаковый тип, хранящий значения в диапазоне [0..4294967295].
Значит при I: Integer и BoardSize: Cardinal имеем ситуацию, что при достижении I=2147483647 цикл выполнится, а затем прервется и проверка в большем диапазоне значений не будет выполнена (т.е. когда > 2147483647). Это нормально?
[/quot]
Опять же, если б ты учился на пятерки, то знал бы, что при установленном знаковом бите в значении BoardSize-1 цикл вообще не начнет выполняться. Опять двойка.

Это как раз тот случай, когда лучше молчать.




asutp2Aleksandr SharahovВесь код доступенДоступен где? Ссылку плиз

mayton, извини, придется ему отрыть тайну: http://guildalfa.ru/alsha/node/35
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533074
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovif (cardinal(c)>=BoardSize) or (cardinal(r)>=BoardSize) then exit;
Aleksandr SharahovПоследний участок кода говорит о том, что использовано явное приведение переменной c к типу cardinal
Aleksandr SharahovПеременная BoardSize имеет тип integer

Сравниваешь Integer с Integer, но первый Integer приводишь к Cardinal? Точно индусы курят нервно в стороне)))))
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533076
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Aleksandr Sharahovif (cardinal(c)>=BoardSize) or (cardinal(r)>=BoardSize) then exit;
Aleksandr SharahovПоследний участок кода говорит о том, что использовано явное приведение переменной c к типу cardinal
Aleksandr SharahovПеременная BoardSize имеет тип integer

Сравниваешь Integer с Integer, но первый Integer приводишь к Cardinal? Точно индусы курят нервно в стороне)))))

Для переменных типа integer этот код эквивалентен такому
Код: pascal
1.
if (c>=BoardSize) or (c<0) or (r>=BoardSize) or (r<0) then exit;



Ты не выучил урок "Прямое попадание" отсюда http://guildalfa.ru/alsha/node/20
Третья двойка. Второгодник.

Достал уже. Иди лечи свои комплексы.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533077
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йоу, посмотрел код по ссылке. Жесть.

Код: pascal
1.
2.
3.
4.
5.
const
  MaxBoardSize= 100000;
  CountCol: array[0..MaxBoardSize-1] of byte;   
  CountRow: array[0..MaxBoardSize-1] of byte;  
  CountDiagP: array[0..2*MaxBoardSize-2] of byte;

реально что ли используются статические массивы такого размера?
Код: pascal
1.
begin;

што?
Код: pascal
1.
2.
label
  NEXT1, NEXT2, NEXT3, PROC1, PROC2, PROC3, BACK1, BACK2, BACK3, FINISH;

на turbo pascal что ли пишешь?)

Не увидел по ссылке обсуждаемую выше функцию. Протухшая версия?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533080
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovasutp2пропущено...

пропущено...

пропущено...

Сравниваешь Integer с Integer, но первый Integer приводишь к Cardinal? Точно индусы курят нервно в стороне)))))

Для переменных типа integer этот код эквивалентен такому
Код: pascal
1.
if (c>=BoardSize) or (c<0) or (r>=BoardSize) or (r<0) then exit;



Да неужели. На основании каких таких размышлений ты пришел к такому выводу? наверное когда писал свои бредовые опусы?

Aleksandr SharahovИди лечи свои комплексы.Повторяешься насчет комплексов. У кого что болит, тот о том и говорит?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533083
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Йоу, посмотрел код по ссылке. Жесть.

Код: pascal
1.
2.
3.
4.
5.
const
  MaxBoardSize= 100000;
  CountCol: array[0..MaxBoardSize-1] of byte;   
  CountRow: array[0..MaxBoardSize-1] of byte;  
  CountDiagP: array[0..2*MaxBoardSize-2] of byte;

реально что ли используются статические массивы такого размера?

Реально. Один из способов получить быстрый код на Delphi.
На динамических придется дополнительно напрягаться, чтобы получить ту же скорость.
Нет смысла для учебной задачи.


asutp2
Код: pascal
1.
begin;

што?

В сад. Узбагойся.


asutp2
Код: pascal
1.
2.
label
  NEXT1, NEXT2, NEXT3, PROC1, PROC2, PROC3, BACK1, BACK2, BACK3, FINISH;

на turbo pascal что ли пишешь?)

Чукча не читатель? Это трансляция C-кода одного японца.

asutp2Не увидел по ссылке обсуждаемую выше функцию. Протухшая версия?
Эта функция не требуется для поиска решения.
Использую ее только для проверки найденного решения.

Но ты напишешь все свое, ведь правда?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533086
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Aleksandr SharahovДля переменных типа integer этот код эквивалентен такому
Код: pascal
1.
if (c>=BoardSize) or (c<0) or (r>=BoardSize) or (r<0) then exit;



Да неужели.


Еще одна двойка за домашку.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533094
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:facepalm: :facepalm: :facepalm:
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533095
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

где обещанные ошибки, эмоциональный ты наш?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533102
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вы и нудные оба. Тема - ферзи. Давайте обсуждать ферзей йопта...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533107
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Несмотря ни на что, есть определенная польза и от споров с нубами. Вот он затронул распараллеливание. Надо будет отразить в статье. Тут вскользь упоминалось уже, что это делается разложением по строке (строкам), вроде вычисления определителя матрицы. Кстати, у японца такая опция была. Но подход общий, годится и для поиска завершений.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533121
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Специально для господ-теоретиков я опубликовал несколько полных генераций ферзевой расстановки
для досок с 8х8 до 15х15 здесь https://sourceforge.net/p/chess-experiments/code/HEAD/tree/trunk/mayton/queen-problem/out/

Анализируйте. Пользуйтесь.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533124
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovmayton,

Несмотря ни на что, есть определенная польза и от споров с нубами. Вот он затронул распараллеливание. Надо будет отразить в статье. Тут вскользь упоминалось уже, что это делается разложением по строке (строкам), вроде вычисления определителя матрицы. Кстати, у японца такая опция была. Но подход общий, годится и для поиска завершений.
Какая польза от расчета определителя для нашей задачи? Это просто красивый пример который показыват
как работает мультипоточность с immutable-данными а работает она с ними отлично. Ты попробуй натянуть
сферическую мультипоточность на нашу задачу.

В нашей задаче что важно?
1) Для поиска случайного остаточного решения 1000х1000 - стартовать 4-8 вычислительных потоков с разными значениями
Random::seed. Далее все остальное сделает генератор случайности.
2) Для генерации всех остаточных решений 1000х1000. Для рекурсии. Грамотно распределить задания между 4-8 вычислительными
потоками в executor. Каждое задание - дочерняя ветка от родительской вершины. Самих заданий может быть во много раз
больше чем потоков вычисления. Поэтому большинство заданий будет стоять на паузе и ждать освобожения пула потоков.
Таковы реалии для нашего железа.

P.S. И что это такое "отразить в статье" ? Ты что журналист? Код давай...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533146
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Aleksandr Sharahovпропущено...


Для переменных типа integer этот код эквивалентен такому
Код: pascal
1.
if (c>=BoardSize) or (c<0) or (r>=BoardSize) or (r<0) then exit;


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

PS: хотя читерство, в пром-коде конечно лучше такое не применять, эту оптимизацию должен делать компилятор


mayton,
оч хорошо параллелится задача, диапазоны выдал потокам и всё
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533159
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)asutp2пропущено...

Да неужели. На основании каких таких размышлений ты пришел к такому выводу? наверное когда писал свои бредовые опусы?
читаем чем отличается "больше" от "выше", "меньше" от "ниже" и формат представления отрицательных чисел
читаем ВСЕ :) потом смотрим сгенерированный компилятором код для if Integer>=Integer, потом смотрим код для if Cardinal(Integer)>=Integer и сравниваем
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533173
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,
правильнее конечно обе части приводить, иначе поведение может быть очень странным в зависимости от компилятора
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533259
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)правильнее конечно обе части приводить, иначе поведение может быть очень странным в зависимости от компилятора

Совершенно верно. Именно так и предлагается делать в статье по ссылке, которую я приводил. При этом компилятор Delphi сгенерирует более эффективный код. На скорость поиска решений эта неточность не повлияет, т.к. код вызывается лишь один раз для проверки единственного найденного решения.

Надо отметить, что еще одна тонкость: в этом коде неявно предполагается, что BoardSize>0. В данном случае это допустимо, т.к. на входе во все процедуры поиска верхнего уровня стоит даже более строгая проверка на BoardSize>=4.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533270
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ нашей задаче что важно?
1) Для поиска случайного остаточного решения 1000х1000 - стартовать 4-8 вычислительных потоков с разными значениями
Random::seed. Далее все остальное сделает генератор случайности.
2) Для генерации всех остаточных решений 1000х1000. Для рекурсии. Грамотно распределить задания между 4-8 вычислительными
потоками в executor. Каждое задание - дочерняя ветка от родительской вершины. Самих заданий может быть во много раз
больше чем потоков вычисления. Поэтому большинство заданий будет стоять на паузе и ждать освобожения пула потоков.
Таковы реалии для нашего железа.


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

maytonP.S. И что это такое "отразить в статье" ? Ты что журналист? Код давай...

Да и это тоже. Код будет, разумеется. Но параллельно приходится оттачивать стиль изложения. У одержимых поиском ошибок становится модным трендом цепляться не только к оформлению кода, но и к словам.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533375
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

ты видимо из тех, кто любую критику, даже конструктивную, считаешь личным оскорблением, не?

Что касается спорного момента - сгенерированный код на асме подтверждает твои слова, что Cardinal(Integer)>=Integer работает быстрее чем Integer>Integer?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533387
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Aleksandr Sharahov,

ты видимо из тех, кто любую критику, даже конструктивную, считаешь личным оскорблением, не?

Что касается спорного момента - сгенерированный код на асме подтверждает твои слова, что Cardinal(Integer)>=Integer работает быстрее чем Integer>Integer?

Спасибо за найденную неточность в сообщении, опубликованном на данном форуме.

С правильным применением быстрой проверки попадания точки в диапазон вы можете ознакомиться по ранее данной вам ссылке в статье.

Конструктивная критика приветствуется.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533393
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovС правильным применением быстрой проверки попадания точки в диапазон вы можете ознакомиться по ранее данной вам ссылке в статье.

так может мы все таки посмотрим сгенерированный асм? Мне не понятно, почему в качестве аргумента правильности спорного момента нужно использовать твою же статью? В таких разночтениях необходимо обращаться к третьей стороне как минимум. Сгенерированный код в делфи как раз этой третьей стороной в данном случае и является.

Покажи код, и если я не прав, то я это признаю.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533417
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2, смотри:

В условиях, что все переменные имеют тип integer и BoardSize>0
нам надо выполнить такую проверку:
Код: pascal
1.
if (c>=BoardSize) or (c<0) or (r>=BoardSize) or (r<0) then exit;



утверждается, что достаточно проверить такое:
Код: pascal
1.
2.
if (cardinal(c)>=cardinal(BoardSize)) 
or (cardinal(r)>=cardinal(BoardSize)) then exit;



Причем потери скорости не произойдет, т.к. расширение типа не потребуется.

Чтобы трюк работал, достаточно, чтобы длина диапазона (в нашем случае 0..BoardSize) не превышала половины всего целочисленного диапазона.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533430
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahovasutp2, смотри:

В условиях, что все переменные имеют тип integer и BoardSize>0
нам надо выполнить такую проверку:
Код: pascal
1.
if (c>=BoardSize) or (c<0) or (r>=BoardSize) or (r<0) then exit;



утверждается, что достаточно проверить такое:
Код: pascal
1.
2.
if (cardinal(c)>=cardinal(BoardSize)) 
or (cardinal(r)>=cardinal(BoardSize)) then exit;



Причем потери скорости не произойдет, т.к. расширение типа не потребуется.

Чтобы трюк работал, достаточно, чтобы длина диапазона (в нашем случае 0..BoardSize) не превышала половины всего целочисленного диапазона.
Не силен в паскале, но если cardinal(Integer) это тоже самое что в C (unsigned int) int, то все верно. Т.к. процессором никаких преобразований операндов не делается, а просто компилятором используется команда беззнакового сравнения.
У знаковых целых знак хранится в старшем бите, 1 - отрицательное, поэтому при таком "преобразовании" положительные значения не меняются, а отрицательные всегда станут больше максимально возможного знакового положительного.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533452
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, накидал небольшую процедуру:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure TForm4.Button1Click(Sender: TObject);
var
  I1, I2, T: Integer;
begin
  I1 := 10;
  I2 := 5;
  if I1 >= I2 then
    T := 1;
  if Cardinal(I1) >= I2 then
    T := 1;
  if Cardinal(I1) >= Cardinal(I2) then
    T := 3;
  Button1.Caption := IntToStr(T);
end;



Теперь смотрим, что же генерит делфи 10.1 berlin:
Unit4.pas.30: I1 := 10;
005C9CC3 C745F80A000000 mov [ebp-$08],$0000000a
Unit4.pas.31: I2 := 5;
005C9CCA C745F405000000 mov [ebp-$0c],$00000005
Unit4.pas.32: if I1 >= I2 then
005C9CD1 8B45F8 mov eax,[ebp-$08]
005C9CD4 3B45F4 cmp eax,[ebp-$0c]
005C9CD7 7C07 jl $005c9ce0
Unit4.pas.33: T := 1;
005C9CD9 C745F001000000 mov [ebp-$10],$00000001
Unit4.pas.34: if Cardinal(I1) >= I2 then
005C9CE0 8B45F8 mov eax,[ebp-$08]
005C9CE3 33D2 xor edx,edx
005C9CE5 52 push edx
005C9CE6 50 push eax
005C9CE7 8B45F4 mov eax,[ebp-$0c]
005C9CEA 99 cdq
005C9CEB 3B542404 cmp edx,[esp+$04]
005C9CEF 7509 jnz $005c9cfa
005C9CF1 3B0424 cmp eax,[esp]
005C9CF4 5A pop edx
005C9CF5 58 pop eax
005C9CF6 770D jnbe $005c9d05
005C9CF8 EB04 jmp $005c9cfe
005C9CFA 5A pop edx
005C9CFB 58 pop eax
005C9CFC 7F07 jnle $005c9d05
Unit4.pas.35: T := 1;
005C9CFE C745F001000000 mov [ebp-$10],$00000001
Unit4.pas.36: if Cardinal(I1) >= Cardinal(I2) then
005C9D05 8B45F8 mov eax,[ebp-$08]
005C9D08 3B45F4 cmp eax,[ebp-$0c]
005C9D0B 7207 jb $005c9d14
Unit4.pas.37: T := 3;
005C9D0D C745F003000000 mov [ebp-$10],$00000003
Unit4.pas.38: Button1.Caption := IntToStr(T);
005C9D14 8D55E8 lea edx,[ebp-$18]

Хорошо видно, к чему приводит смешивание разных типов (хотя при этом они имеют одинаковую размерность)...
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533468
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Хорошо видно, к чему приводит смешивание разных типов (хотя при этом они имеют одинаковую размерность)...

Почему не написать в конструктивном ключе:

Идея верная и при правильном применении позволит выполнить необходимую проверку, уменьшив число сравнений в 2 раза. И даже если при реализации допустить неточность, которую мы обсуждаем уже 2 дня, будет потеряно не более 20 тактов CPU.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533542
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может разница в настройках компилятора? Всё же как легко оказалось затролить Александра.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533552
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

я не тролил Александра и не собирался. У меня просто возникло сомнения правильности использования конкретных конструкций и не более того. Когда сделает реальный алгоритм, решающий задачу топика, будет реально круто.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533597
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2У меня просто возникло сомнения правильности использования конкретных конструкций и не более того.

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

И вместо этого ты второй день продолжаешь мусолить абсолютно ни на что не влияющую неточность. Зачем?
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533668
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги. Ассемблер и его тонкости нисколько не помогают в данной задаче.
Она - математична по своей природе. А ассемблер просто нас уводит в глухой
Оффтопик.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533735
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКоллеги. Ассемблер и его тонкости нисколько не помогают в данной задаче.
Она - математична по своей природе. А ассемблер просто нас уводит в глухой
Оффтопик.
ассемблер это чистые биты, а они как раз эту задачу занимают чуть менее, чем полностью
сплошные 101010
mov тут вряд ли поможет, а вот например через AND можно всю строчку помечать, как занятую
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533770
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78ассемблер это чистые биты, а они как раз эту задачу занимают чуть менее, чем полностью
сплошные 101010
mov тут вряд ли поможет, а вот например через AND можно всю строчку помечать, как занятую
Для этого необязательно на асме писать. Битовые операции есть во всех ЯП.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533785
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78maytonКоллеги. Ассемблер и его тонкости нисколько не помогают в данной задаче.
Она - математична по своей природе. А ассемблер просто нас уводит в глухой
Оффтопик.
ассемблер это чистые биты, а они как раз эту задачу занимают чуть менее, чем полностью
сплошные 101010
mov тут вряд ли поможет, а вот например через AND можно всю строчку помечать, как занятую
Посмотри моё решение. Я сознательно ушёл от битовых операций.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533850
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78ассемблер это чистые биты, а они как раз эту задачу занимают чуть менее, чем полностью
сплошные 101010
mov тут вряд ли поможет, а вот например через AND можно всю строчку помечать, как занятую

На маленьких досках "битовый" алгоритм считает завершения в несколько раз быстрее обычного (примерно 4..8). Проблема с битами появляется на досках больше 32 (64), когда в языке нет типа нужной ширины. Там придется усложнять алгоритм и делать обычный цикл по строке. Возможно, имеет смысл потратить время на досуге, чтобы реализовать это и оценить преимущества.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533854
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovПроблема с битами появляется на досках больше 32 (64), когда в языке нет типа нужной ширины. Там придется усложнять алгоритм и делать обычный цикл по строке. Возможно, имеет смысл потратить время на досуге, чтобы реализовать это и оценить преимущества.
Сделай свой класс для работы с биткартой, там ничего сложного нет. Можешь мой срисовать .
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533856
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потерял PS: но сомневаюсь, что при N>=1000 битовый алгоритм поиска завершения будет иметь заметное преимущество перед обычным.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533866
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TAleksandr SharahovПроблема с битами появляется на досках больше 32 (64), когда в языке нет типа нужной ширины. Там придется усложнять алгоритм и делать обычный цикл по строке. Возможно, имеет смысл потратить время на досуге, чтобы реализовать это и оценить преимущества.
Сделай свой класс для работы с биткартой, там ничего сложного нет. Можешь мой срисовать .

Да, я и сам его рисовал мильен раз. Проблема не в классе.

Очевидно, что битовое решение выигрывает в случае малой доски потому, что вся строка представима одним числом. Как только это нарушается возникают проблемы. Допустим, сдвиг влево еще можно реализовать в цикле сложением с переносом. Но сдвиг вправо - это тормоз. И все 4-х кратное преимущество испарится. Плюс большая доска при росте становится все менее разреженной.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533870
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov,

все *более* разреженной.

Единственная оптимизация, которую можно безболезненно перенести в обычный алгоритм из битовых карт - это проверка столбцов. Но в этом есть и плюсы и минусы, надо проверять.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533871
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr SharahovОчевидно, что битовое решение выигрывает в случае малой доски потому, что вся строка представима одним числом. Как только это нарушается возникают проблемы. Допустим, сдвиг влево еще можно реализовать в цикле сложением с переносом. Но сдвиг вправо - это тормоз. И все 4-х кратное преимущество испарится. Плюс большая доска при росте становится все менее разреженной.
В алгоритм глубоко не вникал. Тебе виднее.

Что касается сдвигов, то одинаково в любую сторону: запоминаешь то что потеряется, сдвигаешь, переходишь к следующему, сдвигаешь, добавляешь то что потерялось на предыдущем сдвиге и т.д.
Если сдвиг на 1, то можно на асме вставку сделать, если не путаю там есть команды сдвига с запоминанием потерянного во флаг процессора.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39533881
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TAleksandr SharahovОчевидно, что битовое решение выигрывает в случае малой доски потому, что вся строка представима одним числом. Как только это нарушается возникают проблемы. Допустим, сдвиг влево еще можно реализовать в цикле сложением с переносом. Но сдвиг вправо - это тормоз. И все 4-х кратное преимущество испарится. Плюс большая доска при росте становится все менее разреженной.
В алгоритм глубоко не вникал. Тебе виднее.

Что касается сдвигов, то одинаково в любую сторону: запоминаешь то что потеряется, сдвигаешь, переходишь к следующему, сдвигаешь, добавляешь то что потерялось на предыдущем сдвиге и т.д.
Если сдвиг на 1, то можно на асме вставку сделать, если не путаю там есть команды сдвига с запоминанием потерянного во флаг процессора.

Да. Это понятно.

Но сразу получается, что мы шуроповертом пробуем починить часы. Битовый алгоритм сбалансирован и хрупок. Почти все переменные хранятся в регистрах. При таких исправлениях неизбежно добавляются новые переменные и появляется работа с памятью на запись и чтение, и отличия от обычного стираются. А в обычном мы одним IFом мы проверяем столбец и 2 диагонали, зато ничего не пишем в память. Правда IFы чаще.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39534232
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос возник.
Во-первых, может создать отдельно продолжение темы, но уже без денег в названии? ну не будет оно таким бурным, фигли, 20 стр уже, а дельного поискать ещё надо ... а эту закрыть.

Напомните, пжста, по конкретным(ому) обсуждаемым в теме алгоритмам(му). В контексте завершения начальной расстановки упоминался способ типа менять местами фишки, если новая фишка конфликтует по диагонали. Так вот плииз, какие варианты "мы" рассматривали в реализации: менять поочерёдно пары или, сразу 3-4 шт или более вместе?
Заранее спасибо за услугу.

И ещё сразу, чтб не плодить постов. В середине ещё темы думал, можно ли получать цепочки правильных матриц, перемножением правильных же. Молчаливо предполагая, что А^2 != А* (да и в исходных рассуждениях предполагал то же). Однако в разложениях такие цепочки не редкость, например для N=7. Я смотрел их таблицу умножения. И это видно хотя бы исходя из распределения по типам разложения для базовых - их количеств слишком много, чтобы произведения не пересекались с остальными.
У этих парные произведения дают правильные матрицы:
2 147 3625 (1)(243756)
4 25 147 36 (125763)(4)
6 2637415 (126)(475)(4)
неожиданно, что 2 * 4 похожа на 1-ю с симметрией
2*4 246 1357 (124)(365)(7)
1 1357 246 (1)(235)(476)
Наверное для бОльших N такие варианты встречаются чаще. Интересно, является ли подобное особенностью лишь варианта А^2 = А* ? Предположительно нет.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39534251
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Вопрос возник.
Во-первых, может создать отдельно продолжение темы, но уже без денег в названии? ну не будет оно таким бурным, фигли, 20 стр уже, а дельного поискать ещё надо ... а эту закрыть.

Напомните, пжста, по конкретным(ому) обсуждаемым в теме алгоритмам(му). В контексте завершения начальной расстановки упоминался способ типа менять местами фишки, если новая фишка конфликтует по диагонали. Так вот плииз, какие варианты "мы" рассматривали в реализации: менять поочерёдно пары или, сразу 3-4 шт или более вместе?
Заранее спасибо за услугу.

И ещё сразу, чтб не плодить постов. В середине ещё темы думал, можно ли получать цепочки правильных матриц, перемножением правильных же. Молчаливо предполагая, что А^2 != А* (да и в исходных рассуждениях предполагал то же). Однако в разложениях такие цепочки не редкость, например для N=7. Я смотрел их таблицу умножения. И это видно хотя бы исходя из распределения по типам разложения для базовых - их количеств слишком много, чтобы произведения не пересекались с остальными.
У этих парные произведения дают правильные матрицы:
2 147 3625 (1)(243756)
4 25 147 36 (125763)(4)
6 2637415 (126)(475)(4)
неожиданно, что 2 * 4 похожа на 1-ю с симметрией
2*4 246 1357 (124)(365)(7)
1 1357 246 (1)(235)(476)
Наверное для бОльших N такие варианты встречаются чаще. Интересно, является ли подобное особенностью лишь варианта А^2 = А* ? Предположительно нет.
с матричными перестановками только я возился кажется, итог - 20804736
как "сразу" менять я показывал где-то, есть критерий определённый (переполнение / 2), но на больших N это не сильно помогает

тут 20793306 как раз обобщение твоей идеи про наличием какого-то базиса, однозначно он есть, но что выражает - непонятно


моё текущее убеждение пока сводится к 20807838
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39534255
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Вопрос возник.
Во-первых, может создать отдельно продолжение темы, но уже без денег в названии? ну не будет оно таким бурным, фигли, 20 стр уже, а дельного поискать ещё надо ... а эту закрыть.


Поддерживаю. И флуд порезать можно.

exp98Напомните, пжста, по конкретным(ому) обсуждаемым в теме алгоритмам(му). В контексте завершения начальной расстановки упоминался способ типа менять местами фишки, если новая фишка конфликтует по диагонали. Так вот плииз, какие варианты "мы" рассматривали в реализации: менять поочерёдно пары или, сразу 3-4 шт или более вместе?
Заранее спасибо за услугу.


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

В версии "3*10^6 ферзей за 1 мин" авторы случайного алгоритма похоже использовали вариант 1н+3п. Но у них в слайдах явная ошибка, так что точно не скажу.


exp98
И ещё сразу, чтб не плодить постов. В середине ещё темы думал, можно ли получать цепочки правильных матриц, перемножением правильных же. Молчаливо предполагая, что А^2 != А* (да и в исходных рассуждениях предполагал то же). Однако в разложениях такие цепочки не редкость, например для N=7. Я смотрел их таблицу умножения. И это видно хотя бы исходя из распределения по типам разложения для базовых - их количеств слишком много, чтобы произведения не пересекались с остальными.
У этих парные произведения дают правильные матрицы:
2 147 3625 (1)(243756)
4 25 147 36 (125763)(4)
6 2637415 (126)(475)(4)
неожиданно, что 2 * 4 похожа на 1-ю с симметрией
2*4 246 1357 (124)(365)(7)
1 1357 246 (1)(235)(476)
Наверное для бОльших N такие варианты встречаются чаще. Интересно, является ли подобное особенностью лишь варианта А^2 = А* ? Предположительно нет.

Думаю, на больших N можно получить вообще что угодно - любую заранее заданную картинку.
Это легко проверить: ставишь ферзей, как хочешь и ищешь завершение.
Через минуту получаешь ответ, еще через секунду - результаты проверки решения.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39534316
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov, kealon(Ruslan) ,
спасибо, ага это хотел.
К сож на службе длительный период не для мозгования (

Матрицы, перестановки, комплексные корни из 1, повороты правильного плоского N-угольника ... - как больше нравится - это лишь для обоснования.

Что до базиса, тоже да, непонятно, что он такое. Тем не менее он существует, независимо от гипотез, т.к. существует и единственная минимальная подгруппа перестановок, к-рая содержит все правильные (и среди них много неправ-х). Строится конструктивно простым перемножением прав-х матриц и им транспонированных. Вопрос открытый достаточно ли взять только базовые? (к слову, базовые те -- из них симметриями получ остальные правильные)

Надежды на отображение в область континуумов. Например есть метод производящих функции ... но здесь какие-то невменяемые рекурентные сотнош-я энной степени, перебором пока ещё быстрее.
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39534337
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Вопрос открытый достаточно ли взять только базовые? (к слову, базовые те -- из них симметриями получ остальные правильные)это не вопрос.
если из них нельзя получить любые другие, то они уже не базовые :-)
но то что они есть, это однозначно!!!
...
Рейтинг: 0 / 0
Пятничная задачка для ума за 1 миллион $
    #39541272
Dr.Jones
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
расставить 1000 ферзей на доске 1000 на 1000 не сложно. Я написал программу которая расставила и 10К ферзей на 10к^2 доске. Но задача не об этом.
Модератор: По просьбе участников продолжение темы вынесено в отдельную http://www.sql.ru/forum/1273790/rasstanovka-ferzey
...
Рейтинг: 0 / 0
491 сообщений из 491, показаны все 20 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пятничная задачка для ума за 1 миллион $
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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