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

Алгоритмы *

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

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

Вычисления на RISC-V: исследуем производительность OpenCL на CPU и совместимых GPU

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

Привет! Меня зовут Михаил Козлов, я инженер-стажер в группе разработки математических библиотек в YADRO. Эта сфера активно развивается на RISC-V: известные математические библиотеки, такие как OpenBLAS, Eigen и многие другие, портируют и оптимизируют под открытую архитектуру. Большой интерес представляет OpenCL — открытый стандарт разработки программного обеспечения для гетерогенных вычислений. Он используется во многих областях: HPC, AI/ML, AR/VR, линейной алгебре, где он наиболее широко представлен с помощью библиотек clBLAS и CLBlast. 

В линейной алгебре OpenCL наиболее широко представлен с помощью библиотек clBLAS и CLBlast. Первая — более старая, вторая — более современная, со встроенным тюнером для оптимизации под конкретное железо. Далее я расскажу о своем проекте с летней стажировки: исследовании производительности этих библиотек на GPU

Читать далее

Заявка на участие в клубе создателей алгоритма объединения многоугольника и треугольника

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

Началось с того, что мне показалось простым делом - "векторно" (не "растрово") объединить многоугольник с треугольником. Вроде, получилось - программу написал - но вышло не совсем просто. Теперь я уже знаю, что я далеко не первый, кто возился с этой задачей, что таких людей очень много. А это значит, что наболело у многих, кто это реализовывал - есть, что обсудить, есть о чем поговорить - особенно, если у меня получилось не очень (вдруг ошибся, хотя я сейчас уверен, что всё работает, как часики) - можно ткнуть в меня вилкой. Задача вообще-то веселая. Приглашаю под кат.

Читать далее

Создание прототипа библиотеки для визуализации алгоритмов на Python

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

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

Читать далее

Муравьиный алгоритм. Решение задачи коммивояжера

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

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

Читать далее

Нейронные оптимизаторы запросов в реляционных БД (Часть 2): На пути к продуктивизации

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

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

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

Читать далее

Графы, растры и море: как школьники создают будущее геоаналитики

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

Привет, Хабр! Меня зовут Алексей Пустынников, я руководитель команды геоаналитики в банке ВТБ. Сегодня я хочу рассказать вам об интересном проекте, в котором участники конкурса «Большие Вызовы» решали сложные задачи в сфере геоаналитики и машинного обучения.

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

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

Читать далее

Как у нейросетей работает внимание? Статья про self-attention и cross-attention

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

Удивительно, как нейросети похожи на нас. У них тоже есть внимание, и на примере коня на ракете я расскажу, как оно работает!

Читать далее

Футбольные алгоритмы глобальной оптимизации (часть 2)

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

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

Алгоритм футбольной оптимизации (Football Optimization Algorithm, FOA)

FOA — это популяционный алгоритм, в котором пространство поиска имитируется футбольным полем. Индивидуальные решения представлены отдельными игроками, которым присваивается набор параметров (переменные решения) и значение мощности (функция приспособленности). Все игроки делятся на два типа: основные и запасные. В процессе поиска игрокам присваивается рейтинг, а игрок с лучшим рейтингом становится обладателем мяча. На каждой итерации рейтинг переоценивается и право владения мячом передаётся основному игроку с самым высоким рейтингом. Каждый раз при передаче мяча происходит обмен параметрами между двумя игроками. Игроки корректируют свои позиции, чтобы быть ближе к мячу, и постепенно направляются к воротам. То есть после каждого паса другие игроки перемещаются в положение, где они могут получить мяч, и дают больше возможностей игроку, владеющему мячом, в соответствии с уравнением, где игроки перемещаются к лучшему игроку на x единиц.

Читать далее

VLM в Нейро: как мы создавали мультимодальную нейросеть для поиска по картинкам

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

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

Меня зовут Роман Исаченко, я работаю в команде компьютерного зрения Яндекса. В этой статье я расскажу, что такое визуально‑текстовые мультимодальные модели (Visual Language Models или VLM), как у нас в Яндексе организован процесс их обучения и какая у них архитектура. Вы узнаете, как Нейро работал с картинками и текстами раньше, и что изменилось с появлением VLM.

Читать далее

Алгоритм Прима

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

В данной статье я бы хотел объяснить работу алгоритма Прима. Алгоритм используется для нахождения минимального остовного дерева. Сам алгоритм очень прост, в статье хотел бы поделиться своей реализации на языке Go.

Читать далее

Causal Inference: прозрение и практика. Лекция 2. Рандомизированные контролируемые испытания

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

Предыдущая лекция.

