Всё про Алгоритмы и Структуры данных
7.77K subscribers
344 photos
37 videos
5 files
3.14K links
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников.

Ссылка: @Portal_v_IT

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

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
Эдсгер Дейкстра. Человек, который придумал параллельные вычисления

Д-р наук, профессор Эдсгер Дейкстра (Edsger W. Dijkstra, 1930−2002) — легендарный голландский и американский учёный, труды которого заложили фундамент современного программирования. Среди всех учёных прошлого Дейкстра оказал самое большое влияние на современную информатику. Он один из разработчиков концепции структурного программированияформальной верификации, распределённых вычислений, построения компиляторов, графовых алгоритмов, дизайна алгоритмов, дизайна ПО, дизайна математических аргументов, языков программирования и операционных систем.
Некоторые статьи Дейкстры всего лишь на несколько страниц становились источником целых новых исследовательских направлений. Ряд современных концепций были впервые выявлены Дейкстрой и носят придуманные им названия. Например, параллельные вычисления.

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

Алгоритмы и Структуры данных
Отечественный суперкартридж для старушки Mega Drive и его киллер-фичи

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

Ко мне в руки попал профессиональный флеш-картридж InviteDRIVE v6 MAX с поддержкой игр Sega Genesis / Mega Drive / Sega CD / Master System / 32x, разработанный широко известным в узких кругах ретрогеймеров Масяней из Новосибирска. Главной, но не уникальной особенностью картриджа является возможность играть во всю библиотеку Sega CD игр различных регионов на оригинальной 16-ти битной консоли фирмы Сега не имея самого дорогостоящего и капризного CD аддона.

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

Алгоритмы и Структуры данных
Multi-region quorum: «все регионы согласны» против «N из M»

В моём uptime-мониторинге Valpero сейчас семь production-мониторов и десять probe-регионов. Когда я только начал, false-positive алёрты приходили часто — типичная история с single-region проверкой. Поставил quorum-логику. Тут оказалось, что вариантов quorum’а несколько, и они дают разное поведение в пограничных случаях.

Ниже расскажу про два главных подхода — K-of-N (как в Pingdom, BetterStack) и all-must-agree (как у меня) — с реальным кодом, который у меня сейчас в проде.

В конце разберу edge-кейсы которые ломают каждый из подходов, и почему я остановился на all-must-agree с consecutive-failure threshold.

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

Алгоритмы и Структуры данных
Q-LLL: как мы сделали LLL-редукцию наблюдаемой, управляемой и проверяемой

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

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

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

Алгоритмы и Структуры данных
Размышления на тему задач стоящих перед ИТ‑специалистами и опрос

Это статья написана дипломированным инженером‑конструктором (по первому образованию), разработчиком систем автоматизированного проектирования (САПР) и (по известным причинам) вынужденно ставшим сертифицированным специалистом по системам офисного документооборота.

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

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

Алгоритмы и Структуры данных
Пока вы спите ИИ-агент закрывает задачи за вас

ChatGPT, Claude и DeepSeek уже стали базой. Но главный тренд 2026 года – автономные AI-агенты, которые не просто отвечают на запросы, а сами выполняют ваши рабочие задачи и рутину.

На бесплатном практикуме команда Зерокодера покажет, как установить и настроить OpenClaw – локального AI-агента для работы и автоматизации задач.

В эфире покажут:

– как установить и настроить OpenClaw;
– как автоматизировать рутину и сократить количество ручных действий;
– как собрать мощнейшую рабочую связку Claude + OpenClaw + Cursor;
– как встроить AI-агента в текущую работу и ускорить процессы;
– как ускорить текущие процессы без найма дополнительных людей.

Это не вебинар «с нуля в IT» – это практикум для тех, кто уже использует ИИ и хочет выйти на следующий уровень.

🎁 Бонус: гайд по установке и настройке OpenClaw на вашем ПК.

Бесплатный практикум – по ссылке.
Свой маленький GIS: приложение для мультиспектральных и гиперспектральных снимков

