Как стать автором
Поиск
Написать публикацию
Обновить
253.78

Алгоритмы *

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

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

Генерация синтетических данных для LLM. Часть 3: случайные матрицы

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров415

Добрый день, уважаемые Хабровчане :) Продолжаем наши научные изыскания в области определения «синтетических» данных. В этой статье я рассмотрю тему анализа графов с позиции анализа спектров матрицы смежности для случайных матриц. То есть мы зайдём со стороны оптимизации знаний из прошлых двух статей (раз и два) и посмотрим, как применить теорию случайных матриц к нашей исходной задаче. Основная цель — расширение диапазона исследуемых значений. 

Итак, погнали, значицо ;)

Читать далее

Статья 5: Алгоритмы – реализация и модель ошибок

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров737

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

Также хочу еще раз сказать, что создание данного устройства - это исключительно моя инициатива, как начинающего пилота. Я не создаю такие устройства на постоянной основе, я не обладаю профильным образованием в авионике, а иду по пути проб и ошибок создавая полезное для себя устройство. Если я захожу на вашу территорию ваших профессиональных или академических интересов, то прошу отнестись с пониманием к некоторым неточностям или ошибкам термионологии. Буду рад вашим комментариям!

Итак, в этой части опишу следующие аспекты:

Читать далее

Искусство создания эффективных математических моделей

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

За любой математической моделью стоит субъект-создатель, который имеет свое видение моделируемых процессов, свою креативность и виртуозность владения мат. аппаратом. Эти и другие источники субьективности формируют определенный почерк автора-разработчика. Но все ли модели хороши?

Выпущено множество книг-рекомендаций про то, как писать "хороший" программный код: "Чистый код", "Совершенный код", "Программист-прагматик", "Чистая архитектура" и др. Такого рода литература задает некоторый стандарт качества и очертания "идеала".

Аналогичный свод рекомендаций существует и для разработчиков оптимизационных мат. моделей. В статье на примере задач целочисленного линейного программирования порассуждаем о хороших моделях. Рассмотрим различные нюансы математического моделирования и их влияние на скорость поиска решения задачи готовыми пакетами - солверами.

Читать далее

Новый алгоритм может снизить разобщенность пользователей соцсетей

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.5K

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

Учёные из МФТИ, ИПУ РАН и ТГУ предложили математическое решение проблемы, изменив алгоритмы формирования социальных связей. Новый подход снижает сегрегацию пользователей с помощью анализа структуры сетей.

Читать далее

Интерактивные истории на стероидах: как добавить случайность и судьбу в DSL

Уровень сложностиСложный
Время на прочтение3 мин
Количество просмотров906

Язык для интерактивных историй — это весело до тех пор, пока сюжет не превращается в механическую цепочку заранее известных развилок. Чтобы истории жили дольше одного прохождения, им нужна случайность. В этой статье я расскажу, как можно встроить элемент «судьбы» в сам DSL: добавить рандом, вероятности, броски кубиков и даже скрытые триггеры. Всё это — на Python, с реальными примерами кода, а не только с теорией.

Читать далее

Ранг-селект словари

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров2.5K

Это первая статья из планируемой серии про succinct data structures - класс наиболее компактных структур данных. Канонический пример такой структуры - это представление дерева в виде правильной скобочной последовательности, дерево изnвершин таким образом представляется с помощью2nбит в то время как типичная динамическая реализация требовала бы как два указателя по 64-бит на каждый узел (разумеется можно немного сократить простыми оптимизациями, но даже близко 2 бита не получить). Фундамент подобных структур - это rank-select словарь, представляющий собой битовый вектор и дополнительную структуру для выполнению двух операций ранг и селект. В указанном примере с деревом с помощью ранга и селекта можно сделать базовую навигацию: найти номера потомков/родителей, узнать размер поддерева. В статье расскажу как делать эти операции быстро используя при этом всего 3,6% дополнительной памяти.

Читать далее

Топологический аудит ECDSA: когда геометрия защищает ваши ключи

Уровень сложностиСложный
Время на прочтение5 мин
Количество просмотров879

Откройте для себя, как топология превращается из абстрактной математической дисциплины в мощный инструмент криптоанализа!

Читать далее

Программист embedded лезет в FPGA (часть 1, hello blink)

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

Любой программист микроконтроллеров, Imho, рано или поздно (сейчас, скорее, рано) от одного из коллег или из статьи в интернете слышит загадочное ПЛИС или FPGA, CPLD, ПВМ — что-то такое. Если честно, то я услышал вот это загадочное, занырнул чуть-чуть, и теперь думаю, что мой опыт пригодится кому-то ещё. Если совсем честно, то статья ещё планируется как небольшая (всего в трёх частях) заметка для себя. Я когда погружался, делал пометки в текстовом файле, здесь получится их хорошо отредактированная версия.

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

Лезем в FPGA

Как создатель ZIP, Фил Катц победил в войне форматов, но проиграл в собственной

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

История Фила Катца — это классическая IT-драма: блестящий взлёт, жёсткая конкуренция, суды, огромный успех и, в конечном итоге, личная трагедия.

Читать далее

Понять хаос: сложный мир муравьев и мух

Время на прочтение14 мин
Количество просмотров1.2K

