Всё про Алгоритмы и Структуры данных – 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
15 игр, которые прокачивают логику, алгоритмы, ассемблер и силу земли

Есть «Super Mario», признанная классика видео игр. Есть «Doom», который запускают на чайниках и тестах на беременность. Есть супер-популярные по статистике twitch.tv игры («League of Legends», «GTA V», «Fortnite», «Apex Legends») которые стримят пятая часть всех стриммеров.

А есть игры, на которые очень мало обзоров, но они супер крутые — игры про алгоритмы. Игры, в которых можно кодить на ретро-компьютере; игры, которые надо взламывать; игры, где можно программировать контроллеры или поведение персонажей; игры, где можно создавать свою игру внутри игры.

Под катом подборка классных игр про алгоритмы за последние 10 лет. Если что-то упустила — буду рада дополнениям.

https://habr.com/ru/companies/timeweb/articles/599835/

Алгоритмы и Структуры данных
2
Интерпретация моделей и диагностика сдвига данных: LIME, SHAP и Shapley Flow

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

Также поговорим о проблемах метода SHAP и его дальнейшем развитии в виде метода Shapley Flow, объединяющего интерпретацию модели и многообразия данных.

https://habr.com/ru/companies/ods/articles/599573/

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

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

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

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

https://habr.com/ru/companies/1c/articles/645365/

Алгоритмы и Структуры данных
1
k-means in Clickhouse

Алгоритм k-means хорошо известен и применяется когда надо быстро разделить массив данных на группы или т.н. "кластеры". Предполагается, что каждый элемент данных имеет набор численных метрик, и мы можем говорить как о позиции точки в некотором многомерном пространстве, так и о их взаимной близости.

k-means относится к категории EM-алогоритмов (Expectanion-Maximization), где мы попеременно определяем насколько правильно текущее разбиение точек на кластеры, а затем немного его улучшаем.

Этот достаточно простой алгоритм, был сформулирован ещё в 1950-х, и с тех пор реализован на самых разных языках программирования. Есть реализации для MySQL и Postgress, и даже для Excel.

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

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

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


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

https://habr.com/ru/companies/otus/articles/599309/

Алгоритмы и Структуры данных
ИИ-поиск в 2ГИС: как учим нейросети понимать настроение, фото и смыслы

Поиск — одна из ключевых функций в 2ГИС. Он помогает миллионам пользователей каждый день находить нужные места в городе. Долгое время мы опирались на классические методы: морфологию, справочник организаций, геопозицию и популярность объектов. Это позволяло покрывать множество сценариев, но со временем стало понятно — этого недостаточно.

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

https://habr.com/ru/companies/2gis/articles/951008/

Алгоритмы и Структуры данных
Музыка и математика: как аккорды вдохновляют архитектуру алгоритмов

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

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

Алгоритмы и Структуры данных
Как JPEG стал стандартом изображений в интернете

JPEG — формат-динозавр. Ему уже за тридцать, но он по-прежнему живее всех живых: даже в 2025 году изображения в JPEG встречаются повсюду.

В конце 80-х инженерам нужно было как-то справляться с растущими размерами файлов. Интернет был медленным, а фотографии — всё тяжелее. Тогда и придумали решение: сжатие с потерями, основанное на дискретном косинусном преобразовании (DCT). Если по-простому, DCT — это способ выкинуть из картинки то, чего наш глаз почти не заметит, и оставить главное. В итоге получаем файл в разы меньше, а картинка всё ещё выглядит прилично.

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

https://habr.com/ru/companies/first/articles/951960/

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

Алгоритмы, базы данных и качество данных — три темы, без которых сегодня не обходится ни один проект. От того, как разработчик обращается с ними, зависит не только скорость работы приложений, но и то, насколько вообще можно доверять системе. Если алгоритм выбран неправильно — система будет тормозить; если база построена на «костылях» — она станет источником ошибок; если данные не проверять на качество — отчеты превратятся в хаос.

Чтобы помочь разобраться в этом, команда Read IT Club собрала подборку из трех книг, которые проверили рецензенты клуба — эксперты из ведущих технологических компаний. В них нет академической скуки, зато есть практические советы: как выбрать правильный алгоритм, не угробить архитектуру базы и научиться бороться с «грязными» данными. Каждая из них решает свою часть головоломки, но вместе они дают цельную картину того, как работать с данными и кодом надежно, эффективно и без лишних драм.

https://habr.com/ru/companies/croc/articles/952010/

Алгоритмы и Структуры данных
Хватит писать «чистый» код. Пора писать понятный код

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

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

Алгоритмы и Структуры данных
Двадцать вопросов, которые помогают разработать алгоритм

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

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

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

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

Алгоритмы и Структуры данных
Бэктестер для торговых стратегий на GPU со скоростью просчёта 150 тыс стратегий за 1 секунду

Меня зовут Андрей Счастливый. Пишу на Python. Месяц назад разбираясь с одним пакетом для бэктестинга торговых стратегий на C был очень разочарован в низкой скорости. А ведь в пакете для бэктестинга самое главное скорость и вообще возможность массово пакетами тестировать торговые стратегии. Решил написать на Python свой бэктестер с GPU.

За месяц написал пакет и вот ближе к делу, хочу рассказать о нём. Тянуть не буду сразу в лоб, цифры в факты.

WarpTrade - высокопроизводительный GPU-бэктестинг торговых стратегий, написанный на Python с использованием Taichi. Проект построен на модульной архитектуре с универсальным движком, способным запускать любые торговые стратегии через систему регистрации ядер. В основе лежит алгоритм собственной разработки.

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

Алгоритмы и Структуры данных
Обучение скрытых слоёв S–A–R перцептрона без вычисления градиентов

Аннотация. Классический перцептрон Розенблатта с архитектурой S–A–R исторически не имел устойчивого алгоритма обучения многослойных структур. В результате в современном машинном обучении доминирует метод обратного распространения ошибки (backpropagation), основанный на градиентном спуске. Несмотря на успехи, этот подход имеет фундаментальные ограничения: необходимость вычисления производных нелинейных функций и высокая вычислительная сложность. В данной работе показано, что при интерпретации работы нейросети через алгоритм ID3 (Rule Extraction) скрытый слой автоматически формирует чистые окрестности в смысле кластерного анализа — признаки группируются по классам ещё до завершения обучения. На основе этого наблюдения автором предложен новый стохастический алгоритм обучения, восходящий к идеям Розенблатта, но принципиально расширяющий их: он позволяет обучать скрытые слои перцептрона без вычисления градиентов. Таким образом, впервые решается классическая проблема обучения архитектуры S–A–R без градиентных методов. Это открывает путь к созданию принципиально новых алгоритмов обучения нейросетей с более простой и интерпретируемой динамикой.

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

Алгоритмы и Структуры данных
🤯1
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

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