2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5 ... 8  След.
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение05.05.2013, 23:55 
Заслуженный участник
Аватара пользователя


28/07/09
1238
_Ivana в сообщении #719923 писал(а):
Да, найденные варианты асимптотически гораздо суровее, чем придуманный мной алгоритм - ходить вперед/назад, вперед все включать, назад все выключать, до первого расхождения с нашими представлениями о том, что мы уже включили/выключили, от выбранного раздела вагонов на величины из последовательности $1, 1, 2, 3, 5, 8, 13, ...$, где каждое следующее значение является суммой двух предыдущих.

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


Если я правильно понял ваш алгоритм, то вы "шагаете" числами Фибоначчи вместо наших степеней двойки. В таком случае наихудшее время (когда $N=F_{n-1}+1$) будет $2\cdot(1+\dots+F_n)-(F_n - F_{n-1})=2\cdot F_{n+2}-(F_n - F_{n-1})=N\cdot(2 \varphi ^3 - \varphi +1)$.
Это $\dfrac{3}{2}(3+\sqrt{5})N$, примерно $7,85N$. Равенства асимптотические, а $\varphi$ - золотое сечение.

-- Пн май 06, 2013 01:02:37 --

Этот максимум, кстати, не совпадает с вашим максимум на графике. Кто-то из нас ошибся, возможно я.

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение06.05.2013, 00:05 


05/09/12
2587
Legioner93, давайте сделаем так - вы напишете маленькое $N$ в котором по вашим расчетам мой алгоритм требует столько шагов, сколько вы написали - а я попробую написать вам по шагам, как я определяю это число и за сколько шагов.

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение06.05.2013, 00:10 
Заслуженный участник
Аватара пользователя


28/07/09
1238
_Ivana в сообщении #720228 писал(а):
Legioner93, давайте сделаем так - вы напишете маленькое $N$ в котором по вашим расчетам мой алгоритм требует столько шагов, сколько вы написали - а я попробую написать вам по шагам, как я определяю это число и за сколько шагов.

По моим рассчётам ваш алгоритм делает столько шагов на больших $N$, а не на маленьких :-)
Ну давайте $N=145=144+1$ (144 - число фибоначчи). Всё равно все шаги, кроме последнего, свернутся в "и т.д."

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение06.05.2013, 00:27 


05/09/12
2587
Терминология для определенности: + вперед, - назад, количество вагонов считается от некоей условной границы между вагонами, которую мы выбрали как старт. Соответственно, если мы сделали $n$ шагов в +, то чтобы вернуться в вагон №1 (от условной границы раздела) нам надо сделать $n-1$ шагов назад. Итак:
+1
-1
+2
-3
+5
-8
+13
-21
+34
-55
+89
-144
проделав все эти шаги и вернувшись в наш условный ноль, мы еще не узнали $N$, а сделали $740$ шагов (каждая строка умножается на 2, из результата вычитается 1 и это все суммируется построчно). Для узнавания $N$ нам теперь осталось сделать 2 шага в +, там мы увидим расхождение по свету в вагоне. Итого, $742$ шага, делим на $N$ - получаем $5.12$.

ЗЫ могли бы не жадничать и выбрать $N$ поменьше :-) Кстати, для $N=144$ мне потребовалось бы тоже максимальное относительно число шагов, потому что одно число Фибоначчи $144$ не опоясывает весь поезд с перехлестом.

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение06.05.2013, 06:52 
Заслуженный участник
Аватара пользователя


23/08/07
5492
Нов-ск
Если $2^{k-1} < N \le 2^k,$ то число вагонов находится за $2^{k+1}+N-1$ шагов, т.е. менее $5N$ шагов. Идем вправо на 1 вагон, меняем цвет вагона. Идем влево на 2 вагона, меняем цвет вагона. Идем вправо на 4 вагона, меняем цвет вагона. И т.д. Поиск завершен, когда на обратном пути обнаруживается изменение в цвете вагона.

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение11.05.2013, 10:35 
Заслуженный участник
Аватара пользователя


06/04/10
3152
У меня получился оптимальный множитель - не двойка и не множитель Фибоначчи. Результирующая константа меньше семи.

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение11.05.2013, 14:13 
Заслуженный участник
Аватара пользователя


06/04/10
3152
В задаче осталась единственная не обсуждавшаяся "заковыка" - а почему, собственно, достаточно рассматривать настолько узкий класс "алгоритмов?"
Видимо, следует считать ясным, что алгоритм обязан пройти какой-либо кусок длиной с поезд дважды.

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение11.05.2013, 14:16 
Заслуженный участник
Аватара пользователя


23/08/07
5492
Нов-ск
nikvic в сообщении #722271 писал(а):
У меня получился оптимальный множитель - не двойка и не множитель Фибоначчи. Результирующая константа меньше семи.
Какой же он оптимальный, если при двойке множитель меньше пяти?

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение11.05.2013, 15:00 


