Обновить
268.08

Алгоритмы *

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

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

Путеводитель для диффузионок. Как заставить нейросети качественно редактировать изображения

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

Привет, Хабр! Меня зовут Вадим, я — младший научный сотрудник группы Controllable Generative AI лаборатории FusionBrain в AIRI. Последние несколько лет я занимаюсь исследованием генеративных моделей в контексте задачи редактирования фотографий. Мы с командой накопили большую экспертизу и хотели бы поделиться ей.

Совсем недавно мы выложили препринт статьи, которую мы представим на ECCV этой осенью (сама статья, её код, demo на HuggingFace). Там мы предложили метод редактирования реальных изображений с помощью диффузионных моделей, который достигает лучшего компромисса между качеством редактирования и сохранением структуры исходного изображения, а также эффективен с вычислительной точки зрения. В данной статье я хотел бы рассказать о том, почему приходится делать такой выбор, и как мы эту проблему обошли. Приятного чтения!

Читать далее

Игрострой. Программирование. Оптимизация как камень преткновения

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

Всем привет! Для тех кто не знает, меня зовут Ш. Сергей!

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

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

ознакомится

Задача коммивояжёра в общем виде. Наибыстрейшее точное решение

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

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

Тут я хочу подытожить все опробованные подходы и выбрать лучший по моему мнению.

Читать далее

Поделить нельзя — умножить или алгоритм быстрого деления по методу Ньютона-Рафсона

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


Все мы в школе проходили деление «столбиком» — простой алгоритм, который несложно реализовать, вот только не очень быстрый. В прошлый раз мы рассматривали, как компилятор оптимизирует деление в случаях, когда делитель известен во время компиляции, но применение его напрямую, чтоб оптимизировать деление для делителей, определямых в run-time, невозможно: вычисление констант сдвига и умножения само по себе требует деления.

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

Как на C# написать программу в одно выражение?

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

Попалась на Stack Overflow интересная задачка: написать программу как можно короче и в одну строку. Что подразумевается под одной строкой? Это значит использовать только один оператор (statement) верхнего уровня с точкой с запятой в конце и не использовать блоки кода. Вложенные операторы допускаются.

Читать далее

Красно-черные сигналы в node.js

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

Что происходит, когда мы отправляем сигнал приложению на node.js? Когда вызываются обработчики? А где хранятся? Во всем этом мы разберемся в данной статье, начиная от пользовательского кода на javascript и до встречи с операционной системой.

Читать далее

Решаем судоку на pytorch

Время на прочтение7 мин
Охват и читатели2.2K

Решаем судоку на pytorch. Можно ли делать нейросети без обучения? Без кучи тестовых примеров? Попробую ответить на этот вопрос.

Читать далее

Близкий родственник эльфа – программер

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

Многие знакомы с ELF-файлами и их структурой. Поговорим о программерах. Программер – это файл в формате ELF (расширение может быть BIN, MBN или ELF), который предназначен для  работы с памятью смартфонов на Android с процессорами от Qualcomm в режиме аварийной загрузки (EDL mode – emergency download, 9008). Также его некоторые называют «пожарный шланг» (от английского firehose) или просто «шланг». Файл представляет из себя контейнер с набором команд для базовой работы с памятью, которые подписаны цепочкой сертификатов. Иногда возникает необходимость подобрать для своего устройства подходящий программер. Вот и попробуем разобраться в этом.

Читать далее

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

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

Привет, Хабр, я Павел Бузин, работаю аналитиком в компании Cloud.ru и занимаюсь решением задач, требующих применения различных математических методов, в том числе используемых для машинного обучения. 

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

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

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

Сравнительный анализ скорости API брокеров: Alor vs Tinkoff

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

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

Читать далее

Решение головоломки из университетского квеста с помощью Python

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

Треки — одна из интересных головоломок игры Puzzle Hunt Мельбурнского Университета 2008 года. Это задание было частью пятого акта игры, и ему предшествовало небольшое повествование, которое продолжало ее сюжет. В соответствии с ним ночь в стране выдалась неспокойная; и вместо того, чтобы спать, вы провели ее в ужасе наблюдая по телевизору за уличными беспорядками. С наступлением дня ситуация несколько улучшилась, и вы решаете выйти из дома, чтобы подышать свежим воздухом. На улице вы замечаете детей, беззаботно играющих в классики на дороге. Когда вы подходите к ним поближе в надежде на то, что часть их безмятежности передастся и вам, то ваше внимание переключается на очертания классиков, небрежно нарисованных мелом на дороге. Они совершенно не соответствуют ни одним классикам, в которые вам когда-либо доводилось играть...

