Все потоки
Поиск
Написать публикацию
Обновить
183.27

Алгоритмы *

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

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

Модель числа I. Нахождение инволюции

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

Ранее в  статьях. о симметриях списочной многострочной модели (СММ) рассматривались окаймления строки нетривиальных инволюций (НIn) парами строк, содержащих квадратичные вычеты — полные квадраты (КВК). В таблице А0 показаны названные зависимости.

При изложении текста  решается задача определения нетривиальных инволюций (НIn) в конечном числовом кольце вычетов (КЧКВ) по составному (полупростому) модулю и формировании полного списка модели. Для получения решения используется модель составного числа (СММ) и Закон распределения делителей (ЗРД здесь). Любая пара строк СММ, окаймляющая строку нетривиальных инволюций, имеет номера, полусумма которых равна номеру строки НIn, совпадающему с меньшим значением инволюции.

Читать далее

Сравнение алгоритмов градиентного бустинга или история знает только первых…

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

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

Читать далее

Гуру тест про порядок элементов в иерархии

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

Предлагаю вашему вниманию задачу, которую задавал своим коллегам 1сникам. Но они не справились. Возможно, ваши познания в SQL лучше, чем их.

Есть некоторый иерархический справочник, иерархия элементов. У каждого элемента есть поле «Позиция» (может быть дробным и отрицательным). Элементы в пределах одного родителя должны быть пронумерованы в поле «Позиция» по порядку с единицы с шагом один: 1, 2, … N

Таким образом, например, чтобы поменять порядок элементов с позициями 2 и 3 мы можем элементу с позицией 2 установить позицию 2,5 и вызвать процедуру исправления порядка.

Читать далее

SQL HowTo: работа с массивами (Advent of Code 2024, Day 4: Ceres Search)

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

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать.

В этой части немного поработаем с массивами.

Читать далее

SQL HowTo: «чистые» регулярки (Advent of Code 2024, Day 3: Mull It Over)

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

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать.

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

Читать далее

SQL HowTo: логические агрегаты (Advent of Code 2024, Day 2: Red-Nosed Reports)

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

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать.

В этой части с решением нам помогут логические агрегаты bool_and/bool_or.

Читать далее

SQL HowTo: регулярные выражения и условная агрегация (Advent of Code 2024, Day 1: Historian Hysteria)

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

В этой челлендж-серии статей, начатой, внезапно, с разбора задачи Day 11, попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать.

Читать далее

Металл и алгоритм отжига

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

Вступление

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

Понимание Алгоритма Отжига

В области алгоритмов оптимизации выделяется Алгоритм Отжига (Симулированный Анализ) - мощная техника, вдохновленная физическим процессом в металлургии, позволяющая улучшить кристаллическую структуру материалов.Идея заключается в том, чтобы начать с высокотемпературной системы с постепенным охлаждением и переходом к минимальной энергии.Разработанный Брайаном Луком в конце 1980-х алгоритм нашел широкое применение в различных областяхот инженерии и информатики до финансов и биологии, благодаря способности эффективно искать оптимальные решения в сложных пространствах.

Реализация

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

Рассмотрим фазы алгоритма:

Читать далее

JavaScript: структуры данных и алгоритмы. Часть 7

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


Привет, друзья!


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


Сегодня мы поговорим об алгоритмах для работы со строками и поиска.


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


Интересно? Тогда прошу под кат.

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

Рекомендательная библиотека RePlay: сравнение с конкурентами RecBole и Recommenders на примере SOTA-модели SASRec

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

Привет, Хабр! Мы — команда ML‑разработчиков Сбера и Sber AI Lab. Хотим рассказать о нашем open‑source инструменте RePlay, который позволяет создавать рекомендательные системы с нуля, начиная с самых ранних DS‑экспериментов и заканчивая промышленной эксплуатацией. Статья будет интересна ML‑инженерам, разрабатывающим промышленные рекомендательные системы.

Мотивацией для создания RePlay послужил тот факт, что все популярные на сегодняшний день RecSys‑фреймворки в основном нацелены на научные исследования и плохо оптимизированы для промышленной эксплуатации: не в состоянии обработать большой объём данных или требуют для этого значительных модификаций. Подробнее о создании библиотеки вы можете прочитать в соответствующей статье с RecSys 2024. По той же ссылке вы найдёте обзорное видео о RePlay.

Здесь же мы сравним RePlay с главными конкурентами — RecBole и Microsoft Recommenders. Разберём возможности, которые предоставляет каждая из библиотек, а затем, на примере SOTA‑модели, построим рекомендательную систему, начиная с ввода данных и заканчивая генерированием рекомендаций и подсчётом метрик. Сравним полученные модели по качеству и длительности обучения и инференса. В конце расскажем об уникальных возможностях RePlay, которые помогут ещё сильнее облегчить путь разработчика, по сравнению с использованием библиотек‑конкурентов

Читать далее

Миф о RAM

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

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

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

groups = [[] for _ in range(n_groups)]

for element in elements:

groups[element.group].append(element)

Он и в самом деле линеен (то есть асимптотически оптимален), и мы всё равно должны выполнять доступ к произвольным индексам, так что кэш здесь нам ни в чём бы не помог.

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

Читать далее

Стратегия Келли точно не подведёт

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