С самых первых дней изучения биологии или естествознания нам рассказывают о взаимодействии видов, пищевых цепочках и иерархий. Классический пример: трава, кролики и волки. Если волков исключить из уравнения, то кролики будут размножаться и съедят всю траву и будут потом голодные; если исключить траву, то кролики вымрут и волки будут голодные; если исключить кроликов, то трава разрастется, а волки будут голодными. Этот крайне утрированный пример показывает тесную взаимосвязь всего живого, связь, которую порой крайне сложно описать четким математическим языком. Несмотря на устоявшуюся структурированность, которую мы приписываем межвидовому взаимодействию, оно куда ближе к хаосу, чем к порядку. Группа ученых из Мичиганского университета (Анн-Арбор, Мичиган, США) провели любопытное исследование трех враждующих видов муравьев и хищных мух, которое показало всю сложность попыток какого-либо предсказания динамики их взаимодействия. Что именно удалось установить ученым, какие методы были использованы, и как данное исследование связано с сельским хозяйством? Ответы на эти вопросы мы найдем в докладе ученых.

Читать далее

Топологический анализ безопасности ECDSA

Уровень сложностиСложный
Время на прочтение20 мин
Количество просмотров1.3K

Новый подход к анализу безопасности алгоритма цифровой подписи на эллиптических кривых (ECDSA) через призму алгебраической топологии.

Читать далее

Demoded: разбор олдскульных демо-эффектов на примере

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров2.7K

Как повернуть время вспять и выиграть Assembly с DOS-демкой в 2025-м году.
Разбираем олдскульные эффекты на примере демки "Demoded".

Секреты, хитрости и откровенное жульничество российского демомэйкинга.
История в картинках.

Читать далее

5 слов из 5 букв

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров781

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

Читать далее

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

Эволюция внимания в LLM: от квадратичной сложности к эффективным оптимизациям

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

Мы живём в эпоху больших языковых моделей — инструментов вроде ChatGPT, Gemini, Claude, которые поражают своими способностями: они пишут тексты, отвечают на сложные вопросы, генерируют код и даже ведут осмысленные диалоги. Но задумывались ли вы, как им удаётся не просто понимать отдельные фразы, но и удерживать смысл длинных документов, многочасовых бесед или даже целых книг?

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

Читать далее

Часть 4. Алгоритмы: как превратить сырые данные в координаты

Уровень сложностиСложный
Время на прочтение5 мин
Количество просмотров2.9K

После выбора аппаратной базы (двойной STM32, каскад датчиков WT901 + LSM6DSV16X + LIS2DW12) наступает этап, который инженеры любят и ненавидят одновременно: программная реализация навигационного алгоритма. Эта часть посвящена математике, фильтрам и тому, как не сойти с ума, интегрируя шумные измерения в реальные координаты. Текст ориентирован на специалистов, поэтому скучноватые места будут разбавлены самоиронией и примерами из практики.

Читать далее

Как ломается RSA512 за 3.5 часа на одном ядре старого ноутбука

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров27K

Сразу оговорюсь, что обычно я не занимаюсь компьютерной безопасностью и не интересуюсь, а занимаюсь алгоритмами и структурами данных - в прикладном применении это оптимизация быстродействия, высокопроизводительные вычисления типа CUDA, AVX512, многопоточность, что применяется например для майнеров криптовалют. Так я влез в криптанализ, ибо области, получается, соприкасаются. Был у меня заказ от человека, который хотел очень быстро на видеокартах перемножать 256-битные числа в 512-битные произведения. Я конечно сделал как он хотел, но вот пришла идея: так а зачем перемножать безчисленное количество чисел, если в принципе можно разложить на множители 512-битное число имея текущие технологии? Об этом дальше и речь.

Дано:

Читать далее

Сложность алгоритмов, или почему O(n) лучше O(2^n)

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

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

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

Давайте рассмотрим, что же такое «хороший» и «плохой» алгоритм, на примере простой задачи с leetcode. 

Читать далее

GIMP Script-Fu ООП. Встраиваем векторы в систему классов Фигур и все Фигуры в язык Функциональной геометрии

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров566

Библиотека функций к Script-fu

В предыдущей статье мы рассмотрели имеющиеся в GIMP возможности векторной графики. Здесь мы рассмотрим как эти возможности использовать при построении графических примитивов — Фигур. Для построения абстракций фигур мы уже написали несколько классов: Фигуры рисуемых по контуру Кистью и Карандашом, Фигур заполняемых определённым цветом, Комбинированных Фигур, Фигур использующих Изображения и Фигур использующих Текст. Здесь я продемонстрирую, как легко и непринуждённо мы можем встроить новые абстракции в существующую иерархию классов. А заодно рассмотрим как вся эта иерархия классов может использоваться в языке функциональной геометрии, рассмотренном в предыдущем цикле статей.

Читать далее

Создаем простого грид-бота для Московской биржи через QUIK и Python

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров12K

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

Читать далее

Как написать bzip2-архиватор на Python: разбираем преобразование Барроуза-Уилера

Уровень сложностиСложный
Время на прочтение25 мин
Количество просмотров4K

Привет! Я Рома, бэкендер-питонист в KTS.

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

Читать далее

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