geektimes

Алгоритмы движения опаздывающего пассажира

  • пятница, 28 ноября 2014 г. в 02:10:51
http://geektimes.ru/post/242056/

Каждый, кто пользуется общественным транспортом хотя бы раз в жизни сталкивался с тем, что прямо из под носа у него уходил нужный автобус. Казалось бы, буквально нескольких секунд не хватило для того, чтобы успеть, но двери уже закрылись и автобус тронулся с места, оставив на остановке запыхавшегося и опечаленного человека. И чаще всего всему виной не скверный характер водителя и не физическая подготовка «бегуна», а неправильная постановка цели. Однако, обо всем по порядку.

Представим себе ситуацию, когда человек еще не дошел до остановки, но увидел, что автобус с нужным номером уже заканчивает посадку пассажиров. Возьмем ситуацию, которая статистически чаще остальных заканчивается печально: человек увидел свой автобус и в этот момент он находится не под прямым углом к дверям и не перед водительской кабиной, а под углом к задней части автобуса вне поля зрения водителя. См. рис. 1.


Рис. 1


Рис. 2

У человека появляется цель «добежать, пока автобус не уехал». При постановке такой задачи логичнее всего использовать максимально короткое расстояние по прямой от точки старта до дверей транспортного средства за максимально короткое время (см рис 2). Как мы знаем из курса школьной физики, для этого нам понадобится максимальная скорость. Но так как время до закрытия дверей нам не известно, то часто даже максимально набранной скорости не достаточно, чтобы преодолеть нужное расстояние.

Но если мы сформулируем цель иначе, то и решение этой, казалось бы, простой задачи станет другим. Цель — не «добежать пока автобус не уехал», а «пусть автобус не уедет, пока я бегу». Теперь нужно лишь добежать до дороги, а потом уже двигаться вдоль по направлению к автобусу (см. рис 3). Дело в том, что водитель, прежде чем закрыть двери, смотрит в боковое зеркало по технике безопасности. Он обязательно вас заметит и, скорее всего, подождет.


Рис. 3

После внедрения человеческого фактора в постановке целей даже в решении такой тривиальной задачи, как добежать до автобуса, частота удачного завершения миссии возросла в десятки раз. Для закрепления материала и расширения простора для дискуссий в комментариях предлагаю вопрос: какой рукой лучше всего держаться за поручень во время движения транспортного средства, правой или левой? Попробуйте использовать при поиске ответа не только физику и анатомию человека, но и человеческий фактор.