Программное обеспечение для интерактивного генеративного искусства: Electric Sheep (Скотт Дрейвс)
Скотт Дрейвс – новатор в области программного обеспечения, известный прежде всего созданием Electric Sheep, коллективного разума, состоящего из 450 000 компьютеров и людей, который использует математические и генетические алгоритмы для создания бесконечной абстрактной анимации.
Мы считаем анимированный вывод Electric Sheep одним из лучших фрактальных и алгоритмических произведений искусства.
Ранняя работа Дравеса под названием «Бомба» была одной из первых интерактивных иллюстраций программного обеспечения (1994), а также первой иллюстрацией с открытым исходным кодом.
20 место — Itel it2160: Характеристики и цена
Itel it2160
Заслуженное двадцатое место нашего рейтинга занимает телефон Itel it2160, который выделяется высоким уровнем автономности аккумуляторной батареи, удобством использования, а также адекватной ценой. В сумме с приятным внешним видом данная модель выделяется на фоне других.
Материал корпуса | пластик |
Экран | цветной |
Диагональ экрана | 1.8 дюйм. |
Разрешение | 160×128 |
Стандарт связи | GSM 900/1800 |
Встроенная память | 32 Мб (поддержка SD карт до 32 ГБ) |
АКБ | 1000 мАч |
Цена | 999 ₽ |
Itel it2160
Экран
4.1
Камера
2.6
Время автономной работы
4.2
Объем памяти
3.1
Производительность
3.7
Итого
3.5
Мотивация
Это рассказ о том, что такое внешняя алгебра, из чего она состоит. Удивительно, но на Хабре почти нет статей о внешней алгебре при том, что ее прикладная ценность ничуть не меньше, например, реляционной алгебры. Внешняя алгебра — это смесь теории множеств, алгебры и комбинаторики. Она является основой для понимания пространств, поэтому в той или иной степени присутствует почти во всех разделах математики. При том, что ее постулаты исключительно просты.
Наше изложение отличается от традиционного, — ориентируемся не столько на точность формулировок, сколько на передачу сути. Осознанно используем отличные от общепринятых обозначения для упрощения формулировок. Это статья для того, чтобы ухватить основную суть. Тогда дальше будет проще.
В первой части определим пространство на основе правил внешнего произведения и сложения объектов. Во второй добавим пространству метрические свойства. В целом пройдем путь от внешнего произведения до представления произвольных графов в виде алгебраического выражения. По дороге познакомимся с основными идеями и инструментами внешней алгебры.
Пример генеративного искусства: Андерс Хофф
Андерс Хофф (он же несогласованный в Твиттере) – генеративный художник, увлеченный узорами. Он часто считает полезным начать с высокоорганизованной структуры, а затем искать способы ее постепенного разрушения.
Генеративное искусство Андерса Хоффа. Это часть его проекта «Inconvergent», в котором исследуется сложное поведение, возникающее в системах с простыми правилами.
Хофф говорит, что часто можно найти интересные результаты между первоначальной организованной структурой и хаотическим конечным результатом. Он ищет достаточно порядка, чтобы его можно было узнать, и достаточно хаоса, чтобы вырваться из обычных форм.
Чертеж компьютерного плоттера Андерса Хоффа.
Мы настоятельно рекомендуем ознакомиться с его многосерийным постом о Генеративных алгоритмах, в котором наглядно представлены некоторые из его творческих процессов и техник.
Пример алгоритма: Джон МакКормак
Джон МакКормак – художник и профессор, который использует алгоритмы в своей работе, чтобы проникнуться врожденной мудростью природы.
Выставка Маккормака «Пятьдесят сестер» – это крупномасштабная инсталляция, состоящая из изображений размером 1 х 1 м синтезированных с помощью компьютера форм растений.
«Растения» были алгоритмически «выращены» из компьютерного кода с использованием искусственной эволюции и генеративных алгоритмов. Каждая растительная форма была получена из начальных графических элементов логотипов нефтяных компаний.
Джон МакКормак, «Пятьдесят сестер», серия из пятидесяти разработанных цифровых изображений растений с использованием логотипов нефтяных компаний в качестве строительных блоков.
Название работы отсылает к оригинальной «Семи сестер» – картелю из семи нефтяных компаний, которые доминировали в мировой нефтехимической промышленности и добыче нефти на Ближнем Востоке с середины 1940-х годов до нефтяного кризиса 1970-х годов.
Маккормак использует процесс, похожий на селекционное разведение, которое развивает эстетические и поведенческие черты. Компьютер способен находить нюансы и сложности, о которых он даже не догадывался. Он действует как творческий партнер, способ сделать невообразимое ощутимым. Его работы – яркий пример кодового искусства.
Колорфилд Маккормака, представленный ниже, представляет собой «эволюционную экосистему цвета». В этой цифровой работе «цветные агенты» пытаются существовать в простой вселенной, создавая цвета, подходящие для их среды. На эту среду влияют другие агенты и цвета, которые они производят.
Колорфилд Джона Маккормака. (Эволюционная программная экосистема).
Цвета входят в сложные циклы обратной связи, представляя развивающуюся палитру меняющихся оттенков. Различные конфигурации возникают на основе стратегий, которые экосистема обнаруживает для сосуществования и взаимозависимости.
В Университете Монаша в Мельбурне, Австралия, Маккормак руководит SensiLab, многопрофильной исследовательской группой, изучающей такие темы, как программируемая материя, интерактивное пространство и творческий искусственный интеллект. Маккормак также написал книгу «.
НАСА использовало эволюционные алгоритмы для разработки этой антенны. «Это первый раз, когда искусственно созданный объект полетит в космос», – заметил Джейсон Лон, возглавлявший проект по разработке антенн в исследовательском центре NASA Ames Research Center в Силиконовой долине Калифорнии. «Программное обеспечение искусственного интеллекта изучило миллионы потенциальных конструкций антенн, прежде чем выбрать окончательный вариант. Программное обеспечение сделало это намного быстрее, чем мог бы любой человек … благодаря процессу, разработанному Дарвином« выживание сильнейших », самые сильные конструкции выживают, а менее способные. не.”
Ученые начинают использовать эти дарвиновские методы для повышения своего творческого потенциала. Например, биохимические лаборатории в университетах и фармацевтических компаниях используют программы эволюции для разработки новых молекул для использования в фундаментальных исследованиях и медицине. НАСА использовало эволюционный дизайн для создания «усовершенствованной» антенны, которая была более эффективной, чем антенные, созданные человеком.
Даже мозг и тела роботов теперь можно развивать, а не проектировать.
Таким образом, эволюционные алгоритмы – это рецепты, запрограммированные для создания искусства путем имитации процесса эволюции, выборочного «выведения» новых идей и рождения новых форм на протяжении многих поколений.
Интерактивное генеративное искусство: шелк
Silk – это приложение для генеративного искусства, которое позволяет легко создавать потрясающие дизайны с помощью нескольких движений пальца. Вы можете скачать его в магазине приложений Apple.
Интерактивный характер Silk – отличный пример того, как простые правила, такие как включение симметричного зеркального отражения нарисованных вами линий, могут мгновенно преобразовать базовый ввод в гораздо более сложные, сложные и изощренные формы.
Генеративные инструменты используются не только для создания искусства, архитектуры и музыки. Они также используются для разработки физических продуктов, видеоигр и других предметов, предназначенных для использования в повседневной жизни.
eval(ez_write_tag([[728,90],’gadget_info_com-medrectangle-3′,’ezslot_4′,118,’0′,’0′]));Как работает память
Оперативная память в системе управляется схемой, называемой контроллером памяти. ОЗУ и контроллер памяти соединены через серию проводов, которые вместе называются шиной памяти. Теперь эти провода делятся на три группы: Контроль, Данные и Адрес. Управляющие провода отвечают за отправку команд модулям памяти, которые содержат информацию о том, какие операции выполняет система. Провода данных будут переносить данные, которые либо считываются из памяти в контроллер памяти, либо записываются из контроллера памяти в память.
Контроллер памяти также отвечает за определение скоростей памяти (или тактовых частот) для упомянутого модуля памяти. Например, если контроллер памяти заявляет, что максимальная тактовая частота, которую он поддерживает, составляет 1333 МГц, даже если вы установите модуль памяти с частотой 2400 МГц, система сможет использовать потенциал только 1333 МГц, тем самым разгоняя ОЗУ. Теперь, когда вы поняли, как работает оперативная память, давайте перейдем к сравнению одноканальной и двухканальной памяти.
User story mapping
В XVI веке Козимо I заказал фрески для капеллы собора Сан-Лоренсо во Флоренции у Якопо де Понтормо. Понтормо более 11 лет расписывал потолок капеллы сценами из Библии: сотворение мира, Ноев ковчег, Адам и Ева, Христос… Художник работал, практически не покидая капеллу и никому не показывая результаты своего творения.
Понтормо умер, так и не успев закончить свою работу. Фрески не были представлены на обозрение. Литератор и друг художника Визари оставил нам описание. По его словам, сцены громоздились одна на одной, множество фигур и сцен накладывались одна на другую. Понтормо увлекся отделкой деталей и потерял ощущение общей композиции.
Технику user story mapping использую как технику визуального представления последовательности действий, которые должны быть реализованы. User story mapping — один из методов декомпозиции требований, который обеспечивает понимание продукта, начиная с полного охвата всех потребностей и завершая погружением до детальных историй пользователя.
На практике в рамках этапа анализа требований я использую следующий процесс построения user story mapping:
- Определить ключевые шаги (каждый шаг описать на отдельной карточке).
- Расположить их в порядке использования слева направо.
- Определить отдельные задачи, которые составляют каждую активность.
- Расположить задачи в одной строке в логическом, последовательном порядке.
- С помощью стейкхолдеров проверить на полноту картины активности и задачи и обновить при необходимости.
User story mapping процесса согласования отпусков
Ролевая модель и сценарии использования
Недаром в шаблоне (я как роль) самого распространенного метода фиксации требований (user story) используется роль. С целью достижения максимальной ценности от проекта мы должны четко понимать, для кого и с какой целью мы будем реализовывать тот или иной функционал.
При построении ролевой модели использую три подхода:
- Должностная — выделение ролей на базе должностных обязанностей.
- Функциональная — выделение ролей на базе функциональных задач.
- Гибридная — совмещение подходов должностной и функциональной ролевой модели.
В ходе построения должностной ролевой модели часто сталкиваюсь со следующими трудностями:
- В больших компаниях есть несколько типов бухгалтеров или менеджеров. Более того, несколько из них могут быть в одном подразделении, а задачи выполняют разные.
- Должностные обязанности часто меняются, и, соответственно, ролевую модель нужно переделывать.
При таких нюансах этот подход хорошо подойдет компаниям, где жестко соблюдаются регламенты и правила и ведется строгий контроль предоставленного доступа.При построении функциональной ролевой модели выделяю основные и наиболее часто встречающиеся группы ролей, затем объединяю их в отдельные группы или бизнес-роли. Примеры таких групп: редактор (управление новостным модулем), модератор (модерация ответов форума), аудитор (построение отчетности и просмотр данных системы) и т. д.
При гибридной модели использую подход для базовых должностей (бухгалтер, кассир и инженер) и добавляю права из функциональной модели (пользователь и модератор).
После того как роли определены, для каждой из них перечисляю сценарии использования.
Таблица отображает пример гибридной ролевой модели и сценарии использования в разрезе ролей.
Роль | Сценарий использования |
Администратор | Создание проектаРедактирование карточки проектаНазначение руководителя проектаПостроение отчетов в разрезе портфеля проектов |
Руководитель проекта | Построение проектного планаРабота с задачамиПостроение отчетов |
Пользователь | Просмотр проектного планаВыполнение задачЗапрос об изменении срока выполнения задач |
В некоторых проектах используем следующий подход: определяем перечень операций, которые должна выполнять система, и только потом определяем роли. Все зависит от заказчика и его восприятия.
Прирост производительности от двухканального режима оперативной памяти
Наибольший прирост производительности (практически кратный) от активации двухканального режима ОЗУ получают системы, использующие интегрированную графику. Производительность такой графики зачастую упирается в ПСП и латентность памяти. GPU большую часть времени “вхолостую” простаивает, ожидая данные из ОЗУ (оперативная память в подобных системах используется ещё и в качестве видеопамяти).
Также значительного прироста следует ожидать на системах, страдающих от нехватки ОЗУ. При увеличении скорости обмена данными, ОЗУ за единицу времени может передать больше данных, чем раньше, поэтому данные будут занимать в оперативной памяти немного меньший объём. Кроме того, существенный прирост могут получить системы с мощными процессорами, страдающими от нехватки данных, так как пропускной способности памяти в одноканальном режиме (в первую очередь у памяти устаревших стандартов) не хватает некоторым приложениям для своевременного обмена данными с контроллером памяти. Так в игре Rise of The Tomb Raider Intel Core i7 2600 получает прирост производительности в 34,5% от увеличения пропускной способности памяти, в частности частоты:
На системах с маломощным центральным процессором, использующих дискретную графику и современный тип памяти, прирост производительности в игровых приложениях будет достаточно маленький (значительно увеличатся лишь показатели 0,1% и 1% минимального фпс), не говоря уже о рендеринге, где на первый план выходит мощность ЦП. Так на Intel core i3 6100 двухканальный режим оперативной памяти в 3DMark Fire Strike не даёт никаких преимуществ, в сравнении с одноканальным.
Тогда как прирост ПСП составил внушительных 94%:
В играх прирост производительности небольшой, зато серьёзно вырастает минимальный FPS и скачки времени кадра становятся менее выраженными, что серьёзно повышает плавность игры в целом.
Многоканальный режим (англ. Multi-channel architecture ) — режим работы оперативной памяти (RAM) и её взаимодействия с материнской платой, процессором и другими компонентами компьютера, при котором может быть увеличена скорость передачи данных между ними за счёт использования сразу нескольких каналов для доступа к объединённому банку памяти (это можно проиллюстрировать на примере ёмкостей, через горлышко одной из которых жидкость будет выливаться дольше, чем из двух других с такими же общим суммарным объёмом и горлышками, но с большей пропускной способностью — двумя горлышками). Таким образом, система при использовании, например, двух модулей памяти в двухканальном режиме может работать быстрее, чем при использовании одного модуля, равного их суммарному объёму.
Двухканальный режим — режим параллельной работы двух каналов памяти. Наиболее популярный режим для бытовых настольных компьютеров и для ряда ноутбуков. Позволяет увеличить пропускную способность до 2 раз по сравнению с одноканальным режимом.
Не следует путать термин Двухканальный режим с двойной скоростью передачи данных (DDR), в котором обмен данными происходит дважды во время одного тика DRAM. Эти две технологии являются независимыми друг от друга.
Трёхканальный режим — режим работы оперативной памяти компьютера (RAM), при котором осуществляется параллельная работа трёх каналов памяти. То есть параллельно работают 3 модуля или три пары модулей. Теоретически дает прирост пропускной способности в размере около 3 раз по сравнению с одноканальным режимом (1,5 по сравнению с более популярным двухканальным).
Четырёхканальный режим — режим работы оперативной памяти компьютера (RAM), при котором осуществляется параллельная работа четырех каналов памяти. То есть параллельно работают 4 модуля или четыре пары модулей. Теоретически дает прирост пропускной способности в размере около 4 раз по сравнению с одноканальным режимом (двух раз по сравнению с двухканальным). Поддерживается на платформах LGA 2011, LGA 2011v3, TR4, SP3.
Модель Катценбаха и Смита
The Wisdom of Teams
- Рабочая группа, где взаимодействие участников осуществляется для обмена информацией и опытом.
- Псевдокоманда, в которой ее члены могут увеличить эффективность работы, но не прилагают для этого никаких усилий.
- Потенциальная команда, в которой понимают общую цель и ее необходимость и пытаются выработать эффективные способы сотрудничества.
- Настоящая команда — в ее составе участники, которые обладают взаимодополняющими навыками и умениями. Они осознают общие цели и задачи и совместно работают над ними.
- Высокоэффективная команда с характеристиками настоящей группы и способствующая индивидуальному развитию ее членов. Ее результаты обычно превосходят ожидания.
- коллективные продукты и достижения
- результаты работы
- индивидуальный рост
- отбор членов команды по их умениям, навыкам и возможностям
- определение целей совместной деятельности и правила поведения
- осознание членами команды их прав
- непрерывное взаимодействие в команде, выделение необходимого времени для коммуникации
- обратная связь, вознаграждения и признания.
Обратные элементы
В нашей алгебре не обойтись без понятия единицы. Единица — это такой элемент, при умножении на который с любой стороны симплекс остается без изменений: . В свою очередь наличие единицы позволяет расширить множество элементов, введя понятие обратных. Кратко обратные элементы именуют коэлементами. При умножении на обратный элемент обращается в единицу
Поскольку у нас не обычное умножение, а внешнее, то важно относительное положение множителей — при перемене мест элемента и обратного ему единица становится отрицательной. Для удобства (связанного с понятием граничного оператора) постулируем, что если обратный элемент расположен слева, то результатом произведения будет 1, а если справа, то -1
Это выглядит поначалу немного непривычно, но в целом окупается:
Здесь перед коэлементами стоит префикс в виде косой черты /. Если обратный элемент умножается на другой элемент, то результатом будет пустой симплекс — ноль: .
Коэлемент можно трактовать как отсутствие элемента. Это дырка в множестве. Но интересно, что с коэлементами можно обращаться так же как с обычными. Произведение коэлементов образует обратный симплекс (косимплекс). Для заданного симплекса можно определить обратный. Постулируем, что при умножении обратного слева на исходный должны получить 1 независимо от порядка симплекса: . Отсюда следует правило расположения элементов в обратном симплексе — в нем порядок элементов меняется на обратный. Таким образом если, то.
Если симплекс умножить на обратный справа, то результат зависит от четности порядка симплекса:
Если симплекс умножается на косимплекс, то взаимно обратные элементы должны сокращаться. Для того, чтобы правильно учесть знак необходимо элемент и обратный ему поставить рядом и выполнить сокращение с учетом их положения. Например: .
Если перемножаемые симплекс и косимплекс содержат элементы, которых нет в другом, то результатом произведения будет ноль: .
Отметим, что симплекса, образованного одновременно обычными и обратными элементами — не существует. Симплексы однородны по составу — либо симплекс полностью состоит из обычных элементов, либо из обратных. Данное свойство вытекает из правил перемножения симплексов. В этом смысле множества обычных элементов и коэлементов принадлежат разным пространствам.
Анализ матрицы БКГ на примере предприятия
На примере предприятия матрица БКГ может использоваться в двух вариантах:
- Для анализа самого предприятия и определения перспективного направления его стратегического развития;
- Для портфельного анализа бизнес-направлений предприятия.
Рассмотрим вначале первый случай. Согласно методике по матрице БКГ делается допущение, что все предприятия проходят полный цикл:
- В момент своего создания предприятие начинает как «Дикая кошка», неизвестно, как сложится его будущее развитие, но оно уже занимает небольшую долю на растущем рынке. При начальных слабых позициях, «дикая кошка» готова «рвать и метать», лишь бы поймать «добычу», а затем встать во главе «стаи».
- Добившись успеха, предприятие становится «звездой». «Звезда» долго «сияет» на «небосклоне», к ней обращают свои «взоры», в то же время многие хотят «достать звезду с неба».
- При стабилизации рынка предприятие превращается в «дойную корову». «Дойная корова» при должном «уходе» и постоянном «выпасе» приносит очень много «молока».
- Пройдя полный цикл, предприятие заканчивает свою деятельность «собакой». «Собаки» на всех «гавкают», но приносят пользу «охраняя» своего «хозяина».
Данные аллегории отлично описывают пример базового цикла предприятия по матрице БКГ на рисунке ниже.
Пример модифицированной матрицы БКГ для конкретного предприятия
Модифицированная матрица БКГ оперирует конкурентными преимуществами предприятиями и способами их реализации. Стратегии по своему расположению соответствуют квадрантам матрицы БКГ.
Стратегия предприятия может меняться согласно стандартным стратегиям по матрице БКГ, которая позволяет прогнозировать поведение предприятия в зависимости от его квадранта:
- «Дикие кошки» нуждаются во вложениях, чтобы добиться успеха, при этом их стратегией является фрагментация, чтобы выделить сферу деятельности, в которой они и будут способны стать «звездами».
- «Звезды» заняты поиском способов расширить масштаб деятельности, быстро увеличить долю рынка, при этом следуя стратегии специализации, готовясь стать «дойными коровами».
- «Дойные коровы» все усилия направляют на сохранение доли рынка или ее поступательное увеличение, следуя стратегии увеличения объема, готовы направлять ресурсы на развитие новых бизнес-направлений, научные исследования, разработки.
- «Собаки» вынуждены ликвидироваться, если отсутствуют объективные причины для их сохранения, либо должны рискнуть и начинать новое бизнес-направление.
Рассмотрим второй случай использования матрицы БКГ при портфельном анализе бизнес-направлений конкретного предприятия. Для бизнес-направлений предприятия применяется типовой подход.
Допустим, АО «Ксарон» работает в сфере продаж электроники и имеет несколько направлений деятельности: продажа электроники, бытовой техники, выполняет работы по монтажу систем видеонаблюдения и оказывает услуги по доставке, установке и обслуживанию различной техники.
При таком подходе матрица БКГ строится следующим образом:
- электронику предприятие реализует давно, это бизнес-направление приносит наибольший доход – заносим его в квадрант дойных коров;
- внутри продаж электроники в самостоятельное бизнес-направление оформилась продажа бытовой техники, наблюдается рост данного рынка, растет прибыльность данного направления – это звезда;
- создано новое бизнес-направление, монтаж аудиосистем и систем видеонаблюдения, перспективы пока не ясны, отдача от данного бизнеса невысокая, при этом рынок является быстрорастущим – это, однозначно, дикая кошка в матрице БКГ;
- доставка, установка и обслуживание техники не может выступать самостоятельным направлением деятельности, однако без этих услуг деятельность предприятия будет затруднена, стоит задача обеспечения безубыточности данных услуг – это собака.
Матрицы БКГ на примере бизнес-направлений предприятия
Произведение границ
Обратимся к произведению границ. Произведение двух границ тоже является границей, но есть нюансы. Если перемножаемые границы имеют более одного общего элемента, то их произведение равно нулю. Это следствие свойств внешнего произведения. Пример:
Если границы имеют один общий элемент, то при умножении они сливаются в одну (компоненту) — это правило слияния границ. Пример слияния двух векторов в 2-границу (бивектор):
Если же перемножаемые границы не имеют общих элементов, то границы не сливаются. Получаем границу, состоящую из нескольких компонент связности. Пример такой границы, содержащей 4 элемента:. Поскольку под поливектором обычно понимают границу с одной компонентой связности, то строго говоря границы и поливекторы — это не одно и то же. Под поливектором будем понимать всегда границу из одной компоненты.
Итак, порядок границы зависит не только от количества образующих ее элементов , но и от количества ее компонент . Порядок границы равен 2, несмотря на то, что она содержит 4 элемента. Для получения порядка границы надо из количества элементов вычесть количество компонент: .
Кроме того, одна и та же граница может быть образована произведением разных границ меньшего порядка. Например, граница может быть образована тремя разными парами векторов: . То есть произведение границ с общим элементом уничтожает информацию о том, какие именно границы умножались — границы сливаются в одну.
Пример генеративного искусства: множество Мандельброта
Рулоф Питерс и Самим Винигер, соучредители Creative.ai, в своем трактате «О демократизации и эскалации творчества» представляют исключительную хронологию вычислительного творчества .
Набор Мандельброта – это математическая формула, которая при визуализации обладает потрясающими эстетическими свойствами. Он выражает повторяющиеся узоры на всех уровнях масштаба – независимо от того, насколько вы увеличиваете или уменьшаете масштаб, вы можете найти одни и те же геометрические узоры, повторяющиеся снова и снова, поэтому он считается фракталом.
Пара объясняет, как в 1979 году Бенуа Мандельброт установил веху, открыв множество Мандельброта.
«Мандельброт был первым, кто использовал компьютерную графику для отображения фрактальных геометрических изображений. Тем самым он смог показать, как с помощью простых правил можно создать визуальную сложность ».
Фракталы оказали глубокое влияние на наше восприятие творчества и машин. Это открытие заставило многих задаться вопросом: «Может ли компьютер / алгоритм быть творческим? »И вдохновил ученых, художников и инженеров на творческие эксперименты.
Бенуа Мандельброт / Mandelbrot Fractal ( )
Это событие помогло начать то, что Питерс и Винигер называют революцией кодового искусства, которая продолжается и сегодня.
Smoant Pasito
Это подсистема, вышедшая 2 года назад, но все еще пользующаяся бешеной популярностью. Пасито 1 один из первых обзавелся обслуживаемой базой — она крайне неудобная, но позволяет экономить на расходниках,в комплекте идут испарители DTL на 0,6 Ом и MTL на 1,4 Ом.
Регулировка мощности происходит одной кнопкой до 25w. Имеет вкусные, но не самые лучшие испарители. Хорошая живучая батарея на 1100mah.Так же имеет вместительный бак на 3 мл. Пасито 2 не получил такой большой спрос, по всей видимости из за раздутости в размерах, всё-таки первый Пасито был очень компактным.
ПЛЮСЫ:
- Не течет;
- Два картриджа в комплекте;
- Есть RBA база;
- Быстрая зарядка.
МИНУСЫ
- Выгорают светодиоды;
- Быстро слезает краска;
- Не самая удобная заправка.
Разреженный массив: взболтать, но не смешивать
Зачастую такие массивы по-лавкрафтовски циклопические, при наивной реализации не умещаются в оперативку, оставаясь фактически не заполненными. В зависимости от требований к памяти и скорости разреженные массивы превращают в куда более компактные хэш-таблицы, списки смежности, бинарные деревья… или подвергают succinct’изации.
Допустим, у нас есть разреженный массив строк. Прицепим к нему компактный индексируемый словарь. Что это даст?
Разреженный массив с битовой картой.
Теперь, не обращаясь к оригинальному массиву напрямую, легко проверить, присутствует ли в нем элемент по интересующему индексу. Ничто не мешает ужать исходный массив, выкинув все не заполненные элементы:
Массив без пустых элементов.
Вычисление индекса в сжатом массиве. После проверки присутствия элемента неплохо бы получить доступ к его значению в исходном массиве, то есть сопоставить индекс в индексируемом словаре индексу в сжатом массиве. Не сюрприз, что для этого используется rank:
Проверим, как обстоят дела с 8-м элементом: . Значит, в исходном массиве такого элемента нет. А что с элементом 7? . Получим его значение: . По индексу 2 находится «go».
Вычисление индекса в исходном массиве. Наверняка в массиве потребуется искать элементы по значению! Если данные не сортированы, поиск сводится к перебору за , где — количество не пустых элементов. Для найденного элемента может потребоваться получить его индекс , как если бы массив не был ужат. Для этого воспользуемся select — обратной операцией к rank:
Для примера отыщем строку «C++». В компактном массиве она находится по индексу 0. А ее индекс в исходном массиве равен .
Уже на примере со строками заметна экономия памяти. Если массив предназначен для хранения классов со множеством полей, экономия становится куда весомее. Кроме того, поиск в компактном массиве работает быстрее, чем в большом и разреженном: он лучше кэшируется процессором. У битового индексируемого словаря больше шансов уместиться в кэш-линию, чем у обычного массива чисел, строк или навороченных пользовательских типов.
Конечно, для хранения элементов описанный способ не годится. Его применимость заканчивается там, где начинаются проблемы с разрастанием индекса. Но своя ниша у этого способа сжатия массивов и его вариаций, конечно, есть. Будничный пример — это реализация протокола BitTorrent. Битовая карта содержит информацию о скачанных сегментах файлов, и пиры обмениваются индексами имеющихся у них сегментов. Космический пример — варианты сегментированной передачи данных, которые используют марсоходы, Вояджеры и станция «Новые Горизонты», бороздящая транснептуновые просторы.
Описанные примеры succinct’изации префиксного дерева и разреженного массива построены на общем фундаменте. Он основан на несокрушимой вере в эффективность операций rank/select. Без нее вся теория компактных, но достаточно быстрых структур трещит по швам. От скорости rank и select зависит адекватность использования компактных структур за пределами диссертаций.
Эти операции в самом деле можно реализовать крайне эффективно: rank — за ; select — за , что тоже почти константа. И конечно без некоторых уловок не обойдется. А так как в любом произведении с запутанным сюжетом должна витать легкая недосказанность, на этом я и остановлюсь.