Search
Write a publication
Pull to refresh
163
0
Валерий Макаров @valemak

Программист

Send message

Бинарные операции над упорядоченными множествами

Reading time4 min
Views31K
В предыдущей статье я писал о бинарных операциях над неупорядоченными множествами. В этой статье мы рассмотрим алгоритмы с меньшей сложностью выполнения, для упорядоченных множеств.

Читать дальше →

Лекции Технопарка. 1 семестр. Алгоритмы и структуры данных

Reading time2 min
Views169K
Очередной пост в рамках нашего цикла лекций Технопарка. В этот раз мы предлагаем вашему вниманию курс, посвящённый алгоритмам и структурам данных. Автор курса — Степан Мацкевич, сотрудник компании ABBYY.

Лекция 1. Основы


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


Читать дальше →

Полифазный сон: отзывы, «теория», личный опыт

Reading time6 min
Views419K


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

Соответственно, недосып – вторая большая проблема для современного человека (и при этом, что характерно, она обычно таки не решает первую). Ложиться спать вовремя зачастую тупо не хочется: есть такое нехорошее ощущение, что тогда в жизни останутся только сон и работа.

Вовремя – это значит резервируя на сон не менее 8-ми часов, как всех нас учили. Но в итоге по факту большинство из нас спит часов 6, а потом «отрывается» в выходные. Но хотя этих 6-ти часов мало для сна, их все еще чересчур много в сутках: желание (и тенденции!) «урезать» сон еще больше – не исчезают. В поисках волшебной таблетки «как мало спать и отлично высыпаться» я, как, наверно, и многие, в свое время натолкнулся на учение о полифазном сне.

Что это?
Читать дальше →

Сортировка на односвязном списке за O(nlogn) времени в худшем случае с O(1) дополнительной памяти

Reading time11 min
Views59K
Все началось с данного топика на сайте gamedev.ru. Топикстартер предложил найти сортировку, которая обладает следующими свойствами:
  1. Время выполнения — гарантированные O(nlogn).
  2. Использование O(1) дополнительной памяти.
  3. Применимость для сортировки данных в односвязных списках (но не ограничиваясь ими).

Оговорки на все три ограничения:
  1. Гарантированные O(nlogn) означают, что, например, среднее время быстрой сортировки не подходит — должно получаться O(nlogn) для любых, даже самых худших входных данных.
  2. Рекурсию использовать нельзя, поскольку она подразумевает O(logn) памяти на хранение стека рекурсивных вызовов.
  3. Произвольного доступа к элементам сортируемого массива нет, мы можем двигаться итератором от любого элемента только к соседнему (за O(1)), причем только в одном направлении (вперед по списку). Модифицировать сам список (перевешивать указатели на следующие элементы) нельзя.

Вся информация, которую мы знаем об элементах массива — это то, что они все образуют линейно упорядоченное множество. Все, что мы можем делать — это сравнивать два элемента массива (за O(1)) и менять их местами (тоже за O(1)).

Под катом можно узнать, что в итоге получилось у нас.

Challenge. Прежде чем заглядывать под кат, предлагаю сначала самостоятельно подумать над алгоритмом. Если придумается что-то круче нашего варианта — напишите в комментариях.

Читать дальше →

«Прокачать сознание. Недорого». Есть ли толк от маски для осознанных сновидений

Reading time5 min
Views52K

Adam Good

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

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

Что делает человек, когда хочет привести себя в форму? Идет в фитнес-зал, где его ждут беговые дорожки, гантели и тренажеры.

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


Когда на «Кикстатере» появился проект бюджетной маски для осознанных снов Remee, деньги бекеров полились рекой. За несколько недель проект набрал больше 570 тысяч долларов, хотя изначально изобретатели Стив Макгиган и Дункан Фрэйзер хотели собрать скромные 35 тысяч.
Читать дальше →

Биохакинг сна: подтверждённые наукой советы

Reading time11 min
Views291K


Сон до сих пор является одной из величайших загадок для науки, как гравитация и квантовое поле. Мы до сих пор не понимаем, для чего именно мы спим, хотя всё больше узнаём об этом. Ниже собраны советы для тех, кто долго не может уснуть, часто просыпается, не чувствует себя отдохнувшими наутро, или просто хочет улучшить качество своего сна.
Читать дальше →

Визуализация алгоритмов

Reading time2 min
Views36K
Специалист по дата-майнингу и визуализации данных Майк Босток (Mike Bostock) опубликовал великолепную подборку с визуализацией различных алгоритмов.

Работа уникальная, в своём роде, потому что в этом случае графическое отображение особенно сложно сделать: ведь, по сути, нет данных для анализа. «Но алгоритмы также демонстрируют, что визуализация — это больше, чем просто инструмент для поиска закономерностей среди данных, — пишет Майк Босток. — Визуализация использует зрительную систему человека, чтобы расширить человеческий интеллект: с её помощью мы лучше понимаем важные абстрактные процессы и, надеюсь, другие вещи тоже».

