Обновить
273.16

Алгоритмы *

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

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

Зачем программисту алгоритмы?

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

Зачем программисту алгоритмы?

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

Однако сами программисты нередко удивляются, зачем всё это? Действительно, работа наших коллег часто заключается в поиске и устранении ошибок в залежах legacy кода. Какие уж там алгоритмы? Даже те, кому посчастливилось участвовать в новом проекте знают, что зачастую новый проект состоит на 80% из чужого, уже кем-то написанного и найденного на просторах гитхаба кода, а новый код - это, по сути, клей и обёртки, которые позволяют склеить эти уже готовые запчасти между собой, чтобы получить заданный продукт.

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

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

Попробуем разобраться

React Reconciliation: скрытый механизм, управляющий компонентами

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



❯ Механизм согласования


В моих предыдущих статьях (1, 2) я подробно рассматривал, как работает React.memo, а также делился более эффективными подходами к оптимизации производительности с помощью компоновки. Однако для глубокого понимания работы React необходимо разобраться в основном механизме, лежащем в основе всех этих оптимизаций – алгоритме согласования (reconciliation).


Согласование – это процесс, в результате которого React приводит DOM в соответствие с деревом компонентов. Именно этот механизм позволяет реализовать декларативный подход к программированию на React: вы формулируете свои намерения, а React самостоятельно определяет, как выполнить эти намерения наилучшим образом и с наименьшими затратами.

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

Как подготовиться к алгоритмическому собеседованию в Яндекс

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

В конце января мне написал рекрутер из Яндекса с предложением пройти алгоритмическое собеседование. На тот момент у меня было решено всего 55 задач на LeetCode, из которых 50 — по SQL. Знания в области алгоритмов были практически на нуле.

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

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

Читать далее

Cтатья про собеседования в Яшу (Yandex Weekend Offer)

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

Может кому-то это будет интересно, даст возможность лучше подготовиться; или наоборот кто-то примет решение не участвовать.

Коротко о себе: 41 год, senior software developer, стаж > 20 лет. Однако, как я понял, эти собесы все равно для всех одинаковые, так чтоб все написанное актуально и для молодежи.

Итак, угораздило меня согласиться на т. н. «Weekend Offer на позицию разработчика на Kotlin». Вообще‑то мне больше нравится Scala, и опыта по ней гораздо больше, но рекрутерша была сильно настойчива, и я решил обновить экспиренс, а возможно, и прибавку в деньгах. И вот что было дальше.

Читать далее

AI 2027 — шпионский боевик о будущем ИИ. Часть 2

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

Как и обещали, публикуем вторую часть перевода статьи — и она ещё более драматичная и насыщенная событиями.

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

Читать далее

Цветовая вычислительная фотография. Часть 1: Теория цвета

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

Приветствую! Меня зовут Егор Ершов, я руковожу группой «Цветовая вычислительная фотография» в AIRI, а также заведую сектором репродукции и синтеза цвета ИППИ РАН. Область моих научных интересов касается способов регистрации и обработки изображений, что в той или иной степени касается любого человека, кто хоть раз пользовался камерой, монитором или проектором.

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

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

Читать далее

Оповещение о РО через колонки Яндекса (Ну или в целом получение сигналов в УДЯ)

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

Система и алгоритм оповещения о ракетной опасности с использованием Яндекс Станций. Пользователь вручную создает сценарии для устройств «Умного дома Яндекса» с использованием «Лампочки», которая включается при сигнале о РО и выключается при сигнале ОТБОЙ.

Стэк: Python, telethon, aiogram 3.x, mqtt, postgresql.

Читать далее

Обзор CUDA: сюрпризы с производительностью

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

Наверное, я очень опоздал с изучением CUDA. До недавнего времени даже не знал, что CUDA — это просто C++ с небольшими добавками. Если бы я знал, что изучение её пойдёт как по маслу, я бы столько не медлил. Но, если у вас есть багаж привычек C++, то код на CUDA у вас будет получаться низкокачественным. Поэтому расскажу вам о некоторых уроках, изученных на практике — возможно, мой опыт поможет вам ускорить код.

Читать далее

Оптимизация Go map{-}{-}

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

Хеш-таблица(мапа) — одна из самых популярных структур данных, потому что поиск по ключу происходит за O(1). Причем ключ может быть любым любым типом, элементы которого можно сравнивать (Comparable Trait).

Я столкнулся с тем, что мапа не такая быстрая по бенчмаркам на языке GO, хотя теоретическая сложность алгоритма О(1).

Давайте рассмотрим следующую задачу и способы ее решения.

Читать далее

Когда ты больше не просто пишешь код. Ты управляешь энергией

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

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

Когда-то я писал веб-приложения. Решал задачи бизнеса, деплой в прод, REST, тесты, метрики, кубики. Всё было нормально. Но в какой-то момент мне стало… скучно.

Да, задачи были интересными. Команда — отличной. Но где-то внутри появилась пустота. Хотелось делать что-то настоящее. Осязаемое. Что-то, где за твоим кодом — больше, чем UI и API. Хотелось влиять на реальный мир.

Так я попал в мир электропривода.

