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

Ссылка: @Portal_v_IT

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

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
Кому нужен Graphviz, если можно написать его самому?

Недавно мы переделали наши внутренние инструменты, визуализирующие компиляцию JavaScript и WebAssembly. При работе оптимизирующего компилятора Ion мы теперь можем генерировать интерактивные графы, демонстрирующие, как конкретно обрабатываются и оптимизируются функции.

Вы можете сами поэкспериментировать с этими графами в оригинале статьи. Просто введите какой-нибудь код на JavaScript в функцию test, и наблюдайте за созданием графа. Также там можно щёлкать и перетаскивать граф, менять масштаб при помощи колеса мыши с зажатым Ctrl и перетаскивать ползунок вниз, чтобы изучить процесс оптимизации.

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

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

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

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

Как говорит Википедия “Поиск подстроки в строке — одна из простейших задач поиска информации”, но это не совсем так, ниже я расскажу про разные алгоритмы решения и покажу примеры их реализации. Начнем!

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

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

Недавно на хабре мне понравилась статья "Математическая оптимизация и моделирование в PuLP: задача о назначениях" , где автор и, как я потом узнал, мой знакомый решил сделать серию статей о математической оптимизации, с целью популяризовать это направление и максимально доступно ознакомить читателей с инструментами, позволяющими решать такой класс задач, и научить пользователя видеть такие задачи в реальном мире, чтобы понимать, где может оказаться полезен этот инструмент. Так, в своей статье автор описывает решение задачи назначения ресурсов на потенциальные работы с помощью верхнеуровневой питоновской оболочки pulp с подключением солвера cbc для решения самой задачи смешанного целочисленного программирования.

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

Алгоритмы и Структуры данных
1👍1🔥1
Эволюция радиомашинок в среде Unity с помощью NGspice

В этой статье я расскажу про свой эксперимент: я создал в Unity симуляцию радиоуправляемых машинок, которые эволюционируют. «Мозгом» каждой машинки является электронная схема. Я заставил эти схемы мутировать(случайно меняться) и скрещиваться(обмениваться частями), чтобы создавать новые модели машин и улучшать их. Их «интеллект» и поведение меняются в зависимости от того, сколько блоков они успешно поднимают.
Старт симуляции:
Мутация: У машинки меняется "ДНК" (её электронная схема)
Скрещивание: Эта машинка объединяет свои "гены" с другой, и рождается новая.
Принцип такой: «мозг» машинки (её радиосхема) учится методом проб и ошибок. Каждый раз, когда она успешно поднимает блок, она получает положительный сигнал (подкрепление), который заставляет её повторять удачные действия в будущем.
Основная задача заключалась в организации непрерывного обмена данными между Unity и NGspice.

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

Алгоритмы и Структуры данных
👍31
ИИ-ученые 2025: SR-Scientist, DeepEvolve и Kosmos — чем отличаются и зачем. И почему выстрелил Kosmos

В 2025-м на наших глазах складывается новый класс инструментов - ИИ-Ученые (AI-Scientist). Если раньше алгоритмы ИИ могли только генерировать идеи или перерабатывать уже известные решения, то современные системы умеют не просто придумывать гипотезы, но и реализовывать их на практике, тестировать и совершенствовать из раза в раз.

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

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

Алгоритмы и Структуры данных
🤯1
Кэширование и всё, что с ним связано

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

Да, я знаю, тема кажется избитой. Но когда я впервые осознала, что одни и те же принципы работают на всех уровнях, от крошечного L1-кэша до распределенного Redis-кластера — это было похоже на инженерное просветление. Предлагаю и вам пройти этот путь вместе со мной.

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

Алгоритмы и Структуры данных
2
В процессе обучения нейронных сетей получаются красивые фракталы

Как-то раз моя пятилетняя дочка, вернувшись домой из детского садика, сообщила мне и моей жене, что математика — тупая штука (!). С тех пор мы не покладая рук работаем (пока что успешно), стараясь увлечь её всевозможными математическими интересностями, а теперь ещё и гордимся её успехами в математике. Одна из наших наиболее удачных находок привела к тому, что теперь дочь очень интересуется фракталами вообще. Особенно ей нравится смотреть видеоролики, где с увеличением показаны множества и оболочки Мандельброта, а вдобавок есть капусту романеско. Благодаря этому увлечению дочери, я стал больше задумываться о фракталах, а также о том, как они соотносятся с особенно волнующей меня темой — искусственными нейронными сетями.

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

Алгоритмы и Структуры данных
👍1
Параметризация нечётных чисел на основе подмножеств вычетов по модулю шесть

