Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и жить проще - [18]

Шрифт
Интервал


Недавнее упоминание о «высокой вероятности» подводит нас к важной теме и одновременно сути этой главы. Прежде мы мимоходом упоминали о «худших случаях» и «средних случаях» для разных алгоритмов. Эти существенные показатели позволяют спрогнозировать, сколько времени уйдет у определенного алгоритма на перебор всего ряда элементов.

Время осуществления алгоритма зависит от многих условий. Например, в коде мы можем столкнуться с присутствием логических ветвей (если это не ваш случай, то пропустите этот абзац). Исходя из того, какой путь выбран, время пробега может варьироваться. Хороший пример – быстрая сортировка, которая упомянута в главе 5. При быстрой сортировке разделение начинается в первую очередь с выбора опорного элемента. Этот элемент используется для разделения массива данных на две группы: в одной содержатся элементы меньше опорного, в другой – больше него. Когда опорный элемент выбирается наугад, быстрая сортировка в среднем случае проходит в логарифмическом времени. Если опорный элемент слишком велик или слишком мал, быстрая сортировка может идти в квадратичном времени в худшем случае. Это изменение в производительности происходит из-за того, что опорный элемент не справляется с разделением массива элементов на каждом этапе, и приходится проверять почти каждый элемент на каждом из тех этапов, которые, как мы видели в ранних главах, являются атрибутами квадратичного алгоритма.

Анализ быстрой сортировки показывает, что алгоритм имеет высокую вероятность прохождения в линейно-логарифмическом времени. Мы знаем, что нужно сделать, чтобы достичь этого, – убедиться, что опорный элемент не является самым верхним или самым нижним в массиве. Таким образом элемент с усредненным значением применим практически для всех случаев и может гарантировать, что быстрая сортировка пройдет в линейно-логарифмическом времени.

Но иногда вероятной гарантии все же недостаточно. Если наш алгоритм работает с таким приложением, как управление космическим шаттлом, или представляет угрозу для чьей-то жизни, регулирует работу инфузионного насоса или дефибриллятора, то показатель наихудшего случая будет нас сильно беспокоить. Классификация потенциального результата полезна и в других приложениях, применимых в повседневной жизни.

Для Терри средний случай линейно-логарифмического времени более чем предпочтителен, хотя поиск по его алгоритму в худшем случае будет проходить в квадратичном времени. Сейчас ему не о чем волноваться. Пока у него достаточно книжных разделителей, он успевает в кино вовремя.

12

В супермаркете

Вурзма Моне до недавнего времени работал менеджером в фонде управления инвестиционными бумагами. Непостижимое решение стать рэпером возникло у него после того, как он прочитал в одной из школ лекцию о страховке кредиторов от дефолта. Беседа прошла под лозунгом «Кем работает мой отец», и к полудню Вурзма решил вести более осмысленную жизнь. Он ходит в местный супермаркет каждые две недели и часто ловит себя на том, что бродит по проходам из одного конца в другой в поисках нужных ему вещей из списка покупок. Туда-сюда, туда-сюда – у него уходит целая вечность на покупки. Визит в магазин еще больше затягивается из-за странной походки Вурзмы, которая мало походит на «крутую пацанскую» и больше напоминает ребят, которые своим видом будто говорят: «Я пропустил очередную консультацию у психотерапевта». Другие рэперы сразу замечают это несоответствие, и хрупкое доверие к Вурзме со стороны уличной продвинутой молодежи еще больше слабеет. Ему надо перестать выглядеть идиотом и избавиться от мыслей, обрекающих его на смехотворное существование.

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

ЦЕЛЬ: СВЕСТИ К МИНИМУМУ КОЛИЧЕСТВО РЯДОВ, ПО КОТОРЫМ НУЖНО ПРОЙТИ.

МЕТОД 1: ПРОСМОТРЕТЬ ВЕСЬ СПИСОК ПОКУПОК ПО ПУНКТАМ.

МЕТОД 2: ПОДГОТОВИТЬ СПИСОК ЗАРАНЕЕ, ЧТОБЫ ВСЕ БЫЛО РАЗЛОЖЕНО ПО КАТЕГОРИЯМ. ПРОСМАТРИВАТЬ ОДНУ КАТЕГОРИЮ ЗА ДРУГОЙ, СОВЕРШАЯ ПОКУПКИ.

Я положу свой массив в твой массив, чтоб ты не стартовал, не спросив

До сих пор мы говорили о массивах как о фундаментальной структуре, предназначенной для хранения набора элементов. В главе 6 мы ввели еще одну полезную структуру под названием матрица, которая также нужна для хранения групп элементов. Но здесь они сохраняются в двух измерениях, а не в одном. Что общего у этих двух структур? А то, что массив может быть преобразован в матрицу. Все, что нужно для этого сделать, – вместо сохранения литер (как, например, цифра, буква или слово) в каждом расположении сохранить массив. Массив массивов называется двумерным, или в более общем виде многомерным массивом.