Привет, Хабр. Меня зовут Алексей, я C#-разработчик. В этой статье хочу рассказать о своём проекте очень запавшем мне в душу, который я делал на тему обработки изображений, GIS и дистанционного зондирования Земли. Сделан он несколько лет назад в рамках дипломной работы, но даже спустя годы мне интересна данная тема и она по-прежнему остаётся очень перспективной в различных отраслях.

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

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

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

Именно nonce — одно из самых хрупких мест ECDSA и Schnorr-подписей. Не потому, что сами протоколы “плохие”, а потому, что они требуют дисциплины: каждый nonce должен быть секретным, уникальным и достаточно случайным. Если nonce повторился, частично утёк, оказался слишком коротким или начал следовать закономерности, приватный ключ может стать вычислимым.

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

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

Всем привет! Меня зовут Андрей, я финалист ICPC (Международной студенческой олимпиады по программированию), разработчик Техплатформы Городских сервисов Яндекса. Эта статья — концентрат неочевидных (а порой и контринтуитивных) советов по подготовке к соревнованиям. Годами я тренировался, набивал шишки на контестах и набирался мудрости у топовых тренеров, чтобы собрать этот опыт в одном месте.
Олимпиадное программирование — это настоящий спорт, где важно грамотно выстроить процесс тренировок и научиться применять свои навыки в условиях ограниченного времени. За годы участия в самых разных конкурсах и турнирах я понял, что успех складывается не из зубрёжки сложных алгоритмов, а из ежедневной практики, работы над ошибками и правильного баланса между теорией и практикой.
В статье я расскажу о своём опыте подготовки к различным чемпионатам по алгоритмам и поделюсь лайфхаками, как подготовиться к любому серьёзному челленджу.

https://habr.com/ru/companies/yandex/articles/1029668/

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

Всем привет! Меня зовут Андрей, я финалист ICPC (Международной студенческой олимпиады по программированию), разработчик Техплатформы Городских сервисов Яндекса. Эта статья — концентрат неочевидных (а порой и контринтуитивных) советов по подготовке к соревнованиям. Годами я тренировался, набивал шишки на контестах и набирался мудрости у топовых тренеров, чтобы собрать этот опыт в одном месте.
Олимпиадное программирование — это настоящий спорт, где важно грамотно выстроить процесс тренировок и научиться применять свои навыки в условиях ограниченного времени. За годы участия в самых разных конкурсах и турнирах я понял, что успех складывается не из зубрёжки сложных алгоритмов, а из ежедневной практики, работы над ошибками и правильного баланса между теорией и практикой.
В статье я расскажу о своём опыте подготовки к различным чемпионатам по алгоритмам и поделюсь лайфхаками, как подготовиться к любому серьёзному челленджу.

https://habr.com/ru/companies/yandex/articles/1029668/

Алгоритмы и Структуры данных
Муравьи против трансформеров: старый алгоритм 1992 года, который вернулся

Начну с признания: истории формата «природа оптимизирует лучше людей» меня обычно раздражают, слишком уж часто это все притянуто за уши. Но с муравьями история действительно странная, и мне ее захотелось проверить.
Короткая справка по нашему герою. Аргентинский муравей Linepithema humile в миллиметр длиной, с глазами у него все плохо, а в мозге около 250 000 нейронов (у нас, напомню, 86 млрд). Карты местности он не помнит. 
В 1989 году четверо бельгийских биологов поставили этим муравьям простой эксперимент — гнездо, еда, два мостика, где один длиннее другого в два раза. Через несколько минут вся колония сошлась на короткой ветке в 100% прогонов. И все это без координатора, без плана и без голосования. 
Через три года этот эксперимент превратится в Ant Colony Optimization — алгоритм, который я сегодня натравлю на классический TSP-бенч и получу 0,10% отставания от оптимума. А в 2023, через 34 года после наблюдений в Брюсселе, тот же алгоритм вернулся на NeurIPS в качестве бэкбона для графовых нейросетей. Что же, приступим.

