avva: (Default)
[personal profile] avva
Задача, порождённая опытом, скорее всего тривиальная.

Два человека договорились встретиться у определённого лифта, курсирующего между двумя этажами. На лестничной площадке есть два лифта, соединяющих эти этажи. Но они забыли договориться, на каком из этажей они встречаются. Один из них пришёл и думает: что если второй уже пришёл и ждёт на другом этаже? Спускается проверить, там второго нет; если он сейчас поедет обратно, что если второй уже пришёл и как раз в это время поедет на другой этаж на параллельном лифте? Что если они разминутся так один раз, а потом ещё и ещё? Ясно, что вероятность этого в реальной жизни ничтожна, но есть ли у них алгоритм, гарантирующий в любом случае, что они встретятся?

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

Значит, чтобы получить нетривиальную задачу, надо усложнить им жизнь. Предположим, что этажи невозможно отличить друг от друга, они выглядят идентично и совершенно симметрично относительно лифта (например, лифт горизонтальный, или всё это происходит в космическом пространстве, и у них нет возможности определить направление движения как "вверх" или "вниз"). Оба лифта тоже невозможно отличить один от другого (например, пусть площадка будет идеально круглая, и лифты находятся строго напротив друг друга, а то место на окружности, через которое они попадают на площадку, заранее неизвестно и может быть разным для обоих). Время поездки на лифте от одного этажа до другого полагаем для удобства фиксированным и небольшим по человеческим меркам; выйти/войти в лифт и осмотреться вокруг себя на площадке занимает ноль времени. Что тогда?

Всё равно легко; например, они заранее договариваются, что один из них будет стоять на месте, а другой - разъезжать туда-сюда; так они неизбежно встретятся. Поэтому надо ещё усложнить; заставим их следовать одному и тому же детерминированному алгоритму. Или, иными словами и более изощрённо-научно-фантастически, пусть это будет человек и его двойник. Человек должен заранее придумать алгоритм, потом его клонируют, и обе копии делают то же самое, т.к. они не могут отличить оригинал от копии.

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

Попробуем теперь немного упростить: пусть известно, что они приходят вначале на один и тот же этаж (но, как и раньше, ничего не известно о времени прихода; всего лишь то, что оба рано или поздно придут). Есть тогда тривиальное решение, которое я упускаю, или мне удалось сохранить немного сложности? Впрочем, то нетривиальное решение, которое я придумал для этого случая, всё равно не слишком сложное: после прихода каждый сначала ждёт одну минуту, потом едет на другой этаж, ждёт там две минуты, едет обратно, ждёт три итп (кажется, этого достаточно, и не надо использовать геометрический ряд в 1-2-4-8-16-... минут)

Возможно, есть ещё какие-то интересные варианты.
Page 1 of 3 << [1] [2] [3] >>

Date: 2005-01-31 11:37 am (UTC)
From: [identity profile] cousin-it.livejournal.com
Если оба приходят на один этаж, то им достаточно просто сидеть и ждать.

Date: 2005-01-31 11:38 am (UTC)
From: [identity profile] cousin-it.livejournal.com
Чуть-чуть интереснее задача становится, если они все же клоны, но имеют право бросать монетку.

Date: 2005-01-31 11:41 am (UTC)
From: [identity profile] bromozel.livejournal.com
Тогда все просто. Любой одинаковый алгоритм, но после нахождения монетки все надо делать быстрее в два раза.

Date: 2005-01-31 11:44 am (UTC)
From: [identity profile] avva.livejournal.com
Мда, я не выспался :(

They also serve who stand and wait.

Date: 2005-01-31 11:44 am (UTC)
From: [identity profile] cousin-it.livejournal.com
Я имел в виду не "пометить территорию", а "использовать в алгоритме случайный бит". Впрочем, так тоже прикольно.

Date: 2005-01-31 11:52 am (UTC)
From: [identity profile] http://users.livejournal.com/tananda_/
Есть варианты: Мобильная связь!

Date: 2005-01-31 11:53 am (UTC)
From: [identity profile] avva.livejournal.com
Может, такой вариант будет нетривиальным? Пусть они могут приходить на разные этажи или на один и тот же, неизвестно, но дано что они не могут придти в один и тот же момент времени. Разница во времени прихода может быть сколько угодно малой или сколь угодно большой, но не нулевой.

Date: 2005-01-31 11:53 am (UTC)
From: [identity profile] tat-sat.livejournal.com
Пусть оба следуют одному алгоритму: ждать случайное количество секунд (минут) на этаже, затем ехать на другой и так пока не встретятся.

Date: 2005-01-31 11:54 am (UTC)
From: [identity profile] avva.livejournal.com
Собственно, в "реальной жизни" так и случилось (ну, почти; один набирал номер второго как раз в тот момент, когда второй вышел из лифта после проверки другого этажа и увидел первого).

Date: 2005-01-31 11:55 am (UTC)
From: [identity profile] bromozel.livejournal.com
:) Да, смешно получилось. Я просто хотел предложить такой метод, когда увидел Ваш коммент. Вот и перепутал.