Многомерные массивы позволяют нам с Вурзмой сделать одну полезную вещь – сохранить список покупок в двух измерениях, что позволит нашему герою двигаться по любому подмассиву в зависимости от отдела, в котором он сейчас находится.


Рекомендуем почитать
Иллюзия знания

Человеческий разум одновременно и гениален, и жалок. Мы подчинили себе огонь, создали демократические институты, побывали на Луне и расшифровали свой геном. Между тем каждый из нас то и дело совершает ошибки, подчас иррациональные, но чаще просто по причине невежества. Почему мы часто полагаем, что знаем больше, чем знаем на самом деле? Почему политические взгляды и ложные убеждения так трудно изменить? Почему концепции образования и управления, ориентированные на индивидуума, часто не дают результатов? Все это (и многое другое) объясняется глубоко коллективной природой интеллекта и знаний.


Заправляй кровать: 10 простых правил, которые могут изменить твою жизнь и, возможно, весь мир

Адмирал Уильям Макрейвен выступил перед выпускниками Техасского университета с речью, в которой рассказал о десяти жизненных принципах, которые вывел для себя еще во время обучения в тренировочном лагере «морских котиков». Эта речь взорвала интернет, набрав 10 миллионов просмотров. Оказалось, что правила, которые помогли «морскому котику» выжить в экстремальных условиях подготовки, а затем службы в спецназе, могут оказаться полезны каждому. В своей книге «Заправляй кровать» адмирал объясняет, как именно пришел к этим правилам и как они не раз спасали его и его сослуживцев.


Убедительное письмо. Как использовать силу слов

Для того чтобы писать убедительно – будь то электронное сообщение, отчет, резюме или иной документ, – необходимо понять, чего вы хотите и какой ответ вам нужен. Эта книга, иллюстрированная практическими примерами, поможет вам самостоятельно овладеть навыками составления различных документов и искусством убеждения, способствуя тем самым достижению ваших целей. Книга предназначена для широкого круга читателей.


Супермен по привычке. Как внедрять и закреплять полезные навыки

Формирование правильных привычек – это верный способ улучшить здоровье, повысить качество жизни, увеличить продуктивность рабочих часов и наслаждаться свободой, лишь однажды затратив энергию на формирование шаблона поведения. Эта книга поможет вам закрепить правильные привычки и выполнять нужные действия на автомате и без усилий. Автор подробно разбирает механизмы формирования той или иной привычки, рассказывая, чего можно достичь, обретя ее, с какими трудностями придется столкнуться и как их преодолеть. На русском языке публикуется впервые.


Ненастоящий мужчина: жизнь после жизни

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


Дорога в жизнь, или Путешествие в будущее…

Курс «Дорога в жизнь, или Путешествие в будущее» ориентирован в первую очередь на подростков, обучающихся в школах-интернатах и живущих в детских домах, хотя может использоваться и в массовых школах. В пособии подробно описаны сценарии тренинговых занятий по профориентации с учениками 8–9 классов.Процесс вхождения ребенка-сироты во взрослую жизнь неразрывно связан с его самоопределением, как жизненным, так и профессиональным. Поэтому авторы создали тренинговый курс, который помог бы сформировать у подростков умения и навыки, необходимые для выбора профессии и жизненного пути в целом.


Все не как у людей. Как перестать сравнивать себя с другими и обрести уверенность

Вы когда-нибудь испытывали жгучие приступы зависти к блогерам, знакомым, друзьям или даже близким? С развитием социальных сетей, созданием «личных брендов» и видимости идеальной жизни зависть превратилась в эпидемию, которая разрушает нас и наши контакты с людьми. Но поверьте – это можно исправить! Люси Шеридан, первый в мире консультант о преодолении зависти, доступно и позитивно рассказывает о том, как справиться с пагубной одержимостью чужим мнением, перестать вести мысленное соперничество с другими и расстраиваться из-за людей, которые в чем-то успешнее вас.


Как стать уверенным в себе. Всего 6 минут в день. Книга-тренинг

Наверное, для вас не станет открытием, что «каждый из нас уникален». Ведь это утверждение давно закрепилось в вашем сознании. Настолько крепко, что вы зачастую забываете о нем либо не воспринимаете его всерьез. Перед вами книга, которая заставит вас поверить в себя! Автор убежден, что для этого потребуется всего 6 минут в день. Разного рода упражнения помогут читателю разобраться в себе и очистить свое сознание от всего лишнего; научат самоуважению и поднимут самооценку. Единственное условие, которое необходимо соблюдать, – постоянство.


Синдром самозванца. Как перестать обесценивать свои успехи и постоянно доказывать себе и другим, что ты достоин

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


Предназначение. Найти дело жизни и реализовать свои мечты

У каждого есть Предназначение. Не следовать ему – самое большое преступление. Отсутствие четкого понимания своего пути делает людей несчастными и бедными. Александр Рей – практикующий психолог и просто счастливый человек. Он написал книгу-тренинг «Предназначение» для того, чтобы без пустых теорий и рассуждений помочь вам осознать свою миссию и немедленно приступить к ее осуществлению.