Известно, что подмножество вычетов по модулю числа представляет собой набор целых чисел, полученных при делении на заданный модуль [Subspace Sum Graphs over Residue Class Rings, J. Sangwisat, S. Sirisuk, 2014, Lobachevskii journal of mathematics]. Вычет по модулю m – это остаток от деления целого числа на m. Множество всех возможных вычетов по модулю m называется полной системой вычетов и обозначается как Z/mZ или {0, 1, …, m-1} [An efficient algorithm deciding chaos for linear cellular automata over ( Z / m Z ) n with applications to data encryption, A. Dennunzio, E. Formenti, L.Margara, 2024, Information Sciences]. Подмножество вычетов по модулю m – это любой набор элементов из этого множества.

Предлагается рассмотреть параметризацию всех натуральных нечетных чисел на основе приведенной системы вычетов {1, 3, 5}, которая взаимно проста с модулем 6. Показан способ описания подмножеств вычетов {1, 3, 5}, который за счет разбиения на подмножества, подпространства, уровни масштабирования и индексации внутри уровней, позволяет исчерпывающе покрыть все нечетные числа и доказывает их фрактальную структурную детерминированность.

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

Алгоритмы и Структуры данных
🔥1
Что не так с ИИ-«искусством»

Не знаю, как у вас, но когда я натыкаюсь на заполонившие интернет изображения и видео, которые были созданы ИИ, у меня возникает очень странное чувство. Это своего рода инстинктивное ощущение, что с этими изображениями что‑то не так.

Часть меня скептически относится к этой инстинктивной реакции: не попадаю ли я в ловушку, в которую попадали бесчисленные поколения до меня? Может быть, я, как могли бы предположить сторонники ИИ, просто рефлекторно отвергаю следующий логический шаг в технологическом прогрессе, потому что он несёт с собой некомфортные для меня перемены? Может быть, я просто повторяю за Платоном, когда он критиковал развитие письменности, утверждая, что это приведет к потере памяти у людей?

Или это инстинктивное чувство, что что‑то «не так» с «искусством», созданным ИИ, указывает на нечто более глубокое и истинное? Не сообщает ли оно нам что‑то важное о том, что такое искусство для нас, для людей? О том, что, каким бы ни было искусство, попытка создать его с помощью ИИ — это своего рода насилие?

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

Алгоритмы и Структуры данных
🤯1
Два универсальных SIMD алгоритма

Большинство SIMD инструкций узконаправленны, например применяют бинарную операцию параллельно для нескольких чисел, упакованных в длинный регистр. Применение таких операций прямолинейно и в большинстве случаев компилятор сам оптимизирует код с использованием таких инструкций. Например компилятор легко соптимизирует таким образом проверку несложного предиката на массиве или например суммирование элементов массива. Есть однако и более универсальные инструкции, в частности довольно много всякого рода манипуляций с битами внутри регистра. В этой статье хочу рассказать о двух таких инструкциях: уже давно присутствующей PSHUFB и довольно новой GF2P8AFFINEQB, расскажу как с их помощью делать побайтовую обработку общего вида и приведу пару примеров с известными операциями такими как popcount, подсчет четности, разворот битов числа.

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

Алгоритмы и Структуры данных
🤯1
Кодирование с помощью параметризации нечётных чисел

Рассмотрим стандартную 8-битную кодировку (например, ASCII+). Но с одним условием, мы хотим передавать сообщения так, чтобы только адресат мог их расшифровать — без применения традиционных криптографических примитивов, таких как AES или RSA. Есть ли альтернатива? Оказывается, да — можно построить биективное отображение между символами и определённым подмножеством нечётных натуральных чисел, генерируемых по заданному правилу.

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

Алгоритмы и Структуры данных
🤯1
Алготрейдинг на крипторынке: Реализация стратегии «Bomberman» как самостоятельного Python-бота

. Вдохновившись недавней статьей на Veles Finance "«Bomberman»: стратегия для крипторынка с индикаторами BOP, Mean Reversion и Дончиана", я решил воплотить эту идею в жизнь. Не просто в теории, а в коде: создал полноценного алгобота на Python, который автоматизирует торговлю, тестирует параметры и визуализирует результаты.

Этот бот прозрачен: использует открытые данные с binance, классические индикаторы технического анализа и строгий walk-forward бэктест, чтобы избежать look-ahead bias (смещения в будущее).

В статье разберем логику стратегии, архитектуру бота, ключевые функции и реальные результаты на исторических данных BTC/USDT. Если вы программист с интересом к финансам или трейдер, жаждущий автоматизации, — добро пожаловать. Мы пройдемся по коду, формулам и рискам.

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