Возможно, вы слышали о финансовой стратегии ставок по методу Келли. Это система, позволяющая оборачивать себе на пользу известную информацию в азартной игре или связанные с ней предубеждения. Эта стратегия также называется максимально агрессивной или стратегией высокой дисперсии. Дело в том, что если сделать ставку выше, чем позволяет предел Келли, то последствия могут быть катастрофическими.
Недавно мне попалась странная карточная игра, в которой стратегия Келли абсолютно не подразумевала риска, поскольку в игре действует Нулевая дисперсия. В своей знаменитой книге «Математические головоломки» Питер Уинклер называет её «Next Card Bet» («Следующая карточная ставка»). Саму задачу и её решение, по-видимому, сформулировал Томас Кавер. Мне понравилась как сама эта игра в ставки, так и её анализ, поэтому я поделюсь ими с вами здесь.

Читать далее

Знакомства на основе данных: как мы запустили корпоративный дейтинг-сервис в Сбере

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

Привет, меня зовут Андрей Кузьминых. Я технологический предприниматель, запускаю ИИ-стартапы и внедряю искусственный интеллект в компаниях. Некоторое время назад я работал в Сбере в роли директора по данным и ИИ, где мы с командой анализировали огромные массивы данных, строили ML-модели, создавали управленческие дашборды и рекомендательные сервисы. Но одним из самых интересных и нестандартных проектов стало создание первого в России корпоративного приложения для знакомств среди сотрудников – SberDating. Идея родилась из стремления помочь людям найти тех, с кем можно установить нечто большее, чем просто деловые отношения, – друзей, собеседников, а возможно, и любимого человека. Но чтобы понять, как мы к этому пришли, нужно вернуться на пять лет назад.

Если вам интересна тема ИИ, мои кейсы и опыт, подписывайтесь на мой телеграм-канал, где я делюсь инсайтами, практическими советами и последними новостями из мира искусственного интеллекта.

Читать далее

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

ANS-технология в гарнитурах VT и Yealink

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

Если вы хотя бы раз пользовались гарнитурой с технологией ANS (Active Noise Suppression, активное шумоподавление), то уже знаете, насколько применение ANS меняет качество передачи речи. Голос собеседника четко слышен в любой обстановке: на улице, в шумном офисе или на производстве.

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

Давайте проанализируем подходы VT и Yealink к реализации ANS в гарнитурах и сравним эффективность их решений.

Читать далее

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

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

Привет! Меня зовут Михаил Мазанов, я отвечаю за технологический стек работы с медиаданными в Кинопоиске: от съёмок оригинальных проектов до доставки и просмотра видео на всех экранах. Для нашей пятой ежегодной конференции про стриминг PlayButton 2024 я готовил большой доклад про оптимизацию качества видео Кинопоиска, а для Хабра решил пересобрать его в виде статьи — для тех, кому текстовый формат предпочтительнее видео.

Кроме технических графиков, вас ждёт ещё и наглядная разница в работе алгоритмов сжатия на примере «Рика и Морти» и «Джона Уика».

Читать далее

Как мы проектировали свой отечественный драйвер IGBT

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

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

В этом году я со своими студентами провел такое проектно-научное исследование в рамках гранта НИУ «МЭИ» на реализацию программы научных исследований «Приоритет 2030: Технологии будущего». Тематикой работы была «Разработка интеллектуального драйвера IGBT на напряжение 3,3 кВ для 3-уровневых инверторов тяговых электроприводов поездов высокоскоростной железнодорожной магистрали Москва - Санкт-Петербург». Проект выполнялся с апреля по октябрь, и в нём были задействованы кроме меня, как руководителя, студенты 4 курса бакалавриата и 1 курса магистратуры.

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

Как вы поняли из заявленной тематики, мы выполняли разработку отечественного драйвера IGBT, в рамках которой реализовали как аппаратное решение, так и программное обеспечение с необходимыми алгоритмами управления драйвера. Интересным моментом здесь было то, что мы пошли по рискованному пути и отказались в разработке от ПЛИС для реализации логики работы драйвера, и выбрали motorcontrol микроконтроллер с довольно развитой периферией, но при этом уступающий по быстродействию современным ПЛИС.

Читать далее

Петь в такт машине: история караоке и устройство его аппаратов

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

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

Читать далее

Много алгоритмов сортировки на языке C++: от простого к сложному с примерами и пояснениями

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

Всем привет! Подтолкнуло написать меня эту статью мой непосредственный интерес к алгоритмам и решению задач на leetcode, каждый раз, используя стандартную сортировку из STL std::sort, я знал, что ее сложность O(n*log(n)), но как она реализована внутри не доходили руки разобраться, в добавок мне стало интересно, какие есть другие виды сортировок, кроме самых простых, с которыми каждый знакомится в начале своего пути.

Я решил это исправить! И описать все виды сортировок, с которыми мне так или иначе приходилось встречать во время выполнения своих тасков или решению задач на leet.

Начнем с того, что разберемся, какие виды сортировок вообще есть и разобьем их на условные простые/продвинутые/для специальных случаев, а также разберемся, что использует std::sort у себя под капотом.

Читать далее

Какие образы распознаёт двухлучевой инфракрасный счётчик

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

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

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

Читать далее

BABILong — бенчмарк для оценки LLM на больших контекстах

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

Привет, Хабр! Мы — команда Memory‑Augmented models в составе лаборатории Cognitive AI Systems AIRI. В ходе своих исследований мы стараемся разобраться, насколько хорошо LLM могут обрабатывать большой объем данных и решать задачи на основе них.

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

Чтобы выяснить это, мы вместе с коллегами из МФТИ и Лондонского института Математических Наук создали новый бенчмарк под названием BABILong, который мы привезли на NeurIPS в этом году. Он оценивает то, насколько успешно современные модели умеют искать информацию в собственных гигантских контекстах. Оказалось, что зачастую главное — это не размер, а умение пользоваться.

В этой статье расскажем подробнее о наших экспериментах, а также о том, как эффективно использовать длинный контекст.

Читать далее

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