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

Алгоритмы *

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

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

Алгоритмы, базы и порядок: практическая подборка книг для разработчиков

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

Алгоритмы, базы данных и качество данных — три темы, без которых сегодня не обходится ни один проект. От того, как разработчик обращается с ними, зависит не только скорость работы приложений, но и то, насколько вообще можно доверять системе. Если алгоритм выбран неправильно — система будет тормозить; если база построена на «костылях» — она станет источником ошибок; если данные не проверять на качество — отчеты превратятся в хаос.

Чтобы помочь разобраться в этом, команда Read IT Club собрала подборку из трех книг, которые проверили рецензенты клуба — эксперты из ведущих технологических компаний. В них нет академической скуки, зато есть практические советы: как выбрать правильный алгоритм, не угробить архитектуру базы и научиться бороться с «грязными» данными. Каждая из них решает свою часть головоломки, но вместе они дают цельную картину того, как работать с данными и кодом надежно, эффективно и без лишних драм.

Читать далее

Новости

Как JPEG стал стандартом изображений в интернете

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

JPEG — формат-динозавр. Ему уже за тридцать, но он по-прежнему живее всех живых: даже в 2025 году изображения в JPEG встречаются повсюду.

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

Почему именно этот подход победил конкурентов, кто его протолкнул и как JPEG стал «языком» интернета для изображений — обо всём этом дальше.

Читать далее

Музыка и математика: как аккорды вдохновляют архитектуру алгоритмов

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

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

Читать далее

ИИ-поиск в 2ГИС: как учим нейросети понимать настроение, фото и смыслы

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

Поиск — одна из ключевых функций в 2ГИС. Он помогает миллионам пользователей каждый день находить нужные места в городе. Долгое время мы опирались на классические методы: морфологию, справочник организаций, геопозицию и популярность объектов. Это позволяло покрывать множество сценариев, но со временем стало понятно — этого недостаточно.

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

1. как понять атмосферу заведения и добавили новый атрибут «вайб-фильтры»;

2. как находить похожие места по изображениям и сделали поиск по фото.

3. как дать пользователю возможность искать «по смыслу» и реализовали ИИ-поиск. 

Читать далее

Как киберэкономика и ИИ меняют философию науки? Поппер, Кун, Фейерабенд и Лакатош в условиях цифровых технологий

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

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

Читать далее

Краткая история комплексных чисел

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

Вам это может показаться странным, но были времена, когда отрицательные числа казались людям чем-то неестественным, причём даже тем людям, которые зарабатывали себе на жизнь числами — математикам. Как можно считать числом то, что не имеет физического воплощения? С отрицательными числами в итоге смирились, но уж что точно невозможно было терпеть, так это совсем непонятную величинуi, квадрат которой-1, это уже противоречит всякому здравому смыслу. Тем не менее время показало, что законы физики и математики, сформулированные с использованиемi имеют больший смысл, чем законы, сформулированные без неё. Еще в 19 веке Карл Фридрих Гаусс отметил, что "Если бы вместо того, чтобы называть +1, −1,\sqrt{−1}​ положительной, отрицательной или мнимой (или даже невозможной) единицей, их назвали бы, скажем, прямой, обратной или боковой единицей, то едва ли можно было бы говорить о какой-либо темноте".

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

Читать далее

Как работать с нейросетями эффективно: теория и практика

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

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

Читать далее

Планы CS Space на осенний семестр

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

Как обещали в первом посте, возвращаемся с подробным анонсом осенних курсов. В этом семестре мы организуем большие и малые курсы, охватывающие несколько тем в компьютерных науках, искусственном интеллекте и математике.

Читать далее

Анализ гипотез и очень, ооооооочень странные дела

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

