Всё про Алгоритмы и Структуры данных – 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
Два режима SPEC: разгоняемся на Peak, притормаживаем на Base

Все мы любим быстрые программы и высокие показатели в бенчмарках. Когда гоняешь тесты производительности, так и тянет включить все оптимизации компилятора, чтобы выжать максимум. Но если вы имели дело с пакетами тестов SPEC (например, SPEC CPU), то, вероятно, замечали, результаты там делятся на две категории Base и Peak.

В тестах SPEC CPU есть концепция базового прогона (base run) и пикового (peak run). Это строго определенные режимы с разными правилами оптимизации. Base про честность и сопоставимость, Peak про максимальную производительность любой ценой (ну, почти любой).

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

Алгоритмы и Структуры данных
1
Измерение сложности модели — Часть 3: Представляем Complexity Analyzer

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

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

Алгоритмы и Структуры данных
Итерационный бинарный критерий делимости: Деление без деления. Алгоритм для Big Integers и FPGA

Операция проверки делимости — одна из фундаментальных в информатике и теории чисел. Для обычных чисел, помещающихся в машинное слово, это одна быстрая аппаратная инструкция. Но для очень больших целых чисел (Big Integers), размер которых превышает разрядность регистра процессора, классическое взятие остатка N \bmod d становится ресурсоёмкой многословной процедурой.

Эта статья предлагает чёткую и явную формулировку детерминированного алгоритма для проверки делимости целого числа N на нечётный делитель d, родственного бинарному алгоритму Евклида. Его ключевая особенность: он использует исключительно операции сложения (X + d) и деления на 2 (побитового сдвига вправо, X \gg 1), что позволяет полностью избежать дорогой операции взятия остатка в его явном виде.

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

Алгоритмы и Структуры данных
Правда ли, что ICPC работает как социальный лифт в IT-карьере

Поэтому, когда мне поставили задачу написать про полуфинал Международной студенческой олимпиады по программированию (ICPC) для региона «Северная Евразия», я решил не пересказывать данные из Википедии. Вы и сами можете их прочитать, а кто-то даже рассказать о собственном опыте участия. Я спросил коллег внутри X5 Tech, как навыки, полученные на соревнованиях по программированию помогли им в реальной жизни: на собеседованиях, в продакшене, в решении сложных системных задач или даже в бытовых ситуациях. Про то, что спортивное программирование развивает алгоритмическое мышление, стрессоустойчивость и умение работать в команде в ограниченное время, пишут много, но теория не всегда переносится на практику.

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

https://habr.com/ru/companies/X5Tech/articles/976028/

Алгоритмы и Структуры данных
Оптимизация загрузки CPU в C# (и немного в Unity): ключевые подходы и стратегии на примерах

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

Использование эффективных алгоритмов
Одним из важнейших аспектов оптимизации CPU является выбор эффективных алгоритмов. При написании кода на C# убедитесь, что вы используете алгоритмы с минимальной временной сложностью. Например, при поиске элемента в большом массиве используйте алгоритмы со сложностью O(log n) или O(1), такие как бинарный поиск, вместо алгоритмов со сложностью O(n), таких как последовательный поиск.

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

Алгоритмы и Структуры данных
1
SQL HowTo: проверяем и объединяем диапазоны (Advent of Code 2025, Day 5: Cafeteria)

В этой челлендж-серии статей, начатой с прошлогоднего эвента, попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2025.

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

https://habr.com/ru/companies/tensor/articles/976670/

Алгоритмы и Структуры данных
Робот в лабиринте: обрабатываем в Python очереди с приоритетом

Данная статья является переводом публикации одного из разработчиков Twisted Моше Задка The Python heapq Module: Using Heaps and Priority Queues. Текст также адаптирован в виде блокнота Jupyter, с которым можно поиграть в интерактивном режиме в Colab.

https://proglib.io/p/robot-v-labirinte-obrabatyvaem-ocheredi-s-prioritetom-v-python-2020-07-07

Алгоритмы и Структуры данных
Дешевый как автобус, удобный как такси: перспективный вид общественного транспорта для больших и средних городов. Часть1

