Все потоки
Поиск
Написать публикацию
Обновить
170.56

Алгоритмы *

Все об алгоритмах

Сначала показывать
Порог рейтинга
Уровень сложности

Как мы используем LLVM для ускорения формирования отчётов

Время на прочтение9 мин
Количество просмотров11K

Для бизнес-приложений очень важна возможность быстро сформировать нужный отчёт. Для этого, в частности, важно быстро получить результат запроса (часто – очень сложного запроса) к СУБД. Что не всегда просто, потому что с этой СУБД работают на чтение и запись тысячи (а иногда - десятки тысяч) пользователей.

 Чтобы не нагружать рабочую СУБД запросами для отчетов мы разработали механизм копий баз данных, копирующий данные (все или их часть) из рабочей БД в отдельную БД для отчетности. Пользователи могут строить отчеты на «отчетной» БД, быстрее получая результат и не нагружая рабочую базу.

 Для дальнейшего ускорения формирования отчетности мы разработали Дата акселератор — собственную SQL-совместимую in-memory базу данных, ориентированную на максимальную производительность в задачах OLAP. Дата акселератор может использоваться в качестве «отчетной БД» и позволяет существенно (иногда – на порядки) ускорить формирование отчетов.

Читать далее

Разделяй и Властвуй. Разбор задач

Время на прочтение5 мин
Количество просмотров21K


Решение задач с помощью метода "Разделяй и Властвуй" или по-английски "Divide and Conquer" является одним из базовых методов по ускорению алгоритмов. Примером тому служит переход от квадратичной сложности пузырьковой сортировки или сортировки вставками к сложности \inline O(n\log{n}) при сортировке слиянием. Или переход от линейной сложности к логарифмической, при реализации поиска элемента в отсортированном массиве (см. бинарный поиск).


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

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

День рождения Тони Хоара, создателя Quicksort

Время на прочтение1 мин
Количество просмотров3.4K

Сегодня 11 января исполняется 88 лет сэру Чарльзу Энтони Ричарду Хоару, разработчику алгоритма быстрой сортировки массивов. Тони Хоар — английский ученый в области информатики и вычислительной техники, он подарил миру не только алгоритмы Quicksort и Find, но и логику для доказательства корректности программ, формальный язык для описания моделей взаимодействия в параллельных системах (CSP), а также нулевую ссылку, за создание которой в дальнейшем принес свои извинения. 

Кстати, угадаете, что и почему изображено на нашей иллюстрации? Автору первого правильного ответа подарим мерч :)

Читать далее

Реализация подхода к сканированию объектов выносным сканером

Время на прочтение6 мин
Количество просмотров3.9K

Цель написания данной статьи — показать, как на реальном оборудовании реализовывать системы сканирования объектов и создавать их трехмерные модели выносным сканером профильного типа.

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

Читать далее

PROOF OF STAKE – это скам

Время на прочтение16 мин
Количество просмотров105K

Proof of Stake (PoS) – это мошенничество. Когда я говорю это, я имею в виду, что PoS 1) заявлен как система консенсуса, и 2) фактически неспособен на самом деле обеспечить консенсус.

Читать далее

Муравей Лэнгтона — загадочный клеточный автомат

Время на прочтение5 мин
Количество просмотров20K

В мире существует около 14 000 видов муравьёв, каждый из которых имеет собственное название. Но, даже если вы зададитесь такой целью, вы не найдёте ни в одном биологическом справочнике муравья Лэнгтона. Дело в том, что этот муравей — математическая абстракция, модель для описания поведения динамической системы.

Невесёлая жизнь у муравья Лэнгтона, но, как мы увидим, он не готов мириться с такой возмутительной ситуацией и всеми силами старается сбежать.

Читать далее

Мой первый опыт решения неточных задач или почему стоит заниматься олимпиадами

Время на прочтение8 мин
Количество просмотров8.1K

Решаем оптимизационную задачу с vk winter quest алгоритмами спортивного программирования

Читать далее

ARM Cortex M* — «сколько вешать в граммах»

Время на прочтение11 мин
Количество просмотров6.5K

Стандартные методы планирования вычислительного времени оперируют с точностью 1 ms (0,001 s) и погрешностью — 1 ms (SysTick).

Этого достаточно для большинства задач бюджетных микроконтроллеров stm32; гарантированный период прикладной задачи 0,01 s. При этом MPU загружается на 5-10%, пребывая преимущественно в холостом цикле или в состоянии «сна».

Архитектура бюджетных микроконтроллеров stm32 допускает работу с меньшими интервалами и погрешностью менее 10 us ( 0,00001 s).

Читать далее

Использование рекуррентных нейронных сетей в Reinforcement Learning

Время на прочтение12 мин
Количество просмотров11K
В задачах машинного обучения для обучения модели может использоваться известная целевая переменная (задачи такого типа называются «обучение с учителем»), либо модель самостоятельно учится находить закономерности с имеющихся данных, не имея заранее известные правильные результаты (такой тип задач называется «обучение без учителя»). Обучение с подкреплением (Reinforcement Learning, RL) не относится ни к первому типу, ни ко второму, однако обладает свойствами и того, и другого. Этот вид машинного обучения в настоящее время бурно развивается, разрабатывается множество теоретических алгоритмов RL [1], однако основная причина всплеска интереса заключается в множестве практических задач, в которых применяется RL, прежде всего в автоматизации, оптимизации и робототехнике. Обучение с подкреплением эффективно прежде всего там, где системе требуется анализировать окружающую среду и выбирать политику поведения с учетом получаемого отклика.
Читать дальше →

