Есть у меня задача. Кажется простой, но в подробности можно углупляться долго.
Подсчитать количество разных, несамопересекающихся, неизоморфных петель на квадратной решётке.
Дана длина петли N.
Я пока решаю жёстко заоптимизированным перебором. Время расчёта растёт экспоненциально по N с коэффициентом 6. Но такое счастье нам не надо.
Кто придумает хотя бы идею лучшего решения - с меня пиво. Если это будет работающий код - пива будет много :)
Подсчитать количество разных, несамопересекающихся, неизоморфных петель на квадратной решётке.
Дана длина петли N.
Для N=4 ответ - 1:
_
|_|
Для 6 - 2:
__
|__|
_
| |
|_|
Для 8 - 7.
и те де.
Я пока решаю жёстко заоптимизированным перебором. Время расчёта растёт экспоненциально по N с коэффициентом 6. Но такое счастье нам не надо.
Кто придумает хотя бы идею лучшего решения - с меня пиво. Если это будет работающий код - пива будет много :)
Tags:
(no subject)
14/7/10 12:56 (UTC)(no subject)
14/7/10 13:00 (UTC)(no subject)
14/7/10 13:00 (UTC)Я смог придумать только 3 :(
--
| |
| |
--
---
| |
---
-
| |
| |
| |
-
Какую еще можно сделать петлю?
(no subject)
14/7/10 13:03 (UTC)так что, плз, дай понятие неизморфности в данном контексте - наклевывается решение
(no subject)
14/7/10 13:25 (UTC)(no subject)
14/7/10 13:26 (UTC)Есть кусочек, который я решаю динамическим программированием и мемоизацией, но в основе всё равно перебор 8(
Но если ты придумаешь, как - памятник тебе будет :)
(no subject)
14/7/10 13:29 (UTC)и т.п.
(no subject)
14/7/10 13:30 (UTC)(no subject)
14/7/10 13:32 (UTC)http://www.research.att.com/~njas/sequences/?q=1%2C2%2C7&sort=0&fmt=0&language=russian&go=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA
(no subject)
14/7/10 13:33 (UTC)(no subject)
14/7/10 13:34 (UTC)Вова штурмует
14/7/10 13:40 (UTC)например, если нам добавляют две палочки, то мы можем в каждой из N уже уложенных палочек приделать по выпуклому П-образному прыщичку
чему в среднем равно частное между f(N) и f(N+2) ? (singalen: ~5)
mwg: или, например, так : мы генерим сначала какую-то начальную/отправную петлю, например, прямоугольник единичной высоты, а потом получаем из неё следующие петли той же длины путём некоторого количества элементарных преобразований (доказать, что разных таких преобразований конечное число и что любой контур данной длины может быть сгенерён из любого другого конечным числом таких преобразований) :>
пока что вижу два простых преобразования - вгибание-выгибание угла, и одно посложнее - загиб прямоугольной палки , длина которой >2
два посложнее - ещё разгиб уже согнутой палки :>
вообще, траектории без самопересечений всё равно сводятся к конструкциям из кубиков (квадратиков). площадь их непостоянна, зато за длиной тракетории несложно следить в процессе построения. и главное, каждая фигура, сложенная из квадратиков по довольно простым правилам, и будет изоморфна непересекающейся тракетории той или иной длины.
и вот ещё - покажи значения функции для чуть бОльших аргументов (>8)
вдруг аппроксимацию придумаем ? если, конечно, интересно только количество, а не набор всех форм петель для каждого N.
(no subject)
14/7/10 13:43 (UTC)(no subject)
14/7/10 13:53 (UTC)Вот оно: http://www.research.att.com/~njas/sequences/A002931
У нас есть первый призёр!
(no subject)
14/7/10 14:19 (UTC)(no subject)
14/7/10 14:20 (UTC)(no subject)
14/7/10 14:22 (UTC)так как я кроме данных о кол-вах для размер до 55 (*2) так и не нашел.
(no subject)
14/7/10 14:23 (UTC)(no subject)
15/7/10 07:35 (UTC)(no subject)
15/7/10 08:19 (UTC)(no subject)
15/7/10 09:10 (UTC)(no subject)
15/7/10 09:21 (UTC)(no subject)
15/7/10 10:23 (UTC)Я пока вижу только одну проблему мы можем посчитать кол-во петель проходящих через некую вершину, но как определить кол-во петель которые являются не изоморфными в вашей постановке и не включают данную вершину не понятно :(
(no subject)
15/7/10 10:29 (UTC)Представьте себе более длинные петли. Они бывают невыпуклыми.
По незанятому проямоугольнику M*N из угла в угол можно провести 2^M различных линий (если M<N). А по занятому - бывает, можно всего одну, или ни одной. Ну, посчитайте все петли, и разделите на количество изоморфных. В простом варианте их будет 2N.
(no subject)
21/8/15 12:33 (UTC)