Если я только не допустил критической ошибки, то мне удалось обнаружить удивительную по своим характеристикам схему пассажирских перевозок. Представьте себе такую картину: вы находитесь в большом городе и вам нужно добраться из точки A в точку B. Все, что от вас требуется — это дойти до ближайшего перекрестка и на вашем смартфоне или установленном там специальном терминале указать точку назначения. Через несколько минут к вам подъедет небольшой, но просторный автобус. Автобус, в который можно войти, не пригибаясь, внести с собой детскую коляску, велосипед или даже виолончель, в котором всегда можно сесть и вытянуть ноги. Этот автобус довезет и высадит вас на ближайшем от точки B перекрестке. Вы доберетесь туда без каких-либо пересадок, а все путешествие, включая ожидание на остановке, займет всего на 25-50% времени больше, чем если бы совершили его на личном автомобиле. По моим оценкам в условиях современных мегаполисов такой вид транспорта будет достаточно массовым, чтобы цена одной поездки на нем была близка к стоимости билета на обычный городской автобус.

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

Алгоритмы и Структуры данных
IT-Забавы. 1. Обход конем шахматной доски с получением Магического квадрата

Найти обход конем всей шахматной доски, так чтобы:

Ходы образовывали непрерывную цепочку

Были посещены все поля по 1 разу с номерами от 1 до 64

Суммы номеров клеток обхода в каждом столбце были равны

-//- в каждой строке давали сумму 260

(*) Маршрут был замкнут (с поля 64 был ход на поле 1)

(*) Маршрут был симметричен относительно центра

(*) на обеих диагоналях сумма 260
(*) - необязательное дополнительное требование

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

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

Меня зовут Алексей Капранов, я архитектор-исследователь в команде квантовых вычислений в Cloud.ru. Сегодня я расскажу про подход, который позволяет не только моделировать большие квантово-механические системы, но и полезен для целого ряда задач, включая машинное обучение и нейронные сети.

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

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

https://habr.com/ru/companies/cloud_ru/articles/976884/

Алгоритмы и Структуры данных
Ищем по-соседски: методы приближённого поиска ближайших соседей для A/B-тестирования гипотез

В этой статье мы рассмотрим один из подходов к офлайновому A/B-тестированию, поговорим о сложностях, которые возникают при оценке результатов пилотного проекта (далее — пилота) и разберём реализацию в коде.

В Сбербанке постоянно проводится много пилотов, часть из которых реализуются в сети продаж Банка (отделения, банкоматы) и требуют нестандартного подхода к оценке результатов.

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

Алгоритмы и Структуры данных
SQL HowTo: математика вдоль и поперек (Advent of Code 2025, Day 6: Trash Compactor)

В этой челлендж-серии статей, начатой с прошлогоднего эвента, попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2025.

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

https://habr.com/ru/companies/tensor/articles/977976/

Алгоритмы и Структуры данных
1
Я написал алгоритм вычисления дат, который на 30–40% быстрее остальных

В этой статье я представлю мой завершённый очень быстрый алгоритм преобразования дат. Он обеспечивает существенный прирост скорости, по величине сравнимый с приростом, достигнутым предыдущим самым быстрым алгоритмом (Neri-Schneider 2021) относительно его предшественника (C++ Boost). Полная реализация алгоритма на C++ выпущена как свободное и бесплатное ПО (лицензия BSL-1.0).

Алгоритм генерирует точные результаты за период ±1,89 триллиона лет, поэтому подходит для обработки полного 64-битного времени UNIX (в секундах).

Весь алгоритм был переписан сверху вниз с различными микрооптимизациями, но три его основные принципа сохранились:

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

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

Если кратко, то знать местоположение скутера для нас критически важно по трём причинам:

Чтобы юзер мог выбрать удобный скутер в приложении и, дойдя до него, обнаружить его именно там, где он обозначен на карте;

Чтобы чарджер, меняя батареи на разряженных скутерах, мог делать это максимально продуктивно, а не ходить вслепую по парковкам;

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

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

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

https://habr.com/ru/companies/whoosh/articles/978256/

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

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

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

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

Алгоритмы и Структуры данных
Ленивое программирование с помощью ChatGPT: время пришло?

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

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

Алгоритмы и Структуры данных
Частотный vs байесовский подходы: оцениваем True Positive Rate при неполной разметке данных

Привет, Хабр! Меня зовут Алан Савушкин (@naive_bayes), я — дата-сайентист в команде Data Science & Big Data «Лаборатории Касперского», и мы отвечаем в том числе за фильтрацию нерелевантных алертов при телеметрии киберугроз в проекте Kaspersky Managed Detection and Response (MDR).

https://habr.com/ru/companies/kaspersky/articles/726764/

Алгоритмы и Структуры данных
Измерение разных сложности моделей — Часть 2: Применяем теорию на практике

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

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

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