Обновить
279.04

Алгоритмы *

Все об алгоритмах

Сначала показывать
Порог рейтинга
Уровень сложности

Два притопа, три прихлопа

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели3.7K

Подготавливая статью [1] к публикации, обратил внимание на картинку, показанную на рис. 1. Я сохранил ее, чтобы воспользоваться в будущем. И оно не заставило себя ждать, т.к. захотелось повысить наглядность решения, введя в него графику и используя именно эту картинку.  К чему это привело, далее мы и поговорим.

Все, что связано с картинкой, сделать не так уж сложно. Это довольно подробно описано в цикле статей по реализации графики в ВКПа (см. [2]). Для этого, во-первых, нужно создать графическое окно, установив данную картинку в качестве фона. Во-вторых, воспользоваться существующими заготовками контролов (элементов графического интерфейса), которые необходимо будет разместить на данном фоне.

Читать далее

Новости

SFINAE в C++

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели5.4K

Привет, Хабр!

Сегодня я хочу поговорить про SFINAE, загадочную аббревиатуру из C++. Расшифровывается SFINAE не менее загадочно: Substitution Failure Is Not An Error, по-русски: «неудавшаяся подстановка — не ошибка». Сейчас рассмотрим, почему это правило появилось, как оно работает и как мы можем использовать его себе во благо.

К механике SFINAE

«Квантовая фотография: как аналоговая эмульсия вычисляет волновую функцию»

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели4.5K

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

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

Статья даёт строгое математическое описание этих процессов, вводя и детально разбирая ряд физических формул — от правила Ферми для поглощения фотона до соотношения неопределённостей «время–энергия» для объяснения дробового шума. Цель — предложить инженерам, специалистам по обработке сигналов и материаловедам новую, интуитивно-физическую модель для понимания квантовых принципов через детерминированные технологические процедуры. Мы показываем, что фотографическая система является законченным аналоговым компьютером, материально вычисляющим квадрат модуля волновой функции падающего излучения.

Читать далее

Оценка сложности модели — Часть 1: Почему проще обычно лучше

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели3.9K

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

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

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

Читать далее

GigaMemory на AI Journey Contest 2025: итоги

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.3K

Приветствуем всех! С вами снова ML-команда RnD для B2C SberAI. Этой осенью в рамках AI Journey Contest 2025 мы представили задачу GigaMemory: global memory for LLM. Её цель — создание автономного модуля долговременной памяти для языковых моделей, способного накапливать и использовать знания о конкретном пользователе, по сути наделяя ИИ способностью «помнить» своего собеседника.

Пришло время объявить результаты соревнования и разобрать лучшие решения участников!

Читать далее

Путешествие токена: что конкретно происходит внутри трансформера

Время на прочтение7 мин
Охват и читатели7.4K

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

Читать далее

SQL HowTo: «запекаем» шаг рекурсии (Advent of Code 2025, Day 4: Printing Department)

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.9K

Осторожно, спойлеры! Не читайте, пока хотите решить задачу самостоятельно.

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

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

Читать далее

Насколько полезны объяснения кода от SourceCraft?

Уровень сложностиПростой
Время на прочтение28 мин
Охват и читатели9.6K

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

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

Читать далее

Иллюзия 95%: гайд по самой частой элементарной ошибке в Data Science

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели20K

Что, если я скажу тебе, что у параметра нет вероятности?

Это самая распространенная и устойчивая когнитивная ошибка в Data Science. Она встречается в курсовых, в учебниках и даже в документациях библиотек.

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

Добро пожаловать в кроличью нору частотной статистики.

Читать далее

GUCA: эволюция на графах («Живые графы» 2.0)

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели9.7K

Где проходит граница между случайностью и замыслом? Почему в наших ДНК куча мусора? Можно ли воспроизвести эволюцию в машине, и как зарождалась жизнь? Хотя и на последний вопрос ответа нет, но мы можем создать эксперимент, который позволяет моделировать механизмы эволюции с нуля. О таком эксперименте из области Artificial Life (искусственной жизни, где эволюция идёт внутри компьютера) и пойдет речь сегодня.

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

