Обновить
206.73

Алгоритмы *

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

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

Теория по графам для программистов

Время на прочтение5 мин
Количество просмотров222

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

Погрузиться в мир графов

Новости

Конвейеры формирования изображений. Часть 1: Регистрация света и дебайеринг

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

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

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

Приятного чтения!

Читать далее

Как фильтры Блума в 16 раз ускорили API

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

Этот пост станет глубоким разбором того, как мы снизили задержки P95 конечной точки API с 5 до 0,3 секунды при помощи нишевого трюка computer science под названием «фильтр Блума».

Мы расскажем о том, почему конечная точка была медленной, о решениях, которые мы рассматривали для повышения её скорости, и о критериях выбора между ними. Также мы объясним, как всё это устроено внутри.

Читать далее

Книга: «Алгоритмы машинного обучения»

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

Привет, Хаброжители!

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

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

Читать далее

Как мы создаём HD-карты для автономного транспорта: устройство map-editor

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

Привет! Меня зовут Коля, я руковожу группой разработки геосервисов автономного транспорта. Одно из наших направлений деятельности — разработка инструментов картографии. Обычная дорожно‑уличная сеть подходит людям и приложениям вроде навигаторов, но роботам этого мало: им необходимы HD‑карты, способные описывать окружающий мир с десятками слоёв атрибутов и точностью до сантиметров. Такие карты кладут в основу алгоритмов локализации, навигации и поведения, и именно от их качества зависит безопасность и эффективность автономного транспорта.

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

В этой статье мы разберём, как устроен один из ключевых инструментов — map‑editor, обеспечивающий создание и развитие HD‑карт для роботов, какие технические вызовы встречаются по пути и как мы с ними справляемся. Среди наших технологий — FastAPI и C++ для серверной логики, PostgreSQL с PostGIS для работы с геометрией, интеграция с облачными хранилищами и распределёнными вычислениями, а также элементы автоматизации на базе ML.

Читать далее

Ликбез о плавающей точке: сложение, катастрофическое сокращение и бабушка Кэхена

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

Давайте продолжим обсуждение самой неоптимизированной в мире 32-битной библиотеки для работы с плавающей запятой TinyFloat. Библиотека написана на C++ и намеренно избегает встроенных типов плавающей запятой, полагаясь исключительно на 32-битные целые числа. Цель состоит в том, чтобы сделать код максимально читабельным — без бит-хаков и хитроумных уловок.

Библиотека пишется в рамках борьбы с неграмотностью населения, поэтому, я хочу иметь подробную документацию о том, что происходит «под капотом». Оказалось, что лучший способ документировать код C++ — это полностью переписать его на Python :-)

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

Читать далее

Как скопировать дерево, но не точь-в-точь

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

На собеседованиях и литкоде любят вращать бинарные деревья. Но что насчёт трансформации обычного дерева в другое? Как решить эту задачу, и какие могут быть подходы? Рассмотрим на опыте трансляции одного синтаксического в другое, чтобы разобраться.

Читать далее

Всегда короткий Python-код

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

Не так давно довелось спонтанно поучаствовать в активности от T‑банка. Кроме всяких «интересных» заданий, там были задачки и на кодинг. Критерием победы в задачах «Стековки» были не O(n), не микросекунды, а краткость кода, твёрдо измеренная в символах, что тоже по своему интересно. «Как написать решение используя минимальное число символов?».

С одной стороны это были задания на компактный алгоритм, с другой стороны — на знания возможностей языка. Я к такому родам задачам не готовился, но по ходу дела мне показалось, что приёмы, которые можно придуматьприменить при таких метриках, вполне стоило бы обобщить, структурировать, и применять уже с меньшими когнитивными нагрузками. Заинтересовало? Добро пожаловать за странными конструкциями и хацкер-бонусом.

Разжать статью

Ускорение Python в 150 раз с использованием C

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

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

NumPy уже не в моде?

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

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

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

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

Материалы затрагивают вопросы верификации систем, основанных на машинном обучении, сравнительный анализ архитектур FPGA и GPU для специализированных вычислительных задач, а также глубокие темы в области языков программирования — от всенаправленного вывода типов до линейности в функциональных Core-языках.

Читать далее

3D-таймлайн на чистом JavaScript: как я собирал этот слайдер по шагам

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

Устал от однообразных каруселей? В статье показываю, как шаг за шагом собрать 3D-таймлайн-слайдер с перспективной сеткой, плавной прокруткой и переключением категорий на чистом TypeScript и CSS.

Читать далее

Апокалипсис контента? Взгляд юриста и разбор LLM

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

На днях наткнулся на статью, опубликованную в телеграм-канале Habr, под названием «Тихий апокалипсис контента: почему все устали от сгенерированных статей». В ней автор выражает озабоченность количеством сгенерированного контента, который набирает просмотры и вытесняет из выдачи авторские статьи. Статья автора натолкнула меня на идею порассуждать на эту тему, провести небольшие исследования, сравнить процесс генерации текста ИИ и человеком и просто поделиться своим «экспертным» мнением.