Читать далее

NDT-based localization

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

Локализация с помощью NDT

Посвящается всем тем, кто хочет узнать, как работает алгоритм, не читая диссер на английском на 200 страниц [1].

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

Начать погружение

Префиксные суммы. Решение задачи из тренировок Яндекса по алгоритмам

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

Расскажу о том, как решал одну из наиболее интересных задач в разминке Яндекс Алгоритмы 2023 г. Интересной я называю ее потому, что: 1) решал я кратно дольше, чем предыдущие 6 задач из разминки вместе взятые; 2) именно в этой задаче я проникся мощью префиксных сумм, и применением их для двумерных массивов.

И так задача:

Кролики очень любопытны. Они любят изучать геометрию, бегая по грядкам. Наш кролик как раз такой. Сегодня он решил изучить новую фигуру — квадрат.

Кролик бегает по грядке — клеточному полю N × M клеток. В некоторых из них посеяны морковки, в некоторых нет.

Помогите кролику найти сторону квадрата наибольшей площади, заполненного морковками полностью.

Формат ввода

В первой строке даны два натуральных числа N и M ( 1 N, M 1000). Далее в N строках расположено по M чисел, разделенных пробелами (число равно 0, если в клетке нет морковки или 1, если есть).

Формат вывода

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

Читать далее

Дизеринг в графике и вычислениях: математическая элегантность сеток с низким расхождением

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

На хабре уже пару раз упоминался дизеринг, но в довольно узком ключе. Здесь, я хоть и буду делать упор на применение дизеринга в графике, я хочу продемонстрировать его недооценённость, из-за чего его снова и снова переизобретают.

Читать далее

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

AI 2027 — шпионский боевик о будущем ИИ. Часть 1

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

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

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

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

Читать далее

SQL HowTo: простой финал с агрегатами (Advent of Code 2024, Day 25: Code Chronicle)

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

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

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

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

Читать далее

Сервис поиска за три недели: как сделать и не пожалеть через год

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

Как запустить поисковый сервис, если у тебя всего три недели, а данные нужно агрегировать с десятков источников, каждый из которых работает по своим правилам? Как обойти жёсткие лимиты партнёров, которые ограничивают запросы в 500 RPM и p99 до 5 секунд, когда для быстрой загрузки первых результатов нужно минимум 1000 RPM? Как справиться с геопоиском, когда традиционные решения вроде Elasticsearch не подходят?

В 2022 году 2ГИС запустил сервис бронирования Отелло, и перед нами стояла амбициозная цель — не просто создать поиск, а сделать его быстрым, надёжным и масштабируемым, чтобы успеть занять место на рынке. Спойлер: мы справились. В этой статье расскажем, как именно.

Материал будет полезен бэкенд-разработчикам и продакт-менеджерам, которые сталкиваются с задачами интеграции сложных данных, высокой нагрузки и оптимизации поисковых алгоритмов. А если тебе понравится наш проект, рассмотри нашу вакансию — мы в поисках Senior Golang Engineer

Читать далее

Создание искусственных сомнений значительно повышает точность математических вычислений ИИ

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

Языковые модели лучше справляются с математикой при использовании "верифицируемой траектории рассуждений"

(обзор модели rStar-Math)

Что делает ИИ-систему хорошей в математике? Не сырая вычислительная мощность, а нечто почти противоречивое: невротичная тщательность в проверке своей правоты.

Когда исследователи ИИ говорят о математических рассуждениях, они обычно сосредотачиваются на масштабировании — более крупных моделях, большем количестве параметров, объёмных датасетах. Но на практике математические способности не зависят от объема вычислительных ресурсов вашей модели. Всё дело в том, могут ли машины научиться проверять собственную работу, поскольку не менее 90% ошибок в рассуждениях возникают из-за того, что модели уверенно утверждают неверные промежуточные шаги.

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

Читать далее

Исследуем игру «5 букв» от Т-Банка и разные алгоритмы решения

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

Многие знакомы с играми "Wordle" или с российским аналогом "5 букв" от Т-Банка, суть которых в том, чтобы отгадывать пятибуквенные слова. Словарного запаса среднестатистического человека вполне хватает для успешного прохождения этих игр, но иногда человеку тяжело подобрать загаданное слово, хотя он точно его знает.

Кажется, что компьютер справлялся бы с этой игрой очень хорошо, но насколько именно хорошо?

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

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

Читать далее

Видение концепции Цифровой Двойник в терминах «Индустрии 5.0». Агентный планировщик и симулятор

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

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

Читать далее

Дело о несрабатывающем тайм-ауте. Проблемы гистограмм Prometheus

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

Привет! Меня зовут Олег Стрекаловский, я старший разработчик в команде корзины маркетплейса. Сервис корзины Ozon отвечает за хранение корзин покупателей и за отрисовку соответствующего экрана в приложении и на сайте. Слежение за стабильностью сервиса — важная задача. В этой статье я расскажу о нюансах интерпретации данных, которые предоставляет система мониторинга Prometheus. Если вы тоже часто всматриваетесь в графики, чтобы понять, как чувствует себя сервис, эта статья для вас.

Читать далее

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