GUCA (Graph Unfolding Cellular Automata) — один из таких маленьких миров: в нём мы выращиваем “организмы” из узлов и рёбер графа.

Читать далее

OTXform — операциональное преобразование от теории к практике

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.6K

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

Теория без практики пуста, а практика без теории слепа.

Читать далее

WarpTrade и робастные алгоритмические стратегии

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.7K

Всем, Добрый день! На связи Андрей Счастливый.

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

Какая моя цель? Продолжать заниматься любимым делом, а конкретно данной статьёй я хочу показать, что возможно то, что многие считают невозможным. Ну что, перейдём к делу и расскажу о своих наработках.

Читать далее

Обзор препринтов научных статей в области Информатики

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.6K

Свежая подборка интересных научных статей в области Информатики, опубликованных на arXiv.org.

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

Читать далее

Ближайшие события

SQL HowTo: от частностей к рекурсии (Advent of Code 2025, Day 3: Lobby)

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.6K

Осторожно, спойлеры! Не читайте, пока хотите решить задачу самостоятельно.

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

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

Читать далее

То, что обычно не показывают: как выглядит Wi-Fi взлом изнутри (схемы, примеры, анализ)

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.7K

Безопасность Wi-Fi остаётся одной из тех тем, где одновременно сосуществуют мифы, неоправданные ожидания и огромное количество недопонимания. Кто-то уверен, что WPA2 и тем более WPA3 взломать невозможно, потому что «это же криптография». Кто-то считает, что всё решается набором трёх команд в Kali. И на практике обе позиции оказываются одинаково далеки от реальности. Wi-Fi — это не магия, не «сеть, работающая на духах», и не «непробиваемая защита». Это обычный протокол уровня 802.11, который живёт в открытом эфире и подчиняется вполне конкретной структуре пакетов, таймингов и встроенных процедур. Понимание этих процедур моментально показывает, что подавляющее большинство атак — не взлом, а закономерное следствие того, как устроено взаимодействие клиент ↔ точка.

Основой WPA2-аутентификации является четырёхшаговый handshake. И именно он формирует ключ, но при этом “раздаёт” достаточно информации, чтобы злоумышленник мог оффлайн проверять догадки о пароле. Все пакеты handshake идут открыто — это EAPOL-кадры, которые может увидеть любое устройство в эфире. Точка отправляет ANonce, клиент — SNonce, обе стороны на основе PMK (который, в свою очередь, зависит от пароля и SSID) вычисляют PTK, и затем сравнивают MIC. В этот момент пароль нигде не передаётся, но комбинации значений ANonce+SNonce+MIC более чем достаточно для оффлайн-подбора.

Если открыть реальный handshake в Wireshark, второй пакет будет выглядеть примерно так:

Protocol: EAPOL
Key Information: Key MIC: 1, Secure: 0, Error: 0
Nonce (SNonce): 5f:6b:b1:9a:31:0c:ae:...
MIC: 53:ff:12:88:9c:7d:91:52:...


Эти данные можно использовать для проверки предполагаемого пароля: сначала PBKDF2 генерирует PMK, затем PMK превращается в PTK, затем создаётся MIC, и если этот MIC совпадает с MIC из пакета — пароль найден. Вся атака происходит оффлайн. Никаких запросов к точке, никаких попыток войти в сеть, никакого шанса «спалиться» в эфире.

Но чтобы подбор стал возможен, handshake нужно сначала получить. С passiv-перехватом проблем хватает: можно слушать эфир часами и так и не дождаться переподключения. Поэтому практически все реальные атаки начинают с деавторизации — искусственного разрыва связи между клиентом и точкой. Деавторизация — это не «аномальный» пакет. Это штатный кадр уровня MAC, который есть в стандарте. И если клиент его получает, он честно отключается, после чего автоматически инициирует повторный handshake.

Схема выглядит примерно так:

Читать далее

Детальный разбор стандарта NIST SP 800-232 со схемами преобразований. Часть 2

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели4.3K

