Как стать автором
Обновить
236.08

Алгоритмы *

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

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

Reinforcement learning для оптимизации цен в ритейле

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

Динамическое ценообразование является современным подходом к ценообразованию в ритейле. Оно напрямую связано с моделированием спроса, что позволяет проводить оптимизацию цен на будущий период. В этой задаче популярным решением является использование машинного обучения, однако, есть мнение, что Reinforcement Learning (а именно, многорукие бандиты), способны выступить сильной альтернативой моделям ML для динамического ценообразования. Но так ли это на самом деле? Попробуем разобраться в этой статье, держа в уме практические аспекты.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Римские числа или как не запоминать составные варианты

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

Откройте почти любую реализацию перевода чисел из арабской системы в римскую и вы почти со 100% вероятностью увидите там знаменитые дифтонги "CM" (900), "CD" (400) и так далее. И поначалу кажется, что без них не обойтись. Но это не так!

Читать далее
Всего голосов 21: ↑18 и ↓3+15
Комментарии45

Создаём субтитры для любого видео в интернете с помощью нейросети в браузере

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

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

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

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

Читать далее
Всего голосов 24: ↑23 и ↓1+22
Комментарии19

Циркуль и линейка. Часть 1

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

Всем привет!

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

Всё дальнейшей вылилось в эту статью.

Читать далее
Всего голосов 46: ↑46 и ↓0+46
Комментарии13

Истории

PKI, прикладная криптография и электронная подпись: о чем здесь речь и как это работает в нашей блокчейн-платформе

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

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

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Книга «Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд.»

Время на прочтение12 мин
Количество просмотров10K
image Привет, Хаброжители!

Язык Go — это простой и понятный язык для создания высокопроизводительных систем будущего. Используйте Go в реальных производственных системах. В новое издание включены такие темы, как создание серверов и клиентов RESTful, знакомство с дженериками Go и разработка серверов и клиентов gRPC.

Третье издание «Golang для профи» исследует практические возможности Go и описывает такие продвинутые темы, как параллелизм и работа сборщика мусора Go, использование Go с Docker, разработка мощных утилит командной строки, обработка данных в формате JSON (JavaScript Object Notation) и взаимодействие с базами данных. Кроме того, книга дает дополнительные сведения о работе внутренних механизмов Go, знание которых позволит оптимизировать код на Go и использовать типы и структуры данных новыми и необычными способами.

Также охватываются некоторые нюансы и идиомы языка Go, предлагаются упражнения и приводятся ссылки на ресурсы для закрепления полученных знаний.

Станьте опытным программистом на Go, создавая системы и внедряя передовые методы программирования на Go в свои проекты!
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии10

Как мы создали нейросеть, которая составила рейтинг компаний, занимающихся ИИ в России

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

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

Идея проекта

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

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии3

Головоломка ассасина

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

В 2014 году профессор математики Стэнфордского университета Марьям Мирзахани в одной из своих лекций упомянула интересную математическую головоломку, но не стала давать её решение. Спустя годы появились различные вариации задачи. Однако сначала речь пойдёт о первоисточнике.

Головоломка относится к классу так называемых «бильярдных задач», изучаемых в области динамических систем. Решение текущей задачи принадлежит профессору математики университета Джонса Хопкинса Эмили Рил.

Рассмотрим квадратную комнату в плоскости XY, и пусть A («ассасин») и T («цель») — две произвольные, но фиксированные точки внутри комнаты. Предположим, что комната схожа по физическим характеристикам с бильярдным столом, так что любой «выстрел» А рикошетит от стен, причём угол падения равен углу отражения. Можно ли заблокировать любой возможный «выстрел» А в Т, разместив конечное количество аналогичных по свойствам точек («телохранителей») в комнате?

Читать далее
Всего голосов 32: ↑32 и ↓0+32
Комментарии27

Планирование продаж и управление ценой в онлайн-режиме. Часть 1

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

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

Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии0

Есть один нюанс: как мы спасаем нейросети от классификации неоднозначных текстов

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

Всем привет! Меня зовут Артём Важенцев, я аспирант в Сколтехе и младший научный сотрудник AIRI. Я работаю в группе под руководством Александра Панченко и Артёма Шелманова. Мы занимаемся исследованием и разработкой новых методов оценивания неопределенности для языковых моделей. Этим летом мы представили две статьи на конференции ACL 2023. В одной из них мы описали новый гибридный метод оценивания неопределенности для задачи выборочной классификации текстов для данных с неоднозначными примерами — его внедрение поможет нейросетям лучше находить токсичность в комментариях или угадывать тональность сообщений. В этом тексте я бы хотел рассказать подробнее о нашем методе и процессе его разработки.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии3

SQL HowTo: ближайший общий предок в дереве (LCA)

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

В иерархических структурах регулярно возникает потребность определить ближайшего общего предка в дереве, он же наименьший общий предок (Lowest (Least) Common Ancestor).

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

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии4

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 5

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