Читать далее

Разбор задачи «Regular Expression Matching»

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

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

Читать далее

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

Воксельный движок за выходные

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

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

Введение

Приготовьтесь, мы совершим путь от единственного кубика до целого воксельного движка! Нам понадобится следующее:

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

API рендеринга! Выбирайте что угодно, эта статья — не туториал по рендерингу.

Если в процессе у вас возникнут вопросы, можете связаться со мной на моём сервере Discord или написать на contact@daymare.net.

Читать далее

Время дорого стоит

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

У Контура более 10 тыс сотрудников и очень-очень много групповых встреч: около 30 тыс ежемесячно, мы считали. 👀 И бывает так, что нужно собрать сразу нескольких ребят в наиболее удобное для всех время. И начинается вот это вот: зайти на страницу человечка > посмотреть, какое время у него свободно > сопоставить со своим > проверить, а могут ли в это время остальные участники > обнаружить, что нет, и идти заново по кругу смотреть другие слоты, забывая, чё там у кого. 🙄 Да блин!

Мы решили остановить эту котовасию ✋🚫 и добавить в наш внутренний портал (в Контуре используется Стафф) рекомендацию свободных слотов для всех участников встречи. Рассказываем и показываем, как реализовали это.

Читать далее

Нечёткий поиск при пересечении множеств, или Как выжать все соки из Хэширования по сигнатуре

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

На просторах интернета легко можно найти материалы по реализации нечёткого поиска, в которых предполагается поиск одной строки в множестве строк M. Но что если возникнет необходимость реализовать нечёткое сравнение множества M₁ с множеством M₂? При классическом подходе нам придется выполнить M₁*M₂ сравнений - при линейном росте этих множеств, сложность задачи будет расти экспоненциально, в плане производительности это решение никуда не годиться!
В этой статье предложен вариант реализации ускоренного алгоритма для решения этой задачи. Теоретической новизны в проекте практически нет. Цели:
1 - Ознакомить с концепцией
2 - Дать конкретный пример интеграции в БД SQL(MSSQL)
3 - Ознакомить с возможностями на базе практической реализации

Читать далее

Главная проблема «чистых архитектур»

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

Откройте любой пулл‑реквест в проекте с любой «чистой архитектурой» и вы скорее всего увидите не обсуждение бизнес‑логики, а срач. «Это нельзя класть в UseCase, это логика домена!», «Зачем тут еще один DTO, мы же просто поле прокидываем!», «Этот интерфейс не нужен, у нас никогда не будет другой реализации!». Полагаю, очень много людей с таким сталкиваются.

Эта статья — о том, почему архитектура из спасения превратилась в тонны говнокода. И, что самое главное, — как прекратить этот хаос и, наконец, начать просто писать код, который работает, а не «следует всем концепциям».

Читать далее

Серверы VALORANT с тикрейтом 128

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

Привет! Меня зовут Brent «Brentmeister» Randall (Брент Рэндалл). Я — инженер из команды Gameplay Integrity, которая занимается игрой VALORANT. В сферу нашей ответственности входит система сборки игры, фреймворки, используемые для автоматизации различных задач, производительность игрового клиента и серверов. Именно последнему пункту этого списка и посвящена данная статья. Я поделюсь с вами историей поиска подходов, позволивших вывести производительность наших серверов на оптимальный уровень.

На самых ранних этапах разработки проекта мы уже знали о том, что VALORANT отличается весьма жёсткими требования к производительности игровых серверов. Надеюсь, мне удастся дать вам некоторое представление о том, почему это так, и о том, как были достигнуты наши амбициозные цели. В самом начале серверный кадр (server frame, цикл обработки данных на сервере) длился 50 мс. А после завершения оптимизации нам удалось сократить это время до менее чем 2 мс. Всё это сделано благодаря анализу и оптимизации кода проекта, а так же — благодаря подстройке «железа» и тюнингу ОС.

Читать далее

Как работает навигация между городами без интернета

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

2ГИС с самой первой версии навигатора умеет строить разные виды маршрутов — автомобильные, пешеходные, маршруты на общественном транспорте — на мобильных устройствах без доступа к интернету, но только внутри городов.

С 2019 года 2ГИС также умеет строить маршруты между городами, но только при наличии интернета.

Уже давно наши пользователи просили дать возможность строить междугородние маршруты без доступа к сети. И вот, мы наконец сделали это.

Читать далее

Арбитраж ставок финансирования — создаём скрипт для отслеживания возможностей

Время на прочтение7 мин
Количество просмотров777

На крипто рынке у бессрочных фьючерсов существует специальный механизм: ставка финансирования (funding rate) - периодический платёж между держателями длинных (long) и коротких (short) позиций, который служит для выравнивания цены фьючерса с ценой спота.

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

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

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