Лет 5 назад я усиленно пытался вникнуть в тервер и статы: книги, статьи, вебсёрфинг. Даже написал несколько статей: раз, два, три. Вообще, в планах было написать довольно большой цикл статей, что бы подсветить какие-то самые сложные вещи, да и самому в них разобраться - совместить полезное с полезным, так сказать. Однако, в какой-то момент я решил, что полученных знаний достаточно для новых проектов и ушел в работу. Работал. Работал. Работал.

Читать далее

Алгоритм поиска аномалий Isolation Forest

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

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

Меня зовут Михаил Васильев, я старший специалист по машинному обучению в компании Makves (входит в группу компаний «Гарда»). Эта статья — вторая в цикле, посвященном поиску аномалий. В первой статье мы поговорили о том, что такое аномалии и почему их сложно искать, а также по шагам разобрали алгоритмы HBOS и ECOD.

Сегодня мы разберем еще один интересный алгоритм: Isolation Forest, а также немного углубимся в проблематику задачи.

Читать далее

Квантование в картинках: раскрываем тайны сжатия LLM

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

Большие языковые модели (LLM, Large Language Model), как подсказывает их название, часто отличаются значительными размерами и слишком велики для того, чтобы нормально работать на обычных компьютерах. Масштабы этих моделей могут измеряться миллиардами параметров. Обычно для обеспечений достойной скорости их работы необходимы GPU с серьёзными объёмами видеопамяти (VRAM).

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

Читать далее

Обрабатываем строки в 109 раз быстрее, чем NVIDIA на H100

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

Недавно я выпустил StringZilla v4 — первый релиз с поддержкой CUDA моей библиотеки для обработки строк. нацеленной в первую очередь на SIMD. Это означает, что теперь она стала быстрой не только на CPU, но и на GPU!

• Я хотел добавить ускорение ROCm для GPU AMD
• Я хотел добавить параллельный мультипаттерновый алгоритм поиска
• Я хотел опубликовать всё это ещё в декабре 2024 года

Итак, не всё пошло по плану, но StringZilla 4 CUDA наконец-то здесь, и она добавляет 500 с лишним GigaCUPS вычислений редакторского расстояния; при этом пакет можно установить через pip install. Также в ней есть некоторые другие трюки, предназначенные для крупномасштабных систем извлечения данных, баз данных и озёр данных, а также биоинформационных задач. И всё это под разрешительной опенсорсной лицензией Apache 2.0, позволяющей свободно использовать библиотеку в коммерческих целях. В этом посте я рассмотрю самые интересные части релиза, и в том числе:

• Быструю оценку алгоритмов динамического программирования на GPU,
• Хэширование CRC32MurMurHashxxHash, aHash и не только, а также
• Фингерпринтинг биологических последовательностей 52-битными целыми числами

Читать далее

Перцептрон SAAR (само-рекурсивный ассоциативно адаптивный резервуар)

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

Аннотация. В работе предлагается новая архитектура искусственного перцептрона — SAAR-Perceptron (Self-Recursive Associative Adaptive Reservoir Perceptron), развивающая классическую модель Розенблатта (S–A–R). Ключевая особенность архитектуры заключается во введении ассоциативного слоя с саморекурсивным отображением (A→A), формирующего динамический граф признаков. В отличие от традиционных рекуррентных моделей, эти связи не обучаются, что обеспечивает устойчивую динамику и выполняет роль адаптивного резервуара, расширяющего пространство признаков.

Ассоциативный слой использует пороговую активацию, эквивалентную ReLU, что позволяет выделять только положительные реакции. Однако обучение осуществляется не на «сырые» выходы, а на их нормализованные значения, что адаптирует величину корректировки весов к относительной значимости каждого признака. Такой механизм предотвращает доминирование отдельных элементов и обеспечивает сбалансированное обучение.