Ниже можно было видеть эти «классики». 

Читать далее

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

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


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


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



Сегодня мы рассмотрим дерево отрезков, дерево Фенвика, а также граф (направленный и ненаправленный).


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


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

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

Как научить компьютер различать цвета?

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели963

Привет, Хабр!

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

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

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

Изначально были попытки обучить на размеченных данных классические детекторы объектов, например, YOLO. Однако оказалось, что модель сильно усложняет задачу — начинает ориентироваться на расстановку игроков, и из-за этого точность становится невысокой. Поэтому возникла идея попробовать более классические и, соответственно, более простые алгоритмы.

Читать далее

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

Алгоритмические уведомления для рынка акций MOEX в реальном времени

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

Алгоритмические уведомления для рынка акций MOEX в реальном времени

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

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

Читать далее

Как на изи «влететь» на Хак и затащить его на flow-режиме

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели966

Введение и задача

Добрый день, уважаемые читатели Хабр.ру! Я хотел бы поделится с вами отчетом по хакатону (Practice & Scale AI: Рерайтинг текста на уровне, позволяющем проходить фильтрацию распознающих систем), в который мы очень «лихо» влетели со всей командой (Anomaly Detection) и, забегая вперед, скажу, который мы «втащили» на третье место по нашему кейсу. Жаль, правда, что призовое место было одно, но все же это был отличный опыт и по «горячим» следам все сейчас опишу и расскажу, что мы делали и как «пришли» к нашему решению.

Читать далее

Как в Netflix сделали поиск по федеративному графу

Время на прочтение11 мин
Охват и читатели1.5K

За последние несколько лет те, кто занимается в Netflix направлением Content Engineering, перевели множество служб компании на использование федеративной платформы GraphQL. Этот процесс продолжается и сегодня. Применение федерации GraphQL даёт командам, отвечающим за различные предметные области, новые возможности. Теперь они могут, независимо от других команд, создавать и использовать собственные графовые службы, относящихся к сфере их деятельности (Domain Graph Service, DGS). Команды, кроме того, могут связывать свои предметные области с другими областями в унифицированной схеме GraphQL, доступ к которой даёт федеративный шлюз.

Давайте, в качестве примера, рассмотрим три главнейшие сущности этого графа.

Читать далее

Как я ускорила парсинг строк в serde_json на 20%

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

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

serde — основной фреймворк для сериализации и десериализации в Rust. Его используют как крейт по умолчанию во всей экосистеме. serde_json — это официальный serde-миксин для JSON, так что каждый раз, когда нужно что-то парсить, люди обращаются именно к нему. Конечно, есть и другие библиотеки, специализующиеся на парсинге JSON, например simd-json, но популярность у них, мягко говоря, удручающая. serde_json значительно популярнее: на момент написания от него зависят аж целых 26916 крейта, а от simd-json — всего 66.

Это делает serde_json хорошей мишенью (не как у Jia Tan) для оптимизаций. Велик шанс того, что многим из тысяч пользователей переход на simd-json позволил бы добиться ускорения, но, пока они этого не делают, более мелкие оптимизации — лучше, чем совсем ничего, и такие улучшения — глобальный выигрыш для экосистемы.

Читать далее

Бинарный поиск на пальцах

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

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

Читать далее

Решение задачи с собеседования Reverse Linked List [+ ВИДЕО]

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

Всем салют! Давайте решим задачу "Reverse Linked List"

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

Читать далее

strlcpy, или как CPU противоречат здравому смыслу

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

Один из моих старых постов о strlcpy недавно вызвал обсуждения на различных форумах. Вероятно, с этим как-то связан выпуск новой версии POSIX. Многие авторы приводили один контраргумент, который я слышал и раньше:

«В общем случае, когда исходная строка умещается в конечный буфер, strlcpy будет обходить строку только один раз, а strlen + memcpy будут обходить её дважды».

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

Читать далее

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