На первый взгляд новость о «Monoid-augmented FIFOs, deamortised» Пола Хуонга может показаться узкой теоретической разработкой для любителей функциональных структур данных. Но на деле речь идёт о вещах, которые напрямую касаются того, как мы обрабатываем стриминговые данные в реальном времени: от мониторинга сетевого трафика до поиска аномалий в биржевых котировках. 📌 В чём суть?
Обычная очередь FIFO хороша для хранения последовательности элементов, но если нам нужно поддерживать агрегаты (например, максимум или сумму последних k элементов), возникает проблема: добавлять легко, а вот удалять — дорого.
Если у операции нет обратного элемента (как у сложения — «минус», но у max инверсии нет), то пересчёт становится сложным. Именно здесь приходит на помощь моноид — алгебраическая структура, где операция ассоциативна и есть нейтральный элемент. Например: Хуонг предлагает новый способ построения очереди, где каждая операция (push, pop, query) работает в O(1) в худшем случае, используя максим