Градиентный бустинг с CatBoost (часть 2/3)

Время на прочтение8 мин
Количество просмотров22K

В первой части статьи я рассказал про понятие градиентного бустинга, библиотеки, с помощью которых можно реализовать данный алгоритм и углубились в одну из этих библиотек. Сегодня продолжим разговор о CatBoost и рассмотрим Cross Validation, Overfitting Detector, ROC-AUC, SnapShot и Predict. Поехали!

До этого момента мы мерили качество на каком-то конкретном fold’e (конкретной выборке), то есть взяли разделили нашу выборку на обучающую и тестовую, это не совсем корректно, вдруг мы взяли какой-то непрезентативный кусок нашего датасета, на этом самом куске мы получим хорошее качество, а когда модель будет работать с реальными данными, то с качеством все будет крайне грустно. Дабы избежать этого, необходимо использовать Cross Validation.

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

Читать далее

Букварь материалиста. Пространственная логика

Время на прочтение15 мин
Количество просмотров4.9K

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

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

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

Пространственная логика.

AASIST: Аудио защита с использованием сети с интегрированным спектро-временным графом внимания

Время на прочтение16 мин
Количество просмотров2.1K

Артефакты, которые отличают подделку от реальных данных, могут находиться в спектральной или временной областях. Их надежное обнаружение обычно зависит от ансамбля сложных систем, где каждая подсистема настроена на определенные артефакты. Мы стремимся разработать единую, эффективную систему, которая может обнаруживать широкий спектр различных атак с использованием спуфинга без использования групп баллов. Мы предлагаем новый слой внимания с гетерогенным наложением графа, который моделирует артефакты, охватывающие разнородные временные и спектральные области с гетерогенным механизмом внимания и узлом стека. С новой операцией максимального графа, которая включает конкурентный механизм и расширенную схему считывания, наш подход, названный AASIST, превосходит текущее состояние дел в данной области примерно на 20%. Даже облегченный вариант, AASIST-L, всего с 85 тыс. параметров, превосходит все конкурирующие системы.

Читать далее

Ближайшие события

TLS 1.2 (протокол безопасности транспортного уровня версии 1.2) (RFC 5246) (Часть 3.2)

Время на прочтение35 мин
Количество просмотров18K

В материале приводится продолжение перевода на русский язык стандарта IETF - RFC 5246, описывающего работу протокола безопасности транспортного уровня TLS версии 1.2. Данная часть перевода охватывает вторую половину описания работы рукопожатия TLS версии 1.2, а также завершает перевод основной части Стандарта.

Читать далее

Курсы Computer Science клуба в 2021 году: верификация, фотограмметрия, статистика, логика, теория игр и другие

Время на прочтение2 мин
Количество просмотров6.6K

Все курсы Computer Science клуба в 2021 году проходили в онлайн режиме. Мы собрали для вас подборку видеозаписей лекций, которые выложены на нашем youtube канале.

Читать далее

Пример применения кода Рида-Cоломона

Время на прочтение9 мин
Количество просмотров21K

Пример применения кода Рида-Cоломона

О чём это всё?

Всем привет! Наконец дошли руки описать то как я проверял на практике знания, полученные в ходе написания трёх статей об избыточном кодировании по методу Рида-Соломона (раздватри)

Читать далее

Распознаем фигуры по массиву точек: эллипсы и не выпуклые фигуры

Время на прочтение8 мин
Количество просмотров6.3K

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

Читать далее

Как муравьи решают проблемы коммивояжёров

Время на прочтение9 мин
Количество просмотров17K

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

Читать далее

Верификация DataMatrix Честный знак — почему она важна

Время на прочтение7 мин
Количество просмотров21K

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

Правильность маркировки как раз проверяется ее верификацией на специальных лабораторных приборах - верификаторах 2D кода. О важности верификации для успешной продаже товара на кассе и хочу рассказать.

Читать далее

Как я написал алгоритм сортировки, который быстрее std::sort. Продолжение

Время на прочтение21 мин
Количество просмотров10K

Прим. Wunder Fund: не спешите минусовать эту публикацию — её перевода на Хабре ещё не было :)

Это — продолжение моей предыдущей публикации (вот — перваявторая и третья части перевода), посвящённой тому, как я создал алгоритм сортировки, который быстрее std::sort. Эта статья — мой шанс углубиться в те детали, о которых меня спрашивали в комментариях. Я собираюсь разъяснить здесь некоторые вещи, которые оказались непонятными аудитории, и поговорить о будущем моего алгоритма, о доработках, в которых он нуждается.

Кто-то, за что я этому неизвестному благодарен, разместил ссылки на мою статью на Hacker News и на Reddit. И хотя эти ссылки там разместил не я, я, всё же, прочитал большую часть комментариев, сделанных пользователями этих сайтов. По какой-то причине те комментарии, что были сделаны в моём блоге, оказались гораздо позитивнее, чем комментарии на Hacker News и Reddit. Но у меня такое ощущение, что причина появления негативных комментариев заключается, в целом, в неправильном понимании того, о чём я пишу. Здесь я собираюсь расставить все точки над «i».

Читать далее

Вклад авторов