https://habr.com/ru/companies/selectel/articles/1031574/

Алгоритмы и Структуры данных
Обратное распространение ошибки: от интуиции до кода

Современные нейросети часто воспринимаются как черная магия. Вы закидываете в черный ящик датасет, ждете пару часов, и вот уже модель пишет за вас код, генерирует картины и безошибочно отличает собаку от выпечки. Но под капотом нет никаких заклинаний. Вся эта вычислительная мощь держится на одном элегантном алгоритме, основы которого были заложены еще в 1970-х годах — обратном распространении ошибки (Backpropagation).
Сейчас порог входа в машинное обучение низок как никогда. Чтобы заставить сеть учиться, достаточно написать loss.backward() в PyTorch или вызвать model.fit() в Keras. Фреймворки берут всю математическую рутину на себя. Это чертовски удобно, но порождает проблему: мы получаем разработчиков, которые умеют собирать архитектуры из готовых блоков-лего, но впадают в ступор, если спросить их, что именно происходит при вызове backward(). Как сеть понимает, какой конкретно вес в десятом слое виноват в том, что на выходе получилась ерунда?
В этой статье мы снимем покров тайны. Мы разберем backprop на пальцах и понятных аналогиях, сдуем пыль со школьного учебника алгебры (не пугайтесь, нам понадобится только база) и напишем этот алгоритм с полного нуля на чистом Python.

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

Алгоритмы и Структуры данных
«Алгоритмы на языке Go». Книга, которую ждали

Сегодня познакомим вас с самой долгожданной новинкой апреля — книгой «Алгоритмы на языке Go», которую мы успели выпустить в продажу 30 числа.
Автор книги — Артём Михайлов, пишущий на Хабре под ником Morettom @morett1m, Go- и Rust-разработчик, также ведущий телеграм-канал  t.me/coreartem.
Внимательные читатели не будут удивлены увидеть эту книгу, поскольку мы систематически наполняем наш ассортимент качественными книгами по алгоритмам для очень разной целевой аудитории. Наиболее фундаментальный труд в этой области, который мы переиздаём и допечатываем на протяжении многих лет — это «Алгоритмы» Стивена Скиены (сейчас актуально 3-е издание). Важнейшие книги по алгоритмам для начинающих, которые мы выпустили в последние годы – это «Алгоритмический тренинг. Решение практических задач на Python и C++» Максима Иванова и «Базовые алгоритмы. Реализация на Python и C++ на примере классических игр»  Павла Довгалюка.

https://habr.com/ru/companies/bhv_publishing/articles/1032182/

Алгоритмы и Структуры данных
Bug fingerprinting для UI: почему stack trace не работает и что вместо

TL;DR: Sentry дедуплицирует backend‑ошибки по хешу (error class + top stack frame + module). Для UI‑багов этот рецепт ломается — у expect(button).toBeVisible() нет stack frame в продуктовом смысле, есть локатор + assertion + URL. В webtest‑orch я собрал composite SHA-256 fingerprint из (normalized_selector | assertion type | error class | URL template | message[:80]) с тремя rules нормализации (:nth-child, UUID, /users/123 → /users/:id). Это даёт стабильный 8-hex BUG-id который выживает прогоны и даёт diff new / regression / persisting / fixed без БД и embedding«ов.»

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

Алгоритмы и Структуры данных
Можно ли вычислить секретный ключ HMAC, если научиться инвертировать хеш-функции?

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

Предлагаю в этой статье пойти дальше и рассмотреть оракул, способный найти прообраз (точнее, совокупность возможных прообразов) заданного хеш-кода конкретной хеш-функции. Поскольку хеш-функции часто используются в более сложных конструкциях, предлагаем посмотреть и порассуждать, как наличие такого оракула влияет на свойства вышележащих криптографических механизмов. В качестве их примера рассмотрим конструкции HMAC (Hash-based Message Authentication Codes – коды аутентификации сообщений на основе хеширования).