Проще говоря, зрение помогает нам думать.
Читать дальше →

Модулятор REM-фазы сна

Reading time4 min
Views29K
В данной статье предлагаю рассмотреть создание достаточно быстро (~30 секунд) устройства вводящего человека в состояние транса или гипнотического состояния.

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

Началось все с попыток научным образом описать и объяснить феномен осознанных сновидений или другими словами ОСов. Для чего мне пришлось сделать массу экспериментов над собой и окружающими. Как правило эти эксперименты были безболезненными хотя случались исключения. В конечном мне довелось познакомиться с ребятами которые которые занимались этим исследованием более основательно. В частности у ребят оказался электроэнцефалограф (далее ЭЭГ), при помощи которого была снята ЭЭГ работы мозга человека во время осознанного сновидения.
Читать дальше →

В мире алгоритмов: Сортировка Вставками

Reading time2 min
Views872K
От автора
Данная статья рассматривает один из алгоритмов сортировки массивов. Она предназначена для новичков или же для тех кто по каким-то причинам не знаком с данным алгоритмом. Исправления и поправки только приветствуются:)

Теория
Сортировка вставками (Insertion Sort) — это простой алгоритм сортировки. Суть его заключается в том что, на каждом шаге алгоритма мы берем один из элементов массива, находим позицию для вставки и вставляем. Стоит отметить что массив из 1-го элемента считается отсортированным.
Читать дальше →

Знай сложности алгоритмов

Reading time2 min
Views1.1M
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →

Структуры данных: двоичная куча (binary heap)

Reading time4 min
Views253K
Двоичная куча (binary heap) – просто реализуемая структура данных, позволяющая быстро (за логарифмическое время) добавлять элементы и извлекать элемент с максимальным приоритетом (например, максимальный по значению).

Для дальнейшего чтения необходимо иметь представление о деревьях, а также желательно знать об оценке сложности алгоритмов. Алгоритмы в этой статье будут сопровождаться кодом на C#.

Введение


Двоичная куча представляет собой полное бинарное дерево, для которого выполняется основное свойство кучи: приоритет каждой вершины больше приоритетов её потомков. В простейшем случае приоритет каждой вершины можно считать равным её значению. В таком случае структура называется max-heap, поскольку корень поддерева является максимумом из значений элементов поддерева. В этой статье для простоты используется именно такое представление. Напомню также, что дерево называется полным бинарным, если у каждой вершины есть не более двух потомков, а заполнение уровней вершин идет сверху вниз (в пределах одного уровня – слева направо).



Читать дальше →

Бенчмарк 14 алгоритмов сортировки на массивах с разной размерностью и содержанием

Reading time2 min
Views38K
В этой статье речь пойдёт о бенчмарке алгоритмов сортировки, написанном на PHP.

Всего представлено 14 алгоритмов:

  • quickSort
  • countingSort
  • combSort
  • heapSort
  • mergeSort
  • shellSort
  • selectionSort
  • insertSort
  • gnomeSort
  • combinedBubbleSort
  • cocktailSort
  • bubbleSort
  • oddEvenSort
  • bubbleSortWithFlag


Подробнее об алгоритмах
quickSort – Быстрая сортировка*
countingSort – Сортировка подсчетом*
combSort – Сортировка расчёской*
heapSort – Сортировка кучей*
mergeSort – Сортировка слиянием*
shellSort – Сортировка Шелла*
selectionSort – Сортировка выбором*
insertSort – Сортировка вставками*
gnomeSort – «Гномья» сортировка*
combinedBubbleSort – Модифицированная «Пузырьковая» сортировка
cocktailSort – «Шейкерная» сортировка*
bubbleSort – «Пузырьковая» сортировка*
oddEvenSort – Сортировка чёт-нечет
bubbleSortWithFlag – «Пузырьковая» сортировка с флагом перестановок


Читать дальше →

Алгоритмический подход к лечению бессонницы

Reading time5 min
Views16K
Автор материала рассказывает, как ему удалось побороть бессонницу с помощью математики.



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

Обычно все начинается с активной работы ума вечером. Активность может быть связана с поиском решения непростой задачи на работе, или воспроизведением в голове живой беседы, произошедшей за ужином. Или я путешествую и потому пребываю в возбужденном состоянии. То есть это далеко не всегда напряженные мысли, скорее очень увлекательные. Я иду спать, но мой разум не успокаивается. Полчаса спустя я понимаю, что не сплю и начинаю думать, что мне пора бы уже уснуть, поскольку завтра много дел. И это только усугубляет ситуацию. Я начинаю становится недовольным собой и корить себя: «Что не так? Завтра буду ходить недовольный. Мне очень надо попробовать уснуть». И так повторяется до изнеможения. Часами на пролет я лежу без сна.

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

