Всё про Алгоритмы и Структуры данных – Telegram
Всё про Алгоритмы и Структуры данных
7.93K subscribers
329 photos
36 videos
5 files
2.8K links
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников.

Ссылка: @Portal_v_IT

Сотрудничество, авторские права: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
ESP32: Базовые алгоритмы машинного обучения

ESP32 давно зарекомендовал себя как универсальный микроконтроллер для IoT: он умеет работать с Wi-Fi и Bluetooth, управлять сенсорами и исполнительными устройствами. Но за последние годы стало ясно, что даже на таких простых устройствах можно запускать алгоритмы машинного обучения.

В этой статье рассмотрим, как на ESP32 можно реализовать три базовых алгоритма классификации — дерево решений, метод К-ближайших соседей (KNN) и полносвязную нейросеть на TensorFlow Lite.

https://habr.com/ru/articles/952518/

Алгоритмы и Структуры данных
Нормированные пространства и рендеринг трёхмерных фрактальных множеств: ray marching, поле расстояний, базовые примеры

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

Для меня самыми интересными из таких задач всегда являются те, которые связаны с визуализацией данных. Вот один из примеров. Я работал в команде Platform V Monitor — это кроссплатформенный ИТ‑мониторинг и сервисы телеметрии, для которого нужно было визуализировать представление данных в виде ориентированного графа с большим количество (1000+) вершин и еще большим количеством рёбер.

Каждая вершина должна была иметь подпись‑название и являлась управляющим элементом интерфейса. Одним из возможных вариантов решения, было использование методов компьютерной графики, «выход в 3D». И хотя в итоге удалось решить задачу, оставаясь в 2D, трёхмерный вариант решения имел свои достоинства.

https://habr.com/ru/companies/sberbank/articles/952102/

Алгоритмы и Структуры данных
Зубрить сложно, понимать легко: бинарный поиск

Как правило, обучающие материалы сводятся к показу одного «правильного» решения. Такие решения можно попробовать запомнить, но они быстро забываются и не помогают по-настоящему понять алгоритм.

Меня интригует вопрос: возможно ли объяснение, которое позволит не просто заучивать формулы, а понять саму логику? И если такое объяснение существует, даст ли оно возможность решать похожие задачи — или даже помогает становиться лучшим программистом?

Сразу оговорюсь: мы не будем останавливаться на тривиальных проверках,
вроде пустого массива или некорректных параметров. Фокус статьи — на сути алгоритма.

https://habr.com/ru/articles/952810/

Алгоритмы и Структуры данных
Задачи по алгоритмам: ищем непростые числа

Я не математик, но люблю решать задачи. Я люблю трудные задачи, которые не знаешь, как решать, а если и знаешь, трудно написать код верно.

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

Говорят "У человека феноменальная память - он помнит все". Он записывает. Не помните, что делали три дня назад? Ведите дневник, а не покупайте "таблетки для памяти".

https://habr.com/ru/articles/952986/

Алгоритмы и Структуры данных
ESP32 + LD2410: Архитектуры нейронных сетей для классификации движений

Микроконтроллеры давно перестали быть простыми устройствами для управления датчиками и исполнительными механизмами. Сегодня, благодаря библиотекам вроде TensorFlow Lite, даже компактный ESP32 способен выполнять инференс нейросетей в реальном времени. В этой статье я расскажу о серии экспериментов по классификации движений человека с помощью сверхширокополосного радарного датчика LD2410 и различных базовых архитектур машинного обучения, таких как полносвязная, свёрточная, рекуррентная нейронные сети и трансформер (механизм внимания).

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

https://habr.com/ru/articles/952548/

Алгоритмы и Структуры данных
Визуализация алгоритмов стандартной библиотеки C++ (продолжение)

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

https://habr.com/ru/articles/763024/

Алгоритмы и Структуры данных
2
Как не сломать продакшен: 8 основных паттернов распределенных систем

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

https://proglib.io/p/kak-ne-slomat-prodakshen-8-osnovnyh-patternov-raspredelennyh-sistem-2025-02-10

Алгоритмы и Структуры данных
Введение в трассировку лучей: простой метод создания 3D-изображений. Часть 2 — прямая трассировка

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

https://habr.com/ru/articles/763894/

Алгоритмы и Структуры данных
1
Введение в трассировку лучей: простой метод создания 3D-изображений. Часть 1 — как создается изображение?

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

https://habr.com/ru/articles/763416/

Алгоритмы и Структуры данных
1
Сжать и не пожалеть: как работает сжатие без потерь

Более 9 миллиардов гигабайт информации ежедневно путешествуют по интернету, заставляя постоянно искать все новые и новые методы упаковки данных. Самые эффективные решения используют подходы, которые позволяют достичь большей плотности за счет "потерь" информации в процессе сжатия. Google, например, недавно представили вариант сжатия с потерями, в котором отправляющий компьютер отбрасывает детали изображения, а ИИ на принимающей стороне их восстанавливает. Даже Netflix использует подход, допускающий потери, понижая качество как только становится известно, что пользователь использует устройство с низким разрешением.

В то же время очень мало внимания уделяется сжатию без потерь. Почему? Ответ прост - методы сжатия без потерь уже невероятно эффективны. С их помощью работает буквально всё, от формата PNG до утилиты PKZip. И это все благодаря студенту, что захотел пропустить экзамен.

https://habr.com/ru/articles/763248/

Алгоритмы и Структуры данных
1👍1
Программист embedded лезет в FPGA (часть 3, чего не может ардуинка)

В этой статье мы будем работать на более низком уровне. Делать на коленке прозрачные электроды, и наклеивать поляризационные плёнки, наверное, не надо. Будем формировать видео-сигнал, который идёт на монитор / телевизор.

