Обновить
206.73

Алгоритмы *

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

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

Как назначить самого подходящего курьера: наша скоринговая модель

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


Всем привет! Меня зовут Михаил Моловцев, и я алкоголик операционный аналитик в Delivery Club. Наша команда помогает бизнесу и разработке в процессах и исследованиях, связанных с курьерами и доставкой заказов. Я занимаюсь исследованиями систем назначений заказов, прогнозированием времени доставки и курьерскими скорингами. Расскажу о том, как мы обновили подход к скорингу курьеров для системы назначения заказов.

Немного о скоринге


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

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

Как посчитать синус быстро

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

... и точно. Точнее, с заданной точностью, простите за каламбур.

Под катом я расскажу, как сделать это с использованием школьного курса алгебры и целочисленной арифметики, при чём здесь полиномы Чебышёва I-го рода, и дам ссылки на примеры реализаций для ПК и Cortex-M3.

Читать далее

Применение двоичной логики в недвоичных операциях: оптимизируем производительность и ресурсы

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

Давайте поговорим о побитовых операциях.

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

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

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

Читать далее

Симметричные НЧ-ВЧ фильтры

Время на прочтение12 мин
Количество просмотров28K
В задачах обработки сигналов часто возникает необходимость фильтрации сигналов, когда сигнал разбивается на узкополосные диапазоны. В бытовом плане мы с этим сталкиваемся при воспроизведении музыки через акустические системы, в которых каждый громкоговоритель (динамик) воспроизводит свою полосу частот, которых обычно три — низкие (НЧ), средние (СЧ) и высокие (ВЧ); для воспроизведения сверхнизких частот иногда выделяют отдельную акустическую систему под названием «сабвуфер». Конкретные границы частот зависят от реализации и ориентировочно находятся на границах 100 Гц, 1 кГц и 5 кГц. Для того, чтобы не было резких скачков громкости между динамиками, используют частичное перекрытие — когда амплитуда воспроизводимой полосы частот плавно спадает на одном, одновременно нарастая на другом.

Наиболее популярными фильтрами для такого разбиения являются фильтры Линквитца-Рейли 4-го порядка, представляющих из себя два последовательно соединённых фильтра Баттерворта, изображение АЧХ которых многим хорошо знакомо:

Читать дальше →

Отображение иерархических данных в виде списка с возможностью поиска

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

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

Читать далее

Поиграем в слова? Автоматическое распознавание букв и нахождение слов в игре Слово

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

В данной статье на примере проекта, архитектура которого приведена на фото, вы сможете найти ответы на следующие вопросы:

- Как работает алгоритм нахождения слов в игре типа Boggle?
- Как предобработать изображение для дальнейшего распознавания букв с помощью OpenCV?
- Как распознать буквы с помощью pytesseract?
- Как происходит клиент-серверное взаимодействие через TCP сокеты?
- Как связать Shortcut и приложение Pythonista?
- Как пробросить порты для взаимодействия с сервером в Docker?

Читать далее

Технология Google повышает разрешение изображений до 16 раз без потери качества

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

Исследователи Google из команды Brain Team поделились своими достижениями в области масштабирования изображений.

Результаты, мягко говоря, поражают...

Читать далее

Миграция данных или как мы поменяли АБС в РСХБ. Часть 1

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

Hello, world! Меня зовут Руслан, я работаю в отделе внедрения АО «Россельхозбанк» и в этой статье поделюсь с вами, как мы переносили данные из АБС «БИСквит» в систему ЦФТ-Банк. Если вы так же, как и мы когда-то, задумаетесь о смене основной банковской системы или уже находитесь в этом процессе, то вам, определенно, сюда!

Читать далее

Как мы в SIGIR-соревновании участвовали

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

Летом этого года на конференции SIGIR проводился Workshop On eCommerce, посвященный прогнозам намерений и рекомендаций. По традиции к воркшопу приурочили небольшое соревнование, посвященное использованию последних наработок в области RecSys. Мы в Tinkoff.AI решили немного развеяться и поучаствовать.

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

Читать далее

Как выполнить аппаратную реализацию энкодера h264, не написав ни строчки кода на VHDL/Verilog?

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

Вступление

Сжатие видео с камеры является важной задачей как при трансляции данных через сеть Интернет, так и при передаче данных через радиоканал. Это позволяет в разы сократить объем передаваемой информации при небольшой потере детализации в исходном видео. Сейчас самым популярным алгоритмом для сжатия видео является кодек h264. Хотя уже существует следующая реализация кодека – h265, но он имеет большую вычислительную сложность алгоритма и пока не нашел столь широкого применения, и его реализацию можно оставить на потом :)

Модельно-ориентированное проектирование - это что?

При разработке алгоритма для ПЛИС можно выделить два основных подхода: написать алгоритм сразу на языке описание аппаратуры VHDL/Verilog/SystemC или использовать более высокоуровневые средства проектирования. Во втором случае вначале строится эталонная модель алгоритма в MATLAB/Simulink, тестируется, верифицируется и постепенно подготавливается к автоматической генерации HDL кода из алгоритма. Конечно, мы выбрали второй вариант, т. е. наш план – на основе MATLAB кода сделать эталонную модель алгоритма Simulink, а после – адаптировать ее к автоматической генерации кода и получить HDL для ПЛИС.

Читать далее

Балансирующий робот на Arduino Nano и шаговых моторах

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

Моя версия популярного балансирующего робота. Для тех, кто хочет разобраться в математике, железе и алгоритме стабилизации.