Процесс обучения в перцептроне SAAR реализован без использования градиентных методов. Для связей S→A применяется стохастическое правило коррекции, расширяющее принцип Розенблатта: активные элементы подавляются, если их активация увеличивает ошибку, и возбуждаются, если их возбуждение потенциально уменьшило бы ошибку. Важную роль играет энтропийный критерий обновления весов: вероятность коррекции пропорциональна бинарной кросс-энтропии активаций, что позволяет выделять наиболее информативные признаки. Такой подход напоминает механизм отбора в генетических алгоритмах, где «побеждает» наиболее информативный элемент. Для связей A→R используется простое локальное корректирующее правило, а вклад ассоциативных элементов оценивается через информационный выигрыш; нерелевантные элементы исключаются из работы.

Читать далее

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

Прокачиваем RAG: тестируем техники и считаем их эффективность. Часть 2

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

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

В этой статье мы посмотрим на результаты экспериментов: какие техники оказались наиболее эффективными на датасете Natural Questions, где они приятно удивили, а где — наоборот, не оправдали ожиданий. Для оценки будем использовать фреймворк RAGAS, а также метрики BertScore и ROUGE-2 для анализа релевантности извлечённых чанков и финальных ответов.

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

Читать далее

Проблема, о которой вы наверняка не задумывались: print(.1+.2)

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

Как следует отображать на экране результат деления 3.0 на 10.0 ? Сколько цифр следует вывести, если пользователь не указал точность?

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

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

Это вторая статья из цикла «Санпросвет о плавающей точке»:

1. Компьютеры и числа

2. Вывод чисел с плавающей точкой на экран <- вы тут

Читать далее

29 февраля и другие причуды календаря

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

Считается, что в легендарную эпоху, до того как они образовали свою республику, римляне использовали десятимесячный календарь. Первый месяц назывался месяцем Марса, Mensis Martius, на английском языке известный как март; последний был месяцем № 10, Mensis December. Однако после декабря год ещё не заканчивался: прошло всего 304 дня. Остальные 61 или 62 дня солнечного года проходили в период без месяцев, в промежутке неизмеренного времени, возможно, менее значимом, поскольку это была зима и сельское хозяйство находилось в состоянии покоя.

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

Читать далее

Мой опыт с codewars спустя 3.5 года

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

Привет, Хабр! Сразу хочу сказать, что в первую очередь задачи я решал для себя. Хочу поделиться моим опытом взаимодействия с этой платформой и насколько мне это помогло. Каждый по прочтению этой статьи решит для себя сам, стоит начинать или же нет. А началось мое знакомство в далеком январе 2022 года. За все время я решил почти 200-ти задач и имею 4kyu. Мне кажется главное, что стоит понять, что сайт делится на две категории — базовый и продвинутый. Большинство задач на 6, 7, 8 kyu — базовые. Всё, что меньше — продвинутый.

Читать далее

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

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

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

Меня зовут Алексей Гуляев. Я архитектор решений в команде VK Tech. В этой статье я расскажу об онтологии в ИТ, вариантах ее использования и нашем кейсе применения онтологического подхода для решения внутренней задачи.

Читать далее

Санпросвет о плавающей точке, статья первая: компьютеры и числа

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

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

Оказалось, что форумы кишат людьми, которые не до конца понимают, как компьютеры манипулируют числами. Например, мемасик с КПДВ я стянул с реддита (перечеркнул его я). Кто-то настолько был напуган страшными ошибками округления чисел с плавающей точкой, что даже смешную картинку смастерил. Только вот проблема в том, что 0.5 + 0.5 в точности равно 1.0.

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

Итак, этим полукреслом мастер Гамбс начинает новую партию мебели, или статья первая: поговорим о числах и компьютерах.

Читать далее

Как дорожные знаки попадают на карты Яндекса: применяем ML в картографии

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

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

Меня зовут Владимир Быстрицкий, я руковожу группой AI-картографирования. В этой статье расскажу о процессе детектирования дорожных знаков в картопроизводстве Яндекса: с чего всё началось, как развивалось, какие технологии использовались. Ну и попробую ответить на самый, на мой взгляд, главный вопрос в любой ML-задаче: как собрать датасет и не разориться?

Читать далее
1
23 ...

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