В прошлых частях мы рассмотрели семейство квантовых гейтов: Инвертор, C-NOT, Адамара, инверсия фазы. Но, согласитесь, как-то не похожи они на привычные нам гейты классических компьютеров: AND, OR, XOR, NOT. Ну, ладно, с NOT это я хватил лишку, NOT это вполне тоже самое, что квантовый инвертор, который мы рассмотрели самым первым гейтом в прошлых частях.

А как быть с остальными? Можем ли мы как-то сделать, к примеру, квантовый AND?
И да, и нет. Как вы помните из второй части, квантовая операция обязана обладать двумя важными свойствами:

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

• свойство сохранения нормы, которое заключается в том, что сумма вероятностей всех возможных состояний должна быть 1. А значит сумма квадратов всех амплитуд должна быть 1.

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии2

S3-FIFO: новый эффективный алгоритм вытеснения из кэша на основе очередей FIFO

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров7.6K
В этой статье я расскажу о простом и масштабируемом (Simple, Scalable) алгоритме вытеснения данных из кэша на основе трёх статических (Static) очередей FIFO (S3-FIFO). После проверки на 6594 трассировках кэшей 14 компаний мы показали, что S3-FIFO имеет меньшую частоту промахов, чем 12 лучших алгоритмов, разработанных в прошлые десятилетия. Более того, эффективность S3-FIFO устойчива — он имеет наименьший средний показатель промахов для 10 из 14 датасетов. Использование очередей FIFO позволяет S3-FIFO достичь хорошей масштабируемости с пропускной способностью в шесть раз больше по сравнению с оптимизированным LRU в cachelib на 16 потоках.

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

Иллюстрация работы S3-FIFO (с использованием порогового значения перехода из маленького в основной кэш, равного 1)
Читать дальше →
Всего голосов 69: ↑69 и ↓0+69
Комментарии5

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

Продолжаем изучение арбитража криптовалют: прогноз срока жизни оффера

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

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

Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии7

Алгоритм Левита: между Дейкстре и Беллманом

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

Привет, Хабр! Когда заходет речь о поиске кратчайшего пути между двумя вершинами выбор обычно ложится на Дейкстре или Беллмана-Форда, однако есть ещё один алгоритм, который может сработать быстрее Беллмана, но не "сломается" на графах с отрицательными рёбрами.

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

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Строим удобные автомобильные маршруты

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

Хороший автомобильный маршрут из точки А в точку Б должен, с одной стороны, быть кратчайшим, а с другой — удобным для водителя. Как правильно вычислить время в пути мы уже рассказали, теперь — об удобстве маршрутов: что это такое, как его измерить и как мы его повышали.

Читать далее
Всего голосов 28: ↑28 и ↓0+28
Комментарии33

Вывод оптимального алгоритма с помощью формализма Бёрда-Меертенса

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

Некоторые оптимальные алгоритмы, оказывается, можно вывести из неоптимальных, пользуясь эквивалентными преобразованиями алгоритма. Бёрд и Меертенс разработали формализм, который устанавливает свойства функций высшего порядка map, fold, scan, позволяющие преобразовывать алгоритмы в эквивалентные. (См. также на Вики). Ниже представлен вольный перевод статьи Бёрда.


Рассмотрим задачу поиска максимальной суммы сегмента массива. Эту задачу можно переформулировать в виде математически точного ответа:


Для всех сегментов, которые можно получить из массива, необходимо посчитать сумму чисел, а затем среди всех таких сумм найти максимальную.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии0

Что такое арбитраж? Передовые технологии торговли на примере криптобиржи

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

Благодаря технологии блокчейн, криптовалютам, криптобиржам, приоритеты людей, компаний и даже стран меняются прямо на наших глазах. Один знакомый разработчик из этой сферы однажды сказал мне, что он не возлагает больших надежд на все это, несмотря на то что это перспективно и хорошо оплачивается. Однако присутствует некое чувство неуверенности. "Водопровод, - говорит он, - казалось бы, одна из самых простейших технологий, но как она изменила жизнь. Когда в конце 90-х в моей небольшой деревне в моем доме появилась вода, которую не нужно было добывать большим трудом, жизнь действительно стала на порядок лучше и приятнее." Блокчейн, по его словам, сейчас является чем-то вроде того же водопровода - он обязательно изменит жизнь к лучшему, но сколько труда и времени для этого понадобится?

Читать дальше →
Всего голосов 33: ↑26 и ↓7+19
Комментарии16

Множественная кусочно-постоянная регрессия

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

Описан алгоритм построения кусочно-постоянной зависимости переменной y от взвешенной суммы x=w_1x_1+\ldots+w_px_p, минимизирующей сумму квадратов отклонений y от средних значений на диапазонах изменения величины x.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии13

Чтобы двигаться быстро, решатели квантовых лабиринтов должны забыть о прошлом

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

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

Представьте, что вы посещаете лабиринт с друзьями. Вы вышли из выхода вскоре после входа и ждёте несколько часов, прежде чем появятся ваши друзья. Естественно, они спрашивают о пути, по которому вы шли — вы ведь можете проследить свои шаги и показать им путь, верно?

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

Исследователи давно задавались вопросом, неизбежен ли этот компромисс. Неужели невозможно быстро найти выход, не забыв дорогу?

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии1

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