Приветствую, Хабр!

Напомню, что в августе текущего года Институт стандартов и технологий США NIST выпустил стандарт NIST SP 800-232 [1], описывающий четыре низкоресурсных криптографических алгоритма на базе семейства алгоритмов Ascon:
· алгоритм аутентифицированного шифрования с присоединенными данными Ascon-AEAD128;
· три алгоритма хеширования: Ascon-Hash256 (классическая хеш-функция), Ascon-XOF128 (хеш-функция с переменным размером выходного значения) и Ascon-CXOF128 (хеш-функция с кастомизацией и переменным размером выходного значения).

Данная статья из двух частей посвящена детальному обзору вышеупомянутого стандарта. В первой части статьи было подробно описано внутреннее преобразование, общее для всех стандартизованных алгоритмов, и разобрана верхнеуровневая структура алгоритма Ascon-AEAD128. В этой, заключительной, части предлагаю Вашему вниманию подробное рассмотрение структуры алгоритмов хеширования, а также обзор рекомендаций и ограничений по применению алгоритмов, описанных в NIST SP 800-232.

Читать далее

Машины Тьюринга, огромные числа и бобры: что у них общего?

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели7.1K

Представьте, что кто-то даёт вам список из пяти чисел: 1, 6, 21, 107 и внезапно — 47 176 870. Догадаетесь, что будет дальше? 

Если вы не угадаете, ничего страшного — практически никто не угадывает. Вот первые пять чисел «усердного бобра» — последовательности, тесно связанной с одним из самых известных и сложных вопросов теоретической информатики. Он звучит так: сколько времени может работать машина Тьюринга с некоторым набором правил, пока не остановится. Определение значений чисел «усердного бобра» — сложнейшая задача, которая уже более 60 лет привлекает поклонников как среди профессиональных математиков, так и среди любителей.

Читать далее

Как я осознал, что не умею кодить

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели34K

Вчера мой скрипт завис. Процессор горел на 100%. Я убил процесс.

Я Senior Developer с 10 годами опыта. Пишу на Python, знаю Java и много модных фреймворков. Но в этот момент я понял: я не умею программировать. Точнее, я умею использовать инструменты. Но я не понимаю природу вычислений.

Эта статья — о том, как одна математическая задача изменила моё понимание разработки.

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

Возможно, и тебя тоже.

Читать далее

Как мы учим Яндекс Карты предупреждать о манёврах: без использования LLM, но с помощью водителей

Время на прочтение14 мин
Охват и читатели10K

Что может быть проще, чем сгенерировать голосовую подсказку для навигатора? Считаем угол поворота — озвучиваем манёвр. Именно так наша система и работала годами, пока не обросла таким количеством эвристик и региональных «костылей», что её поддержка стала дороже разработки. Добавление нового правила для одной страны ломало логику в другой, а простая задача «отличить плавный изгиб от поворота» превращалась в детектив.

Меня зовут Дмитрий, и я руковожу ML‑разработкой в команде автонавигации Яндекс Карт. Вместе с моим коллегой Альбертом Юсуповым (@al‑iusupov) в этой статье мы поделимся историей полного переосмысления системы генерации дорожных аннотаций. Расскажем, почему решили отказаться от десятков хитрых условий в коде, а также почему заманчивая идея отдать всё на откуп большим нейросетям (VLM, LLM) провалилась. И, наконец, как пришли к элегантному решению: создали уникальный датасет с помощью сотен водителей‑экспертов и обучили быструю и точную ML‑модель, которая работает по принципу «меньше, но лучше».

Читать далее

Как попасть в мир олимпиадного (спортивного) программирования? Спорт для ума, который меняет мышление

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели8.5K

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

Хочешь попробовать интеллектуальный спорт, где за пять часов нужно решить несколько задач и обойти соперников по скорости мышления? Спортивное программирование даёт не только адреналин соревнований, но и реальный буст к учёбе, поступлению и карьере — от первых олимпиад в школе до участия в ICPC и стажировок в IT-компаниях.

Читать далее
1
23 ...

Вклад авторов