задачка №2, посложнее
Jun. 24th, 2005 11:54 pmгруппу из десяти пользователей ЖЖ сажают в тюрьму. сажают каждого в свою камеру, общаться после посадки они не могут. поодиночке их вызывают на допрос. на допрос вызывают в случайном порядке, то есть может оказаться, что, скажем, Мишу вызывали уже три раза, а Васю - ещё ни одного.
перед посадкой им сообщают, что если никто из них не расколется, то их отпустят. но только когда кто-то из них скажет "вы уже всех вызывали, и никто не раскололся, так что отпускайте нас". если же в этот момент окажется, что вызывали ещё не всех - то, наоборот, наказание будет чрезвычайно жестоким.
в комнате для допроса есть лампочка - очень тусклая, поэтому освещённости в комнате она практически не прибавляет, поэтому следователь не обращает внимания - горит она, или нет. пользователь ЖЖ может включать и выключать лампочку по своему усмотрению, следующий вызванный на допрос увидит лампочку в том же состоянии, в котором её оставит предыдущий.
перед разводкой по отдельным камерам пользователи ЖЖ оказываются вместе, и, зная про лампочку и про условие их освобождения, вырабатывают тактику, как им наверняка выйти на свободу.
главный вопрос: каков алгоритм действий пользователей ЖЖ, приводящий к успеху? бонус вопрос: сколько им в среднем придётся просидеть в тюряге? гм... слово "в среднем" здесь, наверное, не очень уместно... каково мат. ожидание срока, который им придётся отсидеть при условии, что следователь не напрягается и допрашивает каждый день только одногочеловека пользователя ЖЖ.
как и в прошлый раз, комменты будут скриниться по умолчанию и расскриниваться (кроме содержащих ответ) по мере их дохождения до меня.
да и вот ещё... комменты типа "эта задачка для 6 класса" без решения, или "эту задачку я уже видел [в интернете|в ЖЖ|где-то|в Ж]" я, пожалуй, буду удалять даже не расскринивая.
Update: победители (в порядке поступления):
sply
Update #2: Приём решений прекращаю (за исключением апдейтов типа мат. ожидания времени отсидки), комменты расскриниваю.
перед посадкой им сообщают, что если никто из них не расколется, то их отпустят. но только когда кто-то из них скажет "вы уже всех вызывали, и никто не раскололся, так что отпускайте нас". если же в этот момент окажется, что вызывали ещё не всех - то, наоборот, наказание будет чрезвычайно жестоким.
в комнате для допроса есть лампочка - очень тусклая, поэтому освещённости в комнате она практически не прибавляет, поэтому следователь не обращает внимания - горит она, или нет. пользователь ЖЖ может включать и выключать лампочку по своему усмотрению, следующий вызванный на допрос увидит лампочку в том же состоянии, в котором её оставит предыдущий.
перед разводкой по отдельным камерам пользователи ЖЖ оказываются вместе, и, зная про лампочку и про условие их освобождения, вырабатывают тактику, как им наверняка выйти на свободу.
главный вопрос: каков алгоритм действий пользователей ЖЖ, приводящий к успеху? бонус вопрос: сколько им в среднем придётся просидеть в тюряге? гм... слово "в среднем" здесь, наверное, не очень уместно... каково мат. ожидание срока, который им придётся отсидеть при условии, что следователь не напрягается и допрашивает каждый день только одного
как и в прошлый раз, комменты будут скриниться по умолчанию и расскриниваться (кроме содержащих ответ) по мере их дохождения до меня.
да и вот ещё... комменты типа "эта задачка для 6 класса" без решения, или "эту задачку я уже видел [в интернете|в ЖЖ|где-то|в Ж]" я, пожалуй, буду удалять даже не расскринивая.
Update: победители (в порядке поступления):
Update #2: Приём решений прекращаю (за исключением апдейтов типа мат. ожидания времени отсидки), комменты расскриниваю.
(no subject)
Date: 2005-06-25 04:51 am (UTC)(no subject)
Date: 2005-06-25 05:00 am (UTC)(no subject)
Date: 2005-06-25 04:52 am (UTC)(no subject)
Date: 2005-06-25 05:49 am (UTC)Остальные придерживаются следующего правила:
если юзер в комнате первый раз, то, если лампочка не горит он ее зажигает, иначе ничего не делает
"счетчик", попадая на допрос, гасит лампочу и прибавляет 1 в уме
когда "счетчик" доходит до N (число юзеров), то он говорит, что, мол, ВСЕ
(no subject)
Date: 2005-06-25 05:04 pm (UTC)не помню как считать мат. ожидание :-) ?
Date: 2005-06-25 06:24 am (UTC)он насчитает 10 смен, включая свое переключение, он должен сказать:
"вы уже всех вызывали, и никто не раскололся, так что отпускайте нас" :-).
Про ожидание точно не помню... кажется (N+1)/2 - тогда каждого наиболее вероятно вызовут 55 раз, то есть около 55 дней им там сидеть :-) - хотя в бонусе могу ошибаться :-) не судите строго - любил пить пиво на теорвере :-)
(no subject)
Date: 2005-06-25 04:29 pm (UTC)Женская логика :-)
From:(no subject)
Date: 2005-06-25 06:43 am (UTC)Алгоритм действия:
- Все, кроме Васи, зажигают лампу, если видят выключенную лампу впервые.
- Вася выключает лампу.
- Как только Вася выключает лампу в девятый раз, он требует освобождения.
2. Пусть изначально лампа включена.
Алгоритм действия:
- Все, кроме Васи, выключают лампу, если видят включенную лампу впервые.
- Вася включает лампу.
- Как только Вася включает лампу в девятый раз, он требует освобождения.
3. Начальное состояни неизвестно.
Алгоритм действия:
- Все, кроме Васи, зажигают лампу, если видят выключенную лампу впервые или во второй раз.
- Вася выключает лампу.
- Как только Вася выключает лампу в семнадцатый раз, он требует освобождения.
P.S. Что-то мне подсказывет, что в третьем случае можно освободится быстрее, но как-то не придумывается алгоритм.
(no subject)
Date: 2005-06-25 05:07 pm (UTC)так как?
Date: 2005-06-25 07:01 am (UTC)(no subject)
Date: 2005-06-25 04:38 pm (UTC)(no subject)
Date: 2005-06-25 08:25 am (UTC)(no subject)
Date: 2005-06-25 08:30 am (UTC)назначается один, который типа главный и руку на пульсе держит - условно 10й. а все время бъется на промежутки, причем за каждый промежуток времени "отвечает" только один заключенный. из общих соображений берем промежуток равный 10 дням.
(no subject)
Date: 2005-06-25 05:13 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
Date: 2005-06-25 08:59 am (UTC)Пусть есть N пользователей.
Договор
1)Первый включает лампочку 2^0 раз
2)второй 2^1 раз
3)Третий 2^2 раз
...
Последний только выключает и запоминает выключения. Как только он выключит (2^N - 1) - (все единички) раз, то значит все были.
...
М.... если для случая с начальным неизвесным состоянием, то сдвигаем вправо, первый включает 2^1 раз, второй - 2^2 итд, сторож не смотрит на младший бит.
(no subject)
Date: 2005-06-25 05:16 pm (UTC)(no subject)
From:(no subject)
Date: 2005-06-25 09:51 am (UTC)После трех смен состояния все пользователи были допрошены.
Среднее время, с учетом одного допроса в день = 5-6 дней (точнее 5,5 :)
(no subject)
Date: 2005-06-25 05:25 pm (UTC)каждый день допрашивают только одного пользователя, все никак не могут быть допрошены через 6 дней.
(no subject)
From:(no subject)
Date: 2005-06-25 10:46 am (UTC)(no subject)
Date: 2005-06-25 05:30 pm (UTC)А может быть так?
Date: 2005-06-25 11:49 am (UTC)1) выбрать главного в команде пользователейЖЖ. Главным становится тот, кто идет на допрос в первый день. Если лампа включена в этот первый день, он ее выключает .
Этот человек и собирает результирующуюю информацию.
2) Все, кто побывал на допросе должны сообщать об этом главному путем вклюючения лампы, но каждый, кто побывал на допросе должен включить лампочку только 1 раз. Попадая второй раз на допрос, лампу он не включат.
3) Выключать лампочку имеет право только главный
4) Включать можно только выключенную лампочку. Т.е. даже если пользователь жж попадает в первый раз, но лампочка уже горит, он не предпринимает никаких действий.
5) Когда главный понимает, что все побывали на допросе, он сообщает об этом и всех отпускают
Таким образом, основная идея состоит в том, что пользоваель жж включает лампочку, тем самым он сообщает главарю о том, что уже побывал на допросе, а выключение означает: "сообщение принял". Очевидно, что просидят там пользователи жж не менее 19 дней.
(no subject)
Date: 2005-06-25 04:37 pm (UTC)Re: А может быть так?
From:Re: А может быть так?
From:(no subject)
Date: 2005-06-25 12:18 pm (UTC)КОбщ - общее кол-во человек (после на раз два рассчитайсь :) )
ЖЖ - обыкновенный жж юзер
КВыкл - количество выключений
ЛАМПОЧКА (ЖЖ)
(
ЕСЛИ (ЖЖ = ГВ и СОСТ_ЛАМП = горит)
ТО (КВыкл++; СОСТ_ЛАМП = выключено)
ИНАЧЕ ЕСЛИ (ЖЖ еще не влючал не разу и СОСТ_ЛАМП = выключено) TO (СОСТ_ЛАМП <- горит)
)
ПОКА (КВыкл+1 < KОбщ)
(
ЖЖ<-rand; ЛАМПОЧКА (ЖЖ)
)
(no subject)
Date: 2005-06-25 05:36 pm (UTC)(no subject)
Date: 2005-06-25 01:32 pm (UTC)они должны назначить одного ответственного. Каждый из заключенных, кроме ответственного должен всего один раз за все время выключить лампочку (перед этим она должна быть включена - т.е. возможно что некоторые ее смогут выключить далеко не на первом допросе). ответственный же увидев выключенную лампочку выключает ее и инкрементирует счетчик в своей голове. Когда его счетчик станет равным 9 - он может выступать с речью.
(no subject)
Date: 2005-06-27 07:00 pm (UTC)возможно, неоптимально, но...
Date: 2005-06-25 02:23 pm (UTC)Общий срок отсидки предсказать невозможно - он может быть любым числом, кратным 10, в зависимости от рассеяности следователя. :-)
(no subject)
Date: 2005-06-25 05:51 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
Date: 2005-06-25 03:34 pm (UTC)(no subject)
Date: 2005-06-27 07:04 pm (UTC)(no subject)
Date: 2005-06-25 05:37 pm (UTC)Словами. Назначается один человек который может выключать. Остальные должны ОДИН раз включить лампочку. Тоесть они заходят в комнату и если там темно и они не разу не включали, зажигают свет. В противном случае оставляют все как есть.
Выключающий каждый раз попадая в комнату, выключает свет. После того как он выключит свет 9 раз он может с уверенностью сказать что все в комнате побывали.
Возможно есть способ сократить время отсидки...
(no subject)
Date: 2005-06-27 07:06 pm (UTC)(no subject)
Date: 2005-06-25 07:23 pm (UTC)Необходимое условия оставить лампочку включенной - если номер вызванного на допрос совпадает с номером дня (с момента посадки mod 10).
Достаточное условие:
N(x) знает, что N(x-1) уже на допросе был, т.е. когда N(x) приходит в "свой" день D=x и видит лампочку зажженой. Первый заключенный зажигает лампочку всегда.
Когда последний N(10) узнает, что N(9) уже был, он заявляет, что всех вызывали.
При равномерном распределении ожидаемый срок сидения - 10000 дней: 10*10 - число дней, необходимых чтобы оказаться нужному номеру в нужный день. *10*10/9 - когда выпадают два дня подряд для смежных номеров и N(x) узнает, что N(x-1) был на допросе, *9 - для смежных номеров известно состояние предыдущего номера.
(no subject)
Date: 2005-06-27 07:13 pm (UTC)(no subject)
Date: 2005-06-25 08:16 pm (UTC)как только он попадает в кабинет - он лампочку включает. потом другой человечек как оказывается первый раз в кабинете - лампочку выключает. товарищ-счетчик как оказывается на допросе - включает. другой человечек, если видит лампочку включенной, но он ее еще не выключал - выключает. и т.д.
сидеть придется долго, но когда-нибудь выйдут.
мат.ожидание считать муторно получилось)
(no subject)
Date: 2005-06-27 07:14 pm (UTC)(no subject)
Date: 2005-06-25 08:33 pm (UTC)(no subject)
Date: 2005-06-27 07:16 pm (UTC)(no subject)
Date: 2005-06-25 08:48 pm (UTC)1. Если первый пользователь был вызван в первый (т.е. "свой") день декады, то он включает лампочку.
2. Каждый следующий пользователь если он вызван в "свой" день не меняет состояние лампочк. Если в чужой, то он лампочку гасит.
3. 10-й пользователь вызваный в "свой" день смотрит на лампочку, и если она включена говорит "Бинго".
Матожидание считать лень. Будем надеятся, что они не сдохнут от старости.
(no subject)
Date: 2005-06-27 07:21 pm (UTC)это принципиальный момент, потому что при этом решении им придётся изрядно лишнего посидеть. если сможете показать, что мат. ожидание времени отсидки меньше продолжительности человеческой жизни, засчитаю решение :-)
(no subject)
Date: 2005-06-26 02:53 am (UTC)Ничего делать не будет. Уйдет. Те кто еще не включал лампочку - включают, если она выключена. Те кто уже включал - ничего не делают. А один за всеми выключает, если включена и считает количесво выключений.
(no subject)
Date: 2005-06-27 08:12 pm (UTC)(no subject)
Date: 2005-06-26 02:34 pm (UTC)Итак, если следователь допрашивает строго одного юзера в день, то возможен следующий вариант: юзеры должны рассчитаться, тоесть каждому присвоен порядковый номер, кроме того юзеры должны отсчитывать дни от того когда их посадили. Алгоритм следующий: назовем "ХОРОШИМ ДНЕМ ДЛЯ ЮЗЕРА", когда юзера вызывают в день, номер которого при делении на десять дает остаток равный порядковому номеру пользователя. Пользователь номер один ВКЛЮЧАЕТ лампочку если его вызывают в его "хороший" день. Пользователи 2-9 не меняют положение лампочки если их вызывают в их "хорошие" дни. Если пользователя вызывают в "плохой" день, то он должен выключить лампочку, либо не делать ничего если она уже не горит. Если пользователь номер 10 в свой "хороший" день видит горящую лампочку, то он заявляет следователю "вы уже всех вызывали, и никто не раскололся, так что отпускайте нас".
(no subject)
Date: 2005-06-27 08:14 pm (UTC)если покажете, что человеческой жизни хватит, чтобы выйти, засчитаю :-)
(no subject)
Date: 2005-06-27 05:16 am (UTC)Мат. ожидание этого алгоритма примерно 2*(n^2+n)
(no subject)
Date: 2005-06-27 08:17 pm (UTC)(no subject)
Date: 2005-06-27 05:45 am (UTC)(no subject)
Date: 2005-06-27 08:19 pm (UTC)