Как стать автором
Поиск
Написать публикацию
Обновить
135.38

Алгоритмы *

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

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

Улучшаем навигацию роботов с помощью нейронного потенциального поля

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

Всем привет! Меня зовут Алексей Староверов, я научный сотрудник группы «Embodied agents» в AIRI. К числу моих научных интересов в основном относятся алгоритмы обучения с подкреплением (RL) и их применение для робототехнических систем. В этом году в рамках конференции ICRA 2024 мы с коллегами из МФТИ представили статью на тему автономной навигации мобильных роботов, о которой я бы и хотел вам рассказать.

Читать далее

Компьютерное зрение и котики. Или алгоритмы против человека

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

Разберём основы компьютерного зрения на примерах с котиками, узнаем, почему CV на самом деле совсем не про зрение и научимся делать свёртку.

Читать далее

Синтаксический анализатор — модифицированный Shunting Yard

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

Алгоритм синтаксического анализа кода на основе Shunting Yard

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

Читать далее

Простая латиница для русского языка

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

Натягиваем латинскую азбуку на русский язык без использования дополнительных символов. Почти полный меч с русской орфографией.

Nu-ka, chio tam

Эмоциональный и искусственный. Учим нейросети понимать социальные взаимодействия людей на AIJ Contest

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

Мы в лаборатории FusionBrain уже много лет работаем на созданием мультимодальных моделей, способных работать с как можно большим числом данных разного типа. Не так давно, например, мы релизнули мультимодальную LLM OmniFusion 1.1, способную поддерживать визуальный диалог и отвечать на вопросы по картинкам, причём с поддержкой русского языка — и рассказали об этом на Хабре.

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

В этом году мы решили пойти дальше и сместить фокус на анализ видео и аудио во взаимодействии с человеком. Назвали соответствующе — Emotional FusionBrain 4.0. Ниже — подробности и детали соревнования.

Читать далее

10. Особые линейные системы ч. 1

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

Продолжаем публикацию лекций по предмету "Управление в Технических устройствах" Автор Олега Степановича Козлова. Кафедра "Ядерные энергетические установки" МГТУ им. Н.Э. Баумана. Это пожалуй первая лекция, гда теория автоматеского управления применяется непосредственно к таким устройствам как ядерные реакторы. Более того имеенно на это лекции объясняется что такое 1D моделирование.

В предыдущих сериях:

1. Введение в теорию автоматического управления.2. Математическое описание систем автоматического управления 2.1 — 2.32.3 — 2.82.9 — 2.13

3. Частотные характеристики звеньев и систем автоматического управления регулирования. 3.1. Амплитудно-фазовая частотная характеристика: годограф, АФЧХ, ЛАХ, ФЧХ3.2. Типовые звенья систем автоматического управления регулирования. Классификация типовых звеньев. Простейшие типовые звенья3.3. Апериодическое звено 1–го порядка инерционное звено. На примере входной камеры ядерного реактора3.4. Апериодическое звено 2-го порядка3.5. Колебательное звено3.6. Инерционно-дифференцирующее звено3.7. Форсирующее звено.  3.8. Инерционно-интегрирующее звено (интегрирующее звено с замедлением)3.9. Изодромное звено (изодром)3.10 Минимально-фазовые и не минимально-фазовые звенья3.11 Математическая модель кинетики нейтронов в «точечном» реакторе «нулевой» мощности

4. Структурные преобразования систем автоматического регулирования.

5. Передаточные функции и уравнения динамики замкнутых систем автоматического регулирования (САР).

6. Устойчивость систем автоматического регулирования. 6.1 Понятие об устойчивости САР. Теорема Ляпунова. 6.2 Необходимые условия устойчивости линейных и линеаризованных САР. 6.3 Алгебраический критерий устойчивости Гурвица. 6.4 Частотный критерий устойчивости Михайлова. 6.5 Критерий Найквиста.

Читать далее

Доктора Кнут, Моррис и Пратт, или Как я перестал бояться и полюбил префикс-функцию

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

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

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

Читать далее

Решаем загадку Джиндоша на SQL в пять строчек

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

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

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

Как?!

Диалектика vs Хаос: Или почему Гегель перевернулся бы в гробу

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

Привет, хабровчане! Готовы к небольшому философскому экскурсу с щепоткой безумия? Пристегните ремни, мы отправляемся в путешествие от чинной диалектики к дикому хаосу!

Читать далее

Как мы генерируем GPT-нейросетями миллиарды объявлений на малом количестве GPU. Доклад Яндекса

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

Привет! Меня зовут Ольга Зайкова, в Яндексе я руковожу группой автоматической генерации рекламы. Сегодня расскажу о соединении тяжёлых процессингов и GPU‑вычислений. Обсудим, как мы реализовали высоконагруженный процессинг, который обрабатывает миллиарды товаров и превращает их в объявления, используя тяжёлые модели, такие как YandexGPT, DSSM, CatBoost и другие. И, конечно, не обойду стороной тему проблем с нагрузкой: они возникали почти на каждом шагу.

Читать далее

SQL HowTo: загадка Эйнштейна, или снова Джиндош

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

Пару дней назад был опубликован пост с решением на MySQL загадки Джиндоша (она же загадка Эйнштейна).

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

Поэтому я попробовал решить эту задачу "в общем виде", используя возможности PostgreSQL, и вот что из этого получилось.

Читать далее

FREED++. Ускоряем поиск новых лекарств с помощью нейросетей

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

Привет! Меня зовут Александр Телепов, я — исследователь в Институте AIRI. Наша команда занимается применением глубокого обучения в науках о жизни. В сферу наших интересов входят такие задачи, как дизайн материалов, анализ растворимости или поиск новых лекарственных препаратов. Про последнее я бы хотел поговорить поподробнее.

О том, что сегодня для поиска новых соединений используют нейросети, слышали многие. Взять хотя бы нашумевший AlphaFold 3 от DeepMind, решающий задачу генерации трехмерной структуры разнообразных молекулярных комплексов. Существуют и другие задачи, в которых нейросети преуспели над классическими численными методами. Ярчайший пример — генерация молекул‑лекарств. Одним из самых заметных подходов к этой задаче стал фреймворк генерации молекул‑лекарств на основе методов обучения с подкреплением FREED. Но и он оказался далёк от идеала.

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

Читать далее

Умножение матриц и SMT – почему бы и нет?

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

Привет, Хабр! Меня зовут Евгений Буевич, я работаю в Рунити. Как-то раз у меня возникла непреодолимая потребность умножать матрицы определенного размера, смотреть, что получится и умножать опять до тех пор, пока что-нибудь не получится.

Остановился на BLIS, скомпилировал, подключил, и было мне счастье. Матрицы стали подрастать в числе и размере, скорость процесса, как ей и положено, падала в кубе от размера и кратно от числа. В конце концов стало ощущаться, что на ЦПУ 486,4 GFLOPS и ни флопсом больше, а замеры показывали, что на самом деле их около 350.

Читать далее

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

Алгоритм сравнения отпечатков пальцев: комбинация классических алгоритмов

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

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

Читать далее

Подводные камни устройства карты видимости в СУБД PostgreSQL

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

Карта видимости - это достаточно простой механизм в СУБД PostgreSQL, но даже он имеет множество интересных тайн, если погрузиться в детали реализации.

В этой статье мы выясним:

1. Какие особенности есть у механизма сбрасывания и установки бита полной видимости.

2. Как Index only scan использует бит полной видимости.

3. Зачем записывать информацию об изменении карты видимости в WAL.

4. Каким образом карта видимости участвует в оптимизации предвыборки Bitmap scan.

5. Зачем механизму оценки селективности нужна карта видимости.

Читать далее

ML-подход к заблаговременному предотвращению оттока рекламодателей

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

В этом материале мы опишем систему для заблаговременного предотвращения оттока рекламодателей, основанную на машинном обучении (ML, Machine Learning). Прототип системы создан на основе данных организаций малого и среднего бизнеса (Small & Medium Business, SMB), с которыми работает Pinterest. Результаты изначального эксперимента говорят о том, что мы, с высокой вероятностью, можем обнаруживать возможный уход рекламодателей. Это, в свою очередь, способно помочь нашим торговым партнёрам. Система, подобная нашей, может достичь лучших результатов, чем обычный подход, когда пытаются вернуть уже ушедшего клиента.

Читать далее

Жизнь, смерть и ̶р̶о̶б̶о̶т̶ы̶ управление ресурсами в Scala

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

Вы когда-нибудь задумывались о том, как выделяется память для переменных, и в какой конкретно момент она очищается? Как сборщик мусора «решает», что переменная уже не нужна и можно ли как-то повлиять на его решение?

В новой статье директор департамента разработки компании «Криптонит» Алексей Шуксто рассказал об интересных особенностях управления жизненным циклом объектов в Scala и Java разных версий. С необходимостью вникать в эту внутреннюю кухню сталкиваются все, кто использует в своих программах потоки, подключения к БД и другим сторонним сервисам, анализирует метрики, обрабатывает исключения… все, кто пишет что-то сложнее «Hello World!» и хочет добиться предсказуемого результата.

Читать далее

Раскрываем секреты роя: оптимизация на Python с помощью PSO

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

Начну с небольшой шутки:

"Знаете ли вы, что до изобретения часов людям приходилось активно ходить повсюду и спрашивать время?"

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

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

Индивидуально оптимальная позиция: то, что особь считает наилучшим для себя.

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

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

Данный алгоритм известен как оптимизация роем частиц (Particle Swarm Optimization, PSO). Возможно, это звучит несколько сложно. Что подразумевается под "оптимизацией"? Какова роль математики в этом процессе? Что именно оптимизируется? В статье я постараюсь подробно разъяснить все эти моменты. Более того, мы применим ООП на Python для создания собственного класса ParticleSwarmOptimizer(). И таким образом, мы пройдем путь от теоретических основ PSO до их практической реализации.

Итак, приступим! Желаю приятного чтения.

Читать далее

Поиск всех последовательностей чисел от 1 до n, где сумма соседних чисел является квадратом

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

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

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

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

Читать далее

Решаем загадку Джиндоша из Dishonored 2 на SQL перебором с возвратом

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


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

Сегодня мы рассмотрим решение непростой загадки Джиндоша из замечательной игры Dishonored 2 с помощью SQL.
SQL Может Многое!

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