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

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

Итак, список покупок из простого перечня пунктов становится списком категорий, причем каждая из них, в свою очередь, представляет собой список пунктов.[43] Поскольку продукты в магазине обычно группируются по категориям, Вурзма может просто отправиться в ту часть магазина, где находятся, например, предметы личной гигиены, пробежаться по массиву под названием «личная гигиена» и взять нужные ему вещи со стеллажа. То же самое – для всех остальных покупок. Вот как занимаются шопингом по методу 2. Если бы Вурзма использовал обычный список – массив, как в методе 1, то он бы бродил примерно 13 минут от одного ряда к другому, в худшем случае – просто изучая полки.

Вурзма проходит мимо всех стеллажей для покупки одного предмета из списка. Если n – число проходов, а m – количество пунктов в списке, тогда n/2 × m=(nxm/2). Иными словами, для покупки 20 вещей Вурзма проходит через 20 рядов 20 раз. Принимая во внимание, что для прохождения каждого ряда требуется 2 секунды, то потерянное время составит до 13 минут. С методом 2 его общее время на ходьбу между рядами составляет примерно минуту, так как он не появляется в одном и том же ряду больше одного раза. Вурзма в лучшем случае проходит все ряды один раз, то есть n/2. Так что для приобретения 20 наименований покупок Вурзма, идя от одного ряда к другому, теряет меньше минуты.

Заметьте, что метод 1 не выглядит в точности как сортировка по квадратичному времени, которую мы видели в главах 5 и 11. Он следует шаблону, заставляя Вурзму в худшем случае пройти по всем рядам в магазине для каждой покупки в его списке. Вот как сравниваются два метода:

Бум-бум-бум, делай это часто и пожалеешь, как герой книги Мураками

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

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

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

Думаешь, куда пойти потом? не волнуйся, я тебе покажу направление, так что поторопись

Нужно подчеркнуть еще одну вещь: многомерный массив заранее навязывает нашим элементам приоритет, а именно – расстояние от входа магазина до конкретного ряда, где находится нужная вам вещь. Возможно, пора расширить наши знания об очередях с приоритетом, о которых мы упоминали мимоходом в главе 8. Там мы говорили, что, когда вы составляете некий приоритизированный список элементов, а после нужно добавить к нему новый элемент, может понадобиться стереть некоторые части списка, чтобы освободить место. Довольно скоро дело заходит в тупик, и вы обнаруживаете, что нужно делать новый список. Как может машина составить такой список с эффективностью, которую мы ждем от нее?

Мы уже видели структуры, оптимизированные для быстрого просмотра (массивы) и вставки элементов в произвольных точках (связные списки). Теперь подробнее рассмотрим очередь с приоритетом, которая оптимизирована для добавления элемента высшего приоритета[44] к коллекции в логарифмическое время. Она называется очередью, даже если не является таковой в привычном представлении, то есть когда первый предмет, вставший в очередь, первым же из нее выходит.[45] Вместо этого вы можете представить очередь с приоритетом как некое подземное растение, которое пускает только один побег за один раз и позволяет проходящим мимо людям сорвать его.

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


Рекомендуем почитать
«Да» в ответ. Технологии конструктивного влияния

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


Разговоры в песочнице, или Истории из жизни мам

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


Я - женщина!

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


Любовь

Работы Рихарда Давида Прехта, написанные на стыке психологии и философии, переведены на 25 языков, изданы суммарным тиражом более миллиона экземпляров, вошли в списки бестселлеров всех европейских стран.Психология любви.Одна из самых распространенных тем в мировой философии.Так почему же книга Рихарда Давида Прехта, написанная на эту «избитую» тему, продается огромными тиражами и пользуется колоссальным успехом во всей Европе?Что, по его мнению, представляет собой это чувство — самое яркое из всех, что доступно человеку?


Стратегия разума и успеха

О чем эта книга:О смысле жизни.Во что верить и где её (веру) искать.О людях феноменальной силы, ума, воли.Вся, правда, о ясновидцах, экстрасенсах...О том, как нами манипулируют и обманывают.Как жить, не болея и оставаться работоспособным до старости.Что такое секс и любовь.О ложных и истинных жизненных целях.О экологически чистом сельском хозяйстве.Что такое «Национальная идея»?Об образовании и воспитании.Об экологии и экономике и о многом другом здесь написано простым и понятным языком. Книга рассчитана на широкий круг читателей.


Социальные коммуникации

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


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

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


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

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


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

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


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

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