Алгоритмы и Структуры данных
🤯1
Арбитраж ставок финансирования — создаём скрипт для отслеживания возможностей

На крипто рынке у бессрочных фьючерсов существует специальный механизм: ставка финансирования (funding rate) - периодический платёж между держателями длинных (long) и коротких (short) позиций, который служит для выравнивания цены фьючерса с ценой спота.

Арбитраж по ставке финансирования - стратегия, цель которой не столько угадать движение цены, сколько извлечь выгоду из разницы в ставках финансирования на разных площадках или между контрактом и спотом.
Например: если фьючерс на актив торгуется с положительной ставкой +0.03 % за период, то держатели short получают оплату от long. Арбитражер может занять длинную позицию на споте и короткую на фьючерсе, тем самым оставаясь почти нейтральным к движению цены, и получать платёж по ставке. Или - если ставка отрицательная (short платят long) - можно действовать наоборот: short спот и long фьючерс.

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

Алгоритмы и Структуры данных
🤯1
Решаем криптарифмы с помощью алгебры и python

Если вы увлекались математикой в возрасте до 12 лет, то, наверное, встречались с криптарифмами - числовыми ребусами.

Числовым ребусом называется корректное арифметическое выражение (обычно - равенство), часть цифр в котором заменена на буквы и звездочки. Правила просты: одинаковые буквы заменяются на одинаковые цифры, разные - на разные.

Задача - восстановить исходные цифры, получив верное равенство.

Числовые ребусы хороши для тренировки у младшеклассников навыков логического мышления и счета в столбик. Однако и взрослым программистам может быть интересно поискать ответ на общий вопрос - а как, всё таки, алгоритмизировать процесс решения ребуса?

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

Алгоритмы и Структуры данных
1🤯1
Как работает навигация между городами без интернета

2ГИС с самой первой версии навигатора умеет строить разные виды маршрутов — автомобильные, пешеходные, маршруты на общественном транспорте — на мобильных устройствах без доступа к интернету, но только внутри городов.

С 2019 года 2ГИС также умеет строить маршруты между городами, но только при наличии интернета.

Уже давно наши пользователи просили дать возможность строить междугородние маршруты без доступа к сети. И вот, мы наконец сделали это.

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

Алгоритмы и Структуры данных
🤯1
Серверы VALORANT с тикрейтом 128

Привет! Меня зовут Brent «Brentmeister» Randall (Брент Рэндалл). Я — инженер из команды Gameplay Integrity, которая занимается игрой VALORANT. В сферу нашей ответственности входит система сборки игры, фреймворки, используемые для автоматизации различных задач, производительность игрового клиента и серверов. Именно последнему пункту этого списка и посвящена данная статья. Я поделюсь с вами историей поиска подходов, позволивших вывести производительность наших серверов на оптимальный уровень.

https://habr.com/ru/companies/wunderfund/articles/964694/

Алгоритмы и Структуры данных
👍21
Главная проблема «чистых архитектур»

Откройтелюбой пулл‑реквест в проекте с любой «чистой архитектурой», и вы скорее всего увидите не обсуждение бизнес‑логики, а срач. «Это нельзя класть в UseCase, это логика домена!», «Зачем тут еще один DTO, мы же просто поле прокидываем!», «Этот интерфейс не нужен, у нас никогда не будет другой реализации!». Полагаю, с очень многими такое случалось.

Это и есть главная проблема. «Чистая архитектура» — это не инженерная дисциплина. Это множество концепций, который каждый понимает по своему. И это касается не только чистой архитектуры, которую описывает «о великий Роберт Мартин». Это касается вообще всех архитектур. Из‑за отсутствия конкретных ответов каждая команда превращается в парламент, где все спорят, но никто ничего не может решить. Архитектура из инструмента для разработки превращается в причину, по которой разработка стоит на месте, а страдают все.

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

Алгоритмы и Структуры данных
👍1
Нечёткий поиск при пересечении множеств, или Как выжать все соки из Хэширования по сигнатуре

На просторах интернета легко можно найти материалы по реализации нечёткого поиска, в которых предполагается поиск одной строки в множестве строк M. Но что если возникнет необходимость реализовать нечёткое сравнение множества M₁ с множеством M₂? При классическом подходе нам придется выполнить M₁*M₂ сравнений - при линейном росте этих множеств, сложность задачи будет расти экспоненциально, в плане производительности это решение никуда не годиться!

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

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

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