05/09/12
2587
nikvic, константы меньше $7$ уже получены выше: g______d и TOTAL получили $5$ (у них, насколько я понял, один и тот же алгоритм, первым его предложил g______d, а TOTAL потом просто перепостил его дважды), я с Фибоначчи получил $3+\sqrt{5}$. Никто не ограничивает рассмотрение любых алгоритмов - приведите свой вариант.
ЗЫ другое дело, в какую сторону "оптимизировать" алгоритм. Вот если, например, я придумаю алгоритм, который на бесконечности будет давать оценку $3N$, но при этом для $N<1000000$ будет во много раз хуже, чем $10N$ - это будет оптимальный алгоритм? Если придумать как ходить по прогрессии с коэффициентом к примеру $100$, и при этом включать/выключать вагоны, то это будет подобным алгоритмом.

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение11.05.2013, 15:21 
Заслуженный участник
Аватара пользователя


28/07/09
1238
_Ivana в сообщении #722356 писал(а):
Вот если, например, я придумаю алгоритм, который на бесконечности будет давать оценку $3N$, но при этом для $N<1000000$ будет во много раз хуже, чем $10N$ - это будет оптимальный алгоритм?

Да, будет. Точнее, он будет оптимальнее, чем все предыдущие.

Может ли кто-нибудь доказать, что если ходить взад-вперед числами $a_k$, то минимальное время будет при $a_k \sim 2^k$ при $k \to \infty$?

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение11.05.2013, 15:40 


05/09/12
2587
Legioner93 в сообщении #722364 писал(а):
Да, будет. Точнее, он будет оптимальнее, чем все предыдущие.
По оценке на бесконечности - да. Но на практике будут выбирать другие простые одножо (С Саус Парк) схемы.

Legioner93 в сообщении #722364 писал(а):
Может ли кто-нибудь доказать, что если ходить взад-вперед числами $a_k$, то минимальное время будет при $a_k \sim 2^k$ при $k \to \infty$?
Да можно тогда ходить не степенями двойки а любой стремительно возрастающей последовательностью. Например, первым этапом сделали $10^{10}$ ходов вперед, потом $10^{100000}$ ходов назад, потом 2 хода вперед - и нашли что мы в поезде из 2 вагонов :-)

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение11.05.2013, 15:42 
Заслуженный участник
Аватара пользователя


28/07/09
1238
Legioner93 в сообщении #722364 писал(а):

Может ли кто-нибудь доказать, что если ходить взад-вперед числами $a_k$, то минимальное время будет при $a_k \sim 2^k$ при $k \to \infty$?


Как-то так. Доказываю для хождения всегда вправо из нуля, т.е. для своей схемы (где получается $7N$ для степеней двойки). Для более эффективной схемы, предложенной позднее (ходить сначала вправо, потом влево) по-моему всё то же самое.

1) $\frac{a_{k+1}}{a_k} \ne \omega(1)$, потому что в противном случае $\sum\limits_{i=1}^{k+1}a_i \sim a_{k+1}$; при $N=a_{k}+C$ получаем, что $T \sim 2 a_{k+1} = \omega (N) \ne O(N)$

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

2) А из $\frac{a_{k+1}}{a_k} \sim 1$ следует, что асимптотически $\sum\limits_{i=1}^{k+1}a_i > C \cdot a_{k+1}$ для $\forall C$. То есть опять же получаем $T=\omega (N)$, причём теперь уже для вообще любого $N \in (a_k , a_{k+1}]$

Поэтому $1+\varepsilon<\frac{a_{k+1}}{a_k} < \infty$ (оба неравенства строгие). Для множества же всех геометрических прогрессий оптимальность $2^k$ доказывается тупым подсчетом суммы, который я уже приводил на первой странице.

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

-- Сб май 11, 2013 16:45:52 --

_Ivana в сообщении #722378 писал(а):
Да можно тогда ходить не степенями двойки а любой стремительно возрастающей последовательностью.

Нет

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение11.05.2013, 16:14 
Заслуженный участник
Аватара пользователя


06/04/10
3152
_Ivana в сообщении #722356 писал(а):
nikvic, константы меньше уже получены выше: g______d и TOTAL получили (у них, насколько я понял, один и тот же алгоритм, первым его предложил g______d, а TOTAL потом просто перепостил его дважды),

Да, я был неправ - нужно каждый ход увеличивать, я же смотрел двойные ходы туда-сюда.
Однако не в 2 раза, а в один + корень из половины, 1.707 - ищется нижняя точка ветви гиперболы.
С константой 4.828 :D

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение11.05.2013, 16:55 
Заслуженный участник
Аватара пользователя


23/08/07
5492
Нов-ск
nikvic в сообщении #722397 писал(а):
Да, я был неправ - нужно каждый ход увеличивать, я же смотрел двойные ходы туда-сюда.
Однако не в 2 раза, а в один + корень из половины, 1.707 - ищется нижняя точка ветви гиперболы.
С константой 4.828 :D
Больше пяти, пересчитайте.

 Профиль  
                  
 
 Re: Кольцевой поезд - найти число вагонов.
Сообщение11.05.2013, 17:29 
Заслуженный участник
Аватара пользователя


06/04/10
3152
TOTAL в сообщении #722423 писал(а):
Больше пяти, пересчитайте.

Если шагаем по геометрической прогрессии со знаменателем $a$, то $T \sim N (2a-1+\frac{a}{a-1})$.

Так получилось у меня. Последнее слагаемое - накопленный за "к" шагов путь, первые два - следующий шаг и частичный возврат.
Для Вашего варианта (из двойки) получаем пятёрку :wink: 5.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 108 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 8  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group