Исчерпывающий справочник по JavaScript для вашего следующего собеседования

Reading time6 min
Views54K
Перевод статьи Gustavo Azevedo The Definitive JavaScript Handbook for your next developer interview.



JavaScript был и продолжает быть самым популярным языком программирования, согласно опросу Stack Overflow Survey. Неудивительно, что 1/3 всех вакансий требуют знания JavaScript. Поэтому, если вы планируете работать разработчиком в ближайшем будущем, то вам следует ознакомиться с этим черезвычайно популярным языком.

Цель публикации — собрать в одном месте все концепции JavaScript, которые часто встречаются на собеседовании.
Читать дальше →

Как прочитать большой файл средствами PHP (не грохнув при этом сервак)

Reading time9 min
Views50K

Перевод статьи Christopher Pitt.


PHP разработчикам не так уж часто приходится следить за расходом памяти в своих приложениях. Сам движок PHP неплохо подчищает мусор за нами, да и модель веб-сервера с контекстом исполнения, "умирающим" после выполнения каждого запроса, позволяет даже самому плохому коду не создавать больших долгих проблем.


Однако, в некоторых ситуациях, мы можем столкнуться с проблемами нехватки оперативной памяти — например, пытаясь запустить композер на маленьком VPS, или при открытии большого файла на сервере не богатом ресурсами.


Fragmented terrain


Последняя проблема и будет рассмотрена в этом уроке.

Читать дальше →

Двоичный поиск в графах

Reading time10 min
Views18K

Двоичный поиск — один из самых базовых известных мне алгоритмов. Имея отсортированный список сравнимых элементов и целевой элемент, двоичный поиск смотрит в середину списка и сравнивает значение с целевым элементом. Если цель больше, мы повторяем с меньшей половиной списка, и наоборот.

При каждом сравнении алгоритм двоичного поиска разбиваем пространство поиска пополам. Благодаря этому всегда будет не более $\log(n)$ сравнений со временем выполнения $O(\log n)$. Красиво, эффективно, полезно.

Но всегда можно посмотреть под другим углом.

Что, если попробовать выполнить двоичный поиск по графу? Большинство алгоритмов поиска по графам, такие как поиск в ширину или поиск в глубину, требуют линейного времени и были придуманы довольно умными людьми. Поэтому если двоичный поиск по графу будет иметь какой-то смысл, то он должен использовать больше информации, чем та, к которой имеют доступ обычные алгоритмы поиска.
Читать дальше →

Иннервация глаза: как устроена сеть управления зрением

Reading time8 min
Views47K


Сегодня я расскажу про то, почему, когда вы наклоняете голову, глаз автоматически поворачивается на заданный угол с очень точной синхронизацией без потери объектов в фокусе. Ещё как мы, врачи, подключаем ток к нервам и «прозваниваем» цепь, чтобы понять, что всё работает. И про то, что будет, если участки этой цепи отрезать или повреждать.

Да простят меня коллеги-научники за упрощения и неканоническую терминологию.

Ну и ещё отвечаю на вопрос, когда удалять здоровый правый глаз, если у пациента серьёзная инфекция на левом.
Читать дальше →

Как переехать на работу в США: подборка полезных материалов

Reading time3 min
Views44K


Согласно данным опроса Иннополиса и HeadHunter в число наиболее желанных стран для профессиональной эмиграции у россиян входят США, Германия и Канада. При этом, США лидируют в списках стран, наиболее привлекательных для ИТ-специалистов из СНГ. Отечественных айтишников привлекает достойный уровень жизни и один из самых высоких в мире уровней заработных плат. Так, «менеджеры компьютерных и информационных систем», входят в ТОП-25 самых высокооплачиваемых специалистов в США.

При этом, важно понимать, что получить работу в Америке не так легко, ведь компаниям проще работать с теми специалистами, у которых уже есть разрешение на работу в стране. Я собрала полезные ссылки для тех, кто собирается получить рабочую визу в США.
Читать дальше →

О Тульпах

Reading time7 min
Views65K

image


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


Тульпы. Сообщество со странными идеями и целями, объединённое мистической терминологией. Десятки людей, практикующих форсинг, гипноз, изменяющих своё сознание, медитирующих, пытающихся справиться со своими заболеваниями. Все они собрались вместе из-за общей цели: создать то, что Википедия называет «воображаемым другом». Но что такое тульпы на самом деле?

Читать дальше →

Геометрия данных 4. Пространство графа

Reading time12 min
Views12K
Особенность координатных систем на точечном базисе (ди- и би-координат) состоит в том, что их можно использовать как в обычном геометрическом пространстве, так и в пространстве графа.



Что такое пространство графа


Мерность пространства и мерность базиса


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

Information

Rating
Does not participate
Location
Кировоград, Кировоградская обл., Украина
Date of birth
Registered
Activity