А бросание монетки в нормальном смысле не даст ничего - только алгоритм с вероятностью, стремящейся к 1.

Date: 2005-01-31 11:57 am (UTC)
From: [identity profile] bromozel.livejournal.com
Если можно как-то помечать этажи, на которых был, то все легко даже в этом случае - нужно ждать все большее количество времени.

Date: 2005-01-31 11:59 am (UTC)
From: [identity profile] ypq.livejournal.com
почему-то мне это с первого взгляда напомнило ethernet (csma/cd)...

Date: 2005-01-31 11:59 am (UTC)
From: [identity profile] cousin-it.livejournal.com
Если эта разница меньше одной поездки лифта, то не получится.

Если больше, то вариант с 1-2-3 и так далее решает задачу. Нужна всего лишь последовательность, "внутри" которой сколь угодно далеко от начала можно уложить сколь угодно длинный отрезок.

Date: 2005-01-31 12:01 pm (UTC)
From: [identity profile] cousin-it.livejournal.com
Ой, или это я бред написал, простите.

Date: 2005-01-31 12:05 pm (UTC)
From: [identity profile] cousin-it.livejournal.com
Нет, все правильно. Если отрезки помечены через один черным и белым цветом, то нужно, чтобы сколь угодно далеко от начала существовали отрезки ББ, ЧЧ и БЧ с длиной, равной интервалу между появлениями.

Date: 2005-01-31 12:14 pm (UTC)

Date: 2005-01-31 12:14 pm (UTC)
From: [identity profile] bionika-j.livejournal.com
хорошо что я не езжу в лифте...:\

Date: 2005-01-31 12:19 pm (UTC)
From: [identity profile] vyhuhol.livejournal.com
Ага :)

Date: 2005-01-31 12:19 pm (UTC)
From: [identity profile] jerom.livejournal.com
Это не даёт вероятности встречи равной еденице.

Date: 2005-01-31 12:19 pm (UTC)
From: [identity profile] ex-ex-annut.livejournal.com
Непоняла условие задачи?
Умеют ли они считать (достаточно знать последовательность чисел, операций не нужно) и могут ли задать лифту в какую сторону ехать и на сколько этажей?

В принципе: куча вариантов этой задачи рассматривается в стандартных курсах "online algorithms" или я что-то неуловила?

Date: 2005-01-31 12:23 pm (UTC)
From: [identity profile] avva.livejournal.com
Считать умеют. Этажей всего два, лифт едет от одного к другому без вариантов; можно считать, что лифт всегда наготове.

Варианты наверняка рассматриваются. Это не столько задача, сколько не вполне удавшаяся попытка взять ситуацию из реальной жизни и превратить её в нетривиальную задачу.

Date: 2005-01-31 12:24 pm (UTC)
From: [identity profile] avva.livejournal.com
Спасибо, забавно ;)

Date: 2005-01-31 12:24 pm (UTC)
From: [identity profile] tat-sat.livejournal.com
Да? Даже если цельный день так кататься? А два?
:)

Date: 2005-01-31 12:25 pm (UTC)
From: [identity profile] avva.livejournal.com
O боже мой ;)

Date: 2005-01-31 12:31 pm (UTC)
From: [identity profile] avva.livejournal.com
Да, разные этажи опять всё портят.

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

Может, попробовать посмотреть как алгоритм работает в случае прихода на разные этажи: предположим, алгоритм с этим случаем не справляется, но как он с ним не справляется? Есть алгоритмы, которые рано или поздно "замирают", типа алгоритма "стой на месте", а есть такие, которые бесконечно долго "бегут". Если запретить "замирающие" алгоритмы, и рассматривать только "энергичные", становится ли тогда задача, в случае прихода на один и тот же этаж, нетривиальной?
Page 1 of 3 << [1] [2] [3] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 05:39 am
Powered by Dreamwidth Studios