https://habr.com/ru/companies/aktiv-company/articles/1031788/

Алгоритмы и Структуры данных
Невидимый враг многопоточности: False Sharing и кэш-линии процессора

Представьте типичную ситуацию: вы оптимизируете высоконагруженный бэкенд или сетевой сервис. И абсолютно неважно, на чем вы пишете — C++, Java, Go или C#. У вас есть несколько потоков, и вы решаете избавиться от медленных блокировок. Ведь мьютексы — это узкое горлышко, верно?

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

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

Алгоритмы и Структуры данных
🔥1
Почему нейросети — это тупик? Новый взгляд на архитектуру искусственного интеллекта

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

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

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

Алгоритмы и Структуры данных
Модуль collections в Python: ваш чит-код для решения алгоритмических задач

Если вы хоть раз пытались вкатиться в алгоритмы, решали задачки на LeetCode или готовились к собеседованиям, то наверняка ловили в лицо обидную ошибку Time Limit Exceeded (TLE). Вроде бы логика решения идеальная, на базовых тестах всё работает, но при отправке код отваливается по времени.
Самая классическая причина такой боли у новичков — банальное list.pop(0).
Когда вы пишете эту строчку, чтобы достать первый элемент из очереди, Python не просто забирает значение. Обычный список под капотом — это динамический массив. Удалив первый элемент, язык вынужден сдвинуть все оставшиеся элементы на одну позицию влево. Если в списке миллион элементов, это миллион операций ради одного удаления. Итог: скрытая сложность  там, где вы ожидали быстрый ответ, и проваленный тест.

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

Алгоритмы и Структуры данных
Конвейеры формирования изображений. Часть 2: Баланс белого и преобразование к стандартному наблюдателю

С вами снова Егор Ершов, руководитель группы «Цветовая вычислительная фотография» в AIRI и заведующий сектором репродукции и синтеза цвета ИППИ РАН. Я продолжаю свой цикл статей по мотивам лекций по вычислительной фотографии, и в прошлый раз мы приступили к разбору типичных конвейеров формирования изображения, заложенных в наши профессиональные камеры и мобильные телефоны.
Типичный пайплайн — от нажатия кнопки затвора до сохранения файла — довольно внушителен по количеству шагов, грубо его можно разделить на подготовку сырого RAW‑изображения и последующую обработку программными средствами. В предыдущей статье мы успели рассмотреть лишь первые два шага — регистрация света и дебайеринг, на этот раз поговорим про баланс белого и переход в пространство стандартного наблюдателя.

https://habr.com/ru/companies/airi/articles/1032886/

Алгоритмы и Структуры данных
Вариация на тему Рида-Соломона

В одном из проектов столкнулся с задачей кодирования данных с целью восстановления потерянных пакетов. Поскольку обработка пакетов осуществлялась полностью на цифровом уровне без доступа к информации от аналогового приемника (hard-decision), то я решил использовать код Рида-Соломона (РС). Обработка пакетов осуществлялась на контроллере esp32-s3, который среди прочего имеет возможность работы с векторами. И необходимо иметь большую силу воли, чтобы не воспользоваться этой интересной возможностью для ускорения вычисления. Собственно эта краткая статья посвящена адаптации и модификации кода РС для возможности использования векторных операций на этом контроллере.

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

Алгоритмы и Структуры данных
Семь раз посчитай — один раз урони: моделируем инциденты до деплоя

Эта статья о том, как получить грубый расчёт деградации системы ещё до релиза. Без отказа от хаос-инжиниринга или мониторинга, а как шаг перед ними. Я расскажу о двух экспериментах, в которых топологическая модель автоматически извлекалась из распределённых трейсов, после чего на ней просчитывались сценарии отказов методом Монте-Карло. Результаты моделирования я затем сравнивал с реальными инъекциями отказов на стендах DeathStarBench и OpenTelemetry Demo.

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

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