Читать далее

DataScience Digest — 31.08.21

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

Приветствую всех!

Встречайте свежий выпуск дайджеста полезных материалов из мира Data Science & Machine Learning подготовленный командой Data Phoenix и не забывайте подписываться на наш Telegram-канал.

Также хочу пригласить всех на сентябрьские вебинары, которые мы проводим в рамках серии "The A-Z of Data":

- 8 сентября - Deploying deep learning models with Kubernetes and Kubeflow
- 16 сентября - Re-usable pipelines for ML projects with DVC
- 22 сентября - From research to product with Hydrosphere

Буду рад видеть всех на наших трансляциях, присоединяйтесь!

Читать далее

Управление запасами

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

Развитием методов линейного программирования и их обобщением следует рассматривать нелинейное программирование (НЛП), к которому относят задачи квадратичного, выпуклого, вогнутого, целочисленного, геометрического и др. видов математического программирования.. В работе рассматривается относительно простая задача управления запасами, не претендующая на общность и универсальность, для всех или даже многих случаев. Основное содержание подобных задач состоит в оптимальном регулировании запасов. В настоящее время реализуется заполнение хранилищ сжиженного газа в системе «Северный поток-2», что несомненно вызывает интерес как в Европейских странах, так и за пределами Европы. В системе энергоснабжения Европейских стран сейчас включена и функционирует подсистема пополнения запасов углеводородного топлива. Статья в некоторой мере проясняет основные вопросы и проблемы и этой системы снабжения.

Читать далее

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

Шрифты для графического дисплея? Это же очень просто

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

Скажете, это же все электрические приборы? Бесспорно. Но еще у них есть дисплей. Да, холодильники чаще могут обходиться без дисплея, чем смартфоны, но это неточно. В этом вопросе время на стороне холодильников.

Но это лирическое начало, а рассмотрим мы в статье вопрос создания растровых шрифтов для графических дисплеев.

Читать далее

Как достичь максимального счастья в обществе? (теория игр)

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

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

Возникает логичный вопрос: а можно ли с помощью концепций теории игр смоделировать поведение индивидов в обществе?

Ознакомиться

Задача выбора (назначения). Венгерский метод решения

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

Среди задач линейного программирования выделяют задачи, обладающие определенной спецификой, мотивирующей поиск и разработку специфических методов их решения. Эти методы существенно проще общего симплексного метода, так как учитывают особенности структуры и процессов (в транспортной задаче - это перевозки), описываемых задачей. В этой задаче для ее решения предложен как раз такой метод, получивший название "венгерский метод".

Читать далее

Проигрыватель мелодий из игры Monkey Island

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

Приключение начинается...

Кратко:

  • Я модифицировал DOSBox для извлечения пар значений частоты/задержки мелодий PC-спикера из игры «Остров обезьян».
  • Затем с помощью алгоритма Хаффмана я втиснул всю эту музыку в ATiny85 (512 байтов ОЗУ, 8Кб флэш).
  • После этого собрал небольшую плату с динамиком для ее воспроизведения…
  • … в качестве подарка моим племянникам и племянницам, с которыми встречусь в ближайшем будущем спустя год изоляции из-за пандемии.

Все верно – их дядя откровенный ботан, позаботившийся о том, чтобы детство племяшей не прошло без знакомства с Гайбрашем Трипвудом:)
Читать дальше →

Рекомендательные системы: как алгоритмы ЯRUS подбирают пользователям новости

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

Руководитель технической дирекции ЯRUS, Дмитрий Илюхин

Сегодня мы поговорим о внутренней кухне рекомендательных систем на примере приложения ЯRUS. Разработчики предлагают ярусный контент – новости, видео, события, музыку и многое другое. Однако цель команды ЯRUS – не только собирать разнообразный контент на одной площадке, но и правильно показывать его пользователям, за что и отвечает рекомендательная система. Что же такое рекомендательные системы и как они работают, расскажет руководитель технической дирекции ЯRUS Дмитрий Илюхин.

— Привет, как ты долго занимаешься проектом?

— В ЯRUS я с самого его основания, с июля 2020 года. Многое, что вы можете увидеть сейчас, – итог наших общих трудов с командой.

Расскажи чуть подробнее, как связаны приложение и рекомендательная система?

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

Есть два типа подходов. Первые основаны на том, что смотрит группа пользователей; вторые – на предпочтении конкретного человека. Мы учитываем всё.

Например, к нам в систему ежедневно подтягивается около 56 000 новостей от 10 000 источников СМИ. Все они проходят внутреннюю чистку: на качество, язык и прочие параметры. Оставляем только литературные тексты.

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

Читать далее

Протокол безопасности транспортного уровня (TLS), версия 1.2 (RFC 5246) (Часть 2)

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

Данный перевод является второй частью перевода протокола безопасности транспортного уровня (TLS) версии 1.2 (RFC 5246). Первая часть перевода находится  здесь. Вторая часть перевода содержит описание протокола записи TLS.

Читать далее

Как мы поучаствовали в ICFPC 2021 и что из этого вышло

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

Одна старая академическая конференция, International Conference on Functional Programming, уже больше двадцати лет организует соревнование по программированию своего имени. 1 задание, 72 часа, участвуют команды произвольного размера. На этом ограничения все. Задача может быть любой, решения — тем более.

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

Под катом обзор контеста 2021 года и нашего участия в нем. А еще алгоритмы, теории, байки и разбор решений других команд.

Читать далее

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