Но совсем нахрапом не получится. Придётся сделать небольшой экскурс в тему передачи видео изображений.

https://habr.com/ru/articles/943264/

Алгоритмы и Структуры данных
Поиск с помощью регулярных выражений: подход с Виртуальной Машиной

Назовите самый используемый интерпретатор байт-кода или виртуальную машину (далее просто ВМ). JVM от SUN? Flash от Adobe? .NET и Mono? Perl? Python? PHP? Все они без сомнения популярны, но есть ещё одна ВМ, которая используется шире, чем все предыдущие вместе взятые. Этот интерпретатор байт-кода - библиотека регулярных выражений от Генри Спенсера (Henry Spencer) и её многочисленные наследники.

Первая статья из этой серии описывала два главных подхода к реализации поиска по регулярным выражениям: подход на основе конечных автоматов с линейной сложностью в худшем случае, который использовался в awk и egrep (а сейчас в большинстве реализаций grep); и подход на основе алгоритма с возвратом (бэктрекинг) с экспоненциальной сложностью в худшем случае, который используется почти везде, включая ed, sed, Perl, PCRE и Python.

https://habr.com/ru/articles/759372/

Алгоритмы и Структуры данных
Приложения алгебры кортежей. Часть 2. Математическая модель вопроса

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

Об алгебре кортежей (АК) и ее использовании для логико-семантического анализа было рассказано в моей статье в Хабре. В комментариях к статье предлагалось обратить внимание на функцию SELECT в языке SQL, которая соответствует операции Selection (Выборка) в реляционной алгебре. Эта операцию можно рассматривать как один из вариантов математической модели вопроса.

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

https://habr.com/ru/articles/763004/

Алгоритмы и Структуры данных
Helena.4.0 – новый алгоритм для подбора гиперпараметров

С целью автоматизации процесса подбора гиперпараметров автором данной статьи разработан алгоритм Helena.4.0. Конечной целью является создание автоматической системы построения моделей (auto-ML), которая бы подбирала гиперпараметры за минимальное время.

С помощью алгоритма Helena.4.0 можно подбирать гиперпараметры для моделей градиентного бустинга, нейросетей, и более того – для генетических алгоритмов. Автор считает, что алгоритмы Helena могут заменить в генетических алгоритмах генеративную часть – т.е. уйти от биологических аналогий, заменив псевдобиологическую генерацию признаков путем процедур «скрещивания» и «мутаций» на генерацию с помощью указанных алгоритмов.

Для поиска максимума функции алгоритм Helena.4.0 использует только ее значения, и не используют первые и последующие производные. Таким образом, этот алгоритм не требуют ни дифференцируемости, ни непрерывности максимизируемой функции.

Сравнение алгоритма Helena.4.0 с наиболее популярными конкурентами (Optuna, HyperOpt, RandomSearch) показывает его высокую конкурентоспособность.

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

https://habr.com/ru/companies/rosbank/articles/763026/

Алгоритмы и Структуры данных
Kaggle для футболистов. Разбираем подходы призеров соревнований по детекции столкновений (1 и 2 место)

Продолжаем разбирать подходы призеров Kaggle-соревнований от американской национальной футбольной лиги (NFL). Участники этого челленджа детектировали столкновения игроков в американском футболе, анализируя данные с видеокамер и датчиков, прикрепленных к форме футболистов. В продолжении первой части статьи расскажу про самые успешные подходы к этой задаче.

https://habr.com/ru/companies/magnus-tech/articles/756628/

Алгоритмы и Структуры данных
«Я есть Ты: Диалог об Истине, которая всегда была одна»

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

https://habr.com/ru/articles/954358/

Алгоритмы и Структуры данных
Быстрый двоичный поиск без ветвления

Тот же интерфейс функции, что и у std::lower_bound, но вдвое быстрее и короче. «Без ветвления», потому что if компилируется в команду условной передачи, а не в ветвление/условный переход. Ближе к концу статьи мы изучим опции компилятора и даже более быстрые версии полностью без ветвления. Для понимания этой статьи не нужны особые знания в C++. Достаточно понимать, что итераторы (first и last) по сути являются указателями на элементы массива, хотя могут указывать на один элемент дальше, чем последний элемент массива. Можете не обращать внимания на template, class, constexpr и &. Вот если бы существовал быстрый и чистый язык, работающий на уровне железа...1 2

https://habr.com/ru/companies/ruvds/articles/756422/

Алгоритмы и Структуры данных
1
Почему структура Ur, Uz не случайна даже при случайном k в ECDSA: математика за топологией цифровых подписей

ECDSA (Elliptic Curve Digital Signature Algorithm) является краеугольным камнем современной криптографии, защищающим транзакции в Bitcoin, SSL/TLS-соединения и электронные документы. Однако даже в хорошо изученных алгоритмах скрываются неочевидные математические свойства, которые могут быть использованы как для укрепления безопасности, так и для обнаружения уязвимостей.

В этой статье мы глубоко погрузимся в один из таких феноменов: почему структура параметров (U_r, U_z) в ECDSA остаётся детерминированной даже при идеально случайной генерации секретного числа k. Это свойство, часто игнорируемое в учебниках, имеет фундаментальное значение для понимания безопасности ECDSA и объясняет, как криптоаналитики обнаруживают уязвимости в реальных системах.

https://habr.com/ru/articles/954536/

Алгоритмы и Структуры данных
👍1
От нестационарности к прогнозу: пайплайн анализа и моделирования временных рядов

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

https://habr.com/ru/companies/sberbank/articles/954636/

Алгоритмы и Структуры данных
👍1