powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пятничная задачка для ума за 1 миллион $
25 сообщений из 491, страница 7 из 20
Пятничная задачка для ума за 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
25 сообщений из 491, страница 7 из 20
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Пятничная задачка для ума за 1 миллион $
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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