Обновить
512K+

Алгоритмы *

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

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

Что именно я понимаю под промежуточным представлением (IR) компилятора

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

Я много думал о том, как проектируются промежуточные представления (IR) для компилятора. В этом посте я поделюсь с вами некоторыми идеями, к которым я пришёл, и поясню, почему считаю их важными.

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

Она существует примерно в паре трактовок. Исходим из того, что в каждый момент времени компилируем один какой-то метод, а не занимаемся чем-то сближающимся с трассировкой (трассировка, трейслеты, версионирование базовых блоков, т.д.).

Читать далее

Новости

Попробовали научить AI искать то, чего никто не замечает — слабые рыночные сигналы

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

За одни сутки и шесть долларов алгоритм самостоятельно провёл почти две тысячи экспериментов на российском фондовом рынке.

Он не ждал команды. Сам формулировал гипотезу, сам писал запрос к данным, сам оценивал результат — и сразу задавал следующий вопрос. Цикл за циклом, пока мы спали.

Красиво. Но красота здесь ловушка. Потому что самое сложное — не запустить машину, а понять, стоит ли верить тому, что она нашла. Как мерить. Как проверять. Как отличить настоящий сигнал от эха собственного кода.

Под катом — история одной ночи, почти двух тысяч вопросов и нескольких ответов, которые пришлось заслужить. Если интересно, как звучит рынок в четыре утра — заходите.

Читать далее

Рекурсивные типы. Часть 6. Пересвёртка на практике

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

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

Читать далее

Те, кто не любит отлаживать — против тех, кто не любит писать

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

В программировании (как и в написании HDL кода и подобных профессиях) есть две школы мысли: чистолисты (строят свою архитектуру с чистого листа и пишут так чтобы поменьше отлаживать) и кодокопатели (отлаживают что есть, дополняя мусором из интернета, чтобы поменьше писать). На это накладывается менеджмент, который пытается комбинировать чистолистов и кодокопателей, иногда неправильным образом, то есть ставит чистолистов править то, что налабали кодокопатели. Это происходит потому, что кодокопатели постоянно выглядят занятыми отладкой, а чистолист часто смотрит в потолок обдумывая дизайн, поэтому менеджмент думает что первые работают быстрее чем вторые, и пытаются соптимизировать “быстроту-качество” вот таким образом. Реально кодокопательские проекты обычно увязают в отладке и прогресс становится черепашьим.

Читать далее

Почему Chrome весит 7 000 Марио или как сжать «Змейку» в 1 000 раз

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

На вашем диске лежит семь одинаковых моделей птицы Додо. Не благодарите — это ARK заботливо положил их вам в каждое DLC.

Раньше Super Mario Bros весила 40 КБ. Сейчас одно обновление Chrome — это ~7 000 таких Марио. Как мы дошли до жизни такой, и почему все идет по кругу?

В статье пройдем путь от тайлов NES до Neural Texture Compression и рассмотрим змейку в трех версиях: по трем вехам сжатия. Одна из них в 1 120 раз меньше первой. И это не та, в которой ИИ.

Читать далее

Реверс — это сканворд. Как я впервые нормально понял Ghidra

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

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

У меня бывают неожиданные заказы, из неожиданных сфер на фрилансе. Недавно писал про то как прилетел большой проект по классификатору фоток. А теперь пришел запрос на реверс! Не могу вдаваться в подробности проекта - много конфиденциального - но я расскажу про конкретный разбор одного .dll файла. Открыл Ghidra, кликнул на функцию, включил декомпилятор - и передо мной встала стена.

Не метафорическая стена. Прям реально стена!

И вот пока я эту функцию ковырял, переименовывал переменные, ходил по ссылкам, открывал соседние функции, смотрел строки, в какой-то момент меня щёлкнуло.

Это же сканворд.

Читать далее

Фазовая синхронизация в системе FMComms5 от Analog Devices и оценка угла прихода сигнала

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

В этой статье дана инструкция для выполнения фазовой синхронизации в FMComms5 от Analog Devices и реализации метода пеленгации, использующего эту функцию. Оценочная плата FMComms5 обеспечивает высокую точность фазовой синхронизации. В этой статье рассказывается, как выровнять фазы двух приемопередатчиков AD9361 с помощью специальной программной библиотеки libad9361, созданной на основе инфраструктуры ввода-вывода libiio. Фазовое выравнивание необходимо для многих радиолокационных систем, таких как пеленгаторы и когерентные системы MIMO.

Исходный код GNURadio, на котором основан этот пример, был изначально разработан доктором Шрикантом Пагадараи и доктором Трэвисом Коллинзом при финансовой поддержке компании Ettus Research [1]. Недавно доктор Коллинз портировал его на платформу FMComms5, добавив документацию. В настоящее время код доступен по адресу github.com/tfcollins/gr-doa в ветке adi. Этот код распространяется по лицензии GPL3. Реализация на FMComms5 обеспечивает такую же производительность, как и предыдущая работа [1]. Технический документ из [1] также был дополнен авторами оригинальной статьи информацией о FMComms5 и стратегии его внедрения.

Читать далее

Задание 7 ЕГЭ по информатике: разбираем базу по кодированию изображений с нуля

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

Седьмое задание ЕГЭ по информатике кажется проходным: выучил пару формул, умножил ширину на высоту — и законный балл в кармане. Но статистика неумолима: именно на кодировании изображений абитуриенты регулярно теряют баллы из-за путаницы с битами/килобайтами и коварных правил округления. В этой статье мы разбираем железобетонную «базу» задания №7 с нуля. Никакой воды — только логика работы памяти, элегантные вычисления через степени двойки и готовые шаблоны, которые помогут щёлкать эти задачи на автомате.

Читать далее

«Прогеры» или «Битва Големов v4.0»? Сравниваем две настольные игры, обучающие детей основам кода и робототехники

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

Как научить детей основам программирования и алгоритмического мышления, не включая компьютер? Сравниваем две настольных игры, представленных на российском рынке — «Прогеры» и «Битву Големов v4.0». Разбираем игровые механики, учебную эффективность, возрастные рамки и помогаем выбрать идеальную игру под задачи и уровень подготовки юных кодеров.

Читать далее

Запускаем DeepSeek-V4 (1.6T) на «калькуляторе»: SVD-трансмутация, Identity Theft и гаражный MLOps

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

Что делать, если у вас есть 1.6-триллионная модель и видеокарта из прошлого десятилетия? Пока корпорации покупают H100 фурами, мы используем SVD-трансмутацию и архитектурный Identity Theft, чтобы запустить DeepSeek-V4 на бесплатном инстансе Kaggle. Инструкция по сборке Мутанта внутри.

Читать далее

Как 2ГИС адаптируется к проблемам с позиционированием

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

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

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

Читать далее

Поиск решений, управляемый данными. Направления развития

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

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

Читать далее

Поиск решений, управляемый данными. Клиент-серверная архитектура и WEB

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

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

В статье не рассматриваются вопросы технической реализации типа: REST/SPA‑подход или long polling / WebSocket / server‑side session / event sourcing.

Читать далее

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

Давайте объединим линейную и геометрическую алгебры. Часть 2. Матрица Якоби

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

Привет Хабр!

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

Читать далее

Поиск решений, управляемый данными. Тестирование и документирование

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

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

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

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

Читать далее

Наука без экранов: как настольные STEM-игры закрывают когнитивный разрыв между теорией и практикой

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

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

Читать далее

Драматургия через математику: WFC + Entropy Bias

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

Как одна модификация формулы превращает генератор карт в дизайнера уровней

Всем привет! Меня зовут Григорий Дядиченко, и я технический продюсер. Играли в Hades? Там дизайнер уровней не бросает кубики. Он точно знает, где игрок поймает дыхание после погони, где встретит соблазн свернуть с пути, где сундук стоит под прицелом элитника, а где — просто в углу за колонной. В простой случайной генерации таких решений нет: карты рождаются «равномерными» и драматургически мёртвыми. Сегодня хочется поговорить о том, как одной модификацией в формуле Wave Function Collapse вернуть в генератор жизнь. Разберём Entropy Bias, Entropy Cascade, Tile Probability Bias и семантические слои. Если вам интересна тема процедурной генерации и немножко математики — добро пожаловать под кат.

Читать далее

От криптоанализа к AI-forensics:

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

От криптоанализа к AI-forensics

Мы привыкли считать LLM «чёрным ящиком»: дал промпт — получил ответ. Максимум — подкрутил fine-tuning или LoRA и надеешься, что стало лучше. Мы пошли в другую сторону. В предыдущей статье я показал, что подписи Schnorr / MuSig2 можно разобрать до уровня строгих affine-инвариантов и работать с ними как с математической системой, а не как с магией. В этой работе мы сделали следующий шаг: перенесли ту же exact-методологию внутрь нейросети.

Что мы сделали? Мы взяли локальный MLX-дистрибутив:

gpt-oss-20b-TurboQuant-MLX-8bit

и не стали его «обучать заново». Вместо этого: вскрыли .safetensors на уровне квантованных кодов; построили детерминированный calibration cache; начали снимать реальные BF16-активации с конкретных слоёв; свели задачу к локальной integer-оптимизации квантованных весов; реализовали безопасный patch прямо в модель; и добавили smoke-check, который проверяет: совпадает ли наша математика с реальным runtime MLX.

Что получилось

Мы впервые получили pipeline, в котором: квантованный слой наблюдаем; его поведение измеримо; его можно локально корректировать; и самое важное - можно проверить, не обманывает ли нас сама среда исполнения. Например: для router.weight мы получили почти полный перенос улучшения на holdout; для q_proj система честно доказала: без внешнего эталона patch не имеет смысла. И это, возможно, даже важнее.

Читать далее

Ржавый ассемблер

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

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

Окунуться в небезопасный код

ULBT: как искать и сортировать зашифрованные строки без полного сканирования

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

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

В этом тексте предлагается практический подход к решению этой проблемы на базе ULBT (Unbalanced Lexicographic Bucket Tree). Предложенный подход предполагает решение следующих задач

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