Рандомизированные контролируемые испытания (РКИ) представляют собой наиболее объективную, прозрачную и эффективную методологию для проведения экспериментов. Они пользуются огромной популярностью и применяются в самых разных сферах, включая науку, медицину, маркетинг и технологии. С их помощью учёные и специалисты могут проверять эффективность новых методов лечения, лекарственных препаратов, продуктов или услуг, сравнивая результаты между двумя или более группами. РКИ встречаются гораздо чаще, чем может показаться на первый взгляд. Это невероятно популярный метод исследования причинно‑следственных связей. Хотя они довольно просты в реализации, их точность значительно превосходит все другие методы аппроксимации ATE.

Читать далее

Книга: «Грокаем алгоритмы. 2-е изд.»

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

Мы снова возвращаемся с вторым изданием книги “Грокаем алгоритмы”! Красивым, новеньким, актуализированным. От первого тиража всё ещё пахнет типографией, а код примеров обновлен на Python 3!

Зачем второе издание? Первое было интересным, понятным, запоминающимся. Но оно было выпущено в далёком 2016 году, а перевод появился лишь в 2017. В сфере компьютерных технологий всё меняется и обновляется с невероятной скоростью, неудивительно, что автор решил актуализировать свою книгу.

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

Тестовое задание от гейм-студии (matchmaking, разбор)

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

На это задание я наткнулся в процессе недавнего поиска работы - компания занимающаяся разработкой игр (по-моему, Lesta Games) предлагала его выполнить до отклика на HH. То есть "присылайте отклик вместе со ссылкой на ваше решение" или в этом духе. А я обожаю тестовые задания - такой шанс быстро напедалить с нуля какой-то код и потом спокойно про него забыть :) Здесь задачка была сформулирована не слишком конкретно - мне такие кажутся скорее "поводом поговорить" - поэтому любопытно обсудить подобный кейс с сообществом, знатоками и сочувствующими. Речь шла про позицию Go-разработчика - но задание достаточно language-agnostic - так что читайте смело!

Итак, Задача!

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

Causal Inference: прозрение и практика. Лекция 1. Основные понятия Causal Inference

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

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

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

Однако со временем стало ясно, что для полного понимания данных необходимо научиться объединять эти два подхода. Здесь на сцену выходит причинно‑следственный вывод (Causal Inference). Эта область Data Science помогает раскрыть причины явлений, объединяя преимущества как машинного обучения, так и эконометрики. Judea Pearl в своей статье 2021 года подчеркивает важность причинно‑следственного вывода как «ключевого элемента для достижения баланса между радикальным эмпиризмом ML и интерпретационным подходом эконометрики».

Таким образом, Causal Inference — это область статистики и научных исследований, направленная на выявление и измерение причинно‑следственных связей между переменными. Она помогает определить, какое воздействие оказывает изменение одной переменной на другую, отличая это воздействие от простых корреляций.

Читать далее

PostgreSQL Antipatterns: устраняем вложенные интервалы

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

Недавно попался на глаза запрос, которым хотели отобрать в таблице (очевидно, для последующего удаления) все id записей интервалов, которые полностью перекрыты каким-то другим интервалом того же owner'а.

Но self-JOIN показал себя не лучшим образом...

Как сделать эффективнее?

Чем отличается изобретатель вечного двигателя от просто изобретателя?

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

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

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

Читать далее

Мой опыт в переводе между типами С++ и С#

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

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

Читать далее

Визуализатор музыки на основе игры Pong

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

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

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

Также мы сохраним следующие правила классической игры:

  • Точка контакта мяча с ракеткой определяет угол отражения
  • У ракеток нет ограничений по скорости
  • Мяч отскакивает от верха и низа экрана

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

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

Погружение в Sampling method: механизмы работы в моделях диффузии

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

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

Читать далее

Как устроен робот-доставщик Яндекса: от восприятия до планирования движения

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

Уже пять лет по улицам Москвы колесят роботы‑курьеры Яндекса, доставляя нам еду из любимых ресторанов и магазинов быстрее, чем мы успеваем проголодаться. На пути им встречается много препятствий: от безобидной клумбы, которую можно просто объехать, до восторженных детей (и иногда взрослых), от которых порой не так просто уехать.

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

Привет, меня зовут Тая, и я ML‑разработчик в команде восприятия робота‑доставщика. Сегодня я впервые детально расскажу о технологиях, благодаря которым робот‑доставщик Яндекса успешно доставляет заказы. Разберу ключевые компоненты системы, от сенсоров до алгоритмов принятия решений, и объясню, как они взаимодействуют. Из статьи вы узнаете, что происходит «под капотом» нашего робота во время его путешествий по городу.

Готовы погрузиться в мир автономной доставки?

Поехали!

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