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

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

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

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

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

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

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

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

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

Карта видимости - это достаточно простой механизм в СУБД PostgreSQL, но даже он имеет множество интересных тайн, если погрузиться в детали реализации.
В этой статье мы выясним:
1. Какие особенности есть у механизма сбрасывания и установки бита полной видимости.
2. Как Index only scan использует бит полной видимости.
3. Зачем записывать информацию об изменении карты видимости в WAL.
4. Каким образом карта видимости участвует в оптимизации предвыборки Bitmap scan.
5. Зачем механизму оценки селективности нужна карта видимости.

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

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

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

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

Начну с громкого заявления: я придумал способ найти точку пересечения двух отрезков, заданных координатами концов. Придумал давно, лет 7 назад, в 2017 году, примерно, да, путь к этой публикации был долог, в основном из-за лени.
И да, я его придумал потому что не смог нагуглить, может он где-то и без меня описан был, может за эти 7 лет кто-то написал что-то похожее, а может я придумал какую-то фигню, которую умные люди изобретать не станут...

Привет, друзья!
В этой серии статей мы разбираем структуры данных и алгоритмы, представленные в этом замечательном репозитории. Это пятая часть серии.
Сегодня мы рассмотрим систему непересекающихся множеств, фильтр Блума и кэш актуальных данных.
Код, представленный в этой и других статьях серии, можно найти в этом репозитории.
Интересно? Тогда прошу под кат.

В 1970-х годах известный программист Эдгар Кодд разработал математически выверенную теорию организации данных в виде таблиц (реляций). С тех пор утекло немало воды — появилось большое количество различных коммерческих и open-source реляционных систем управления базами данных (РСУБД). Скоро стало понятно, что эффективное получение данных из базы — задача далеко не тривиальная. Если говорить прямо, она нелинейная и в общем случае NP-сложная.
Когда SQL-запрос становится немного сложнее: SELECT * FROM table, у нас появляется огромная вариативность его исполнения внутри системы — и не всегда понятно, какой из возможных вариантов эффективнее как по памяти, так и по скорости. Чтобы сократить огромное количество вариантов до приемлемого, обычно используются так называемые эвристики — эмпирические правила, которые придуманы человеком для сокращения пространства поиска на несколько порядков. Понятное дело, эти правила могут отсечь и сам оптимальный план выполнения запроса, но позволяют получить хоть что-то приемлемое за адекватное время.
В последние годы в связи с активным развитием ML начали развиваться и нейронные оптимизаторы запросов —особенность которых в том, что они самостоятельно, без участия человека, находят необходимые закономерности в выполнении сложных планов исходя из обучения на огромном количестве данных. Тенденция началась приблизительно в 2017 году и продолжается до сих пор. Давайте посмотрим, что уже появилось в этой области в хронологическом порядке и какие перспективы нас ждут.

Перед тем, как смотреть решение обязательно попробуйте одолеть самостоятельно!
Автор решений: телеграм канал "Поступашки — ШАД, Стажировки и Магистратура".
Задача 1 (Линейность)
Рассмотрим линейное пространство многочленов степени не выше 3 над полем На нём задано отображение
где - многочлен наивысшей степени, являющийся одновременно делителем и
, и
, у которого старший коэффициент совпадает со старшим коэффициентом
. Дополнительно доопределим
.
Пример:
Является ли данное отображение линейным?

Судя по откликам, рассказы как я не стал миллионером или как мне не удалось спасить американскую АЭС, пользуются большим спросом на хабре. Поэтому продолжу публикацию кейсов из жизни быдлокодера и дам несколько бизнес-советов тем, кто собирается заработать миллионы продавая софт. Требую лайков, подписки и донатов, как настоящий инфоцыганбизнесмен.
Эта история произошла после того, как я вернулся из США в 2008 году, где благополучно потратил все свои деньги, полученные от разграбления советских заводов бандой прихатизаторов, во главе с Кахой Бендукидзе. В США я пытался запустить свой стартап, но не преуспел, но это история для мамкиных стартаперов с сайта VC. Здесь же расскажу, что было потом, поскольку это касается разработки и продвижения ПО. И бесплатно дам несколько бизнес-советов, которые за большие деньги можно получить только на курсах Тони Робинсона.
В России, как и во всем мире, в это время, кроме кризиса 2008 года, разворачивалась менее заметная, но не менее эпическая и трогательная история освобождения евреев от пленения фараоном. Для тех, кто не читал библию, напомню, что Моисей своих евреев, отпущенных из египетского плена, водил 40 лет по пустыне, (навигаторов и Яндекс-карт тогда не было, и назад никто свалить не мог). Ведомые плевались, плакали, матюкались, ругались, но шли по пустыне за Моисеем. Тот же самый библейский сюжет разворачивался в области разработки софта, cо специалистами из французской фирмы-разработчика, той-которую-нельзя-называть, и которая проектирует боевые самолеты Рафал. В недрах этой конторы была разработана система 3D-проектирования CATIA.

В детстве меня всегда завараживали игры с динамическим ландшафтом: The Castle и Worms Armageddon. В то время я не понимал, как реализована эта удивительная механика разрушения и изменения мира. Позже я узнал, что секрет заключался в использовании растровой графики, но интерес к теме не исчез. В этой статье я хочу рассказать о векторном решении аналогичной задачи.
Наше сообщество в телеграм "Поступашки — ШАД, Стажировки и Магистратуры" в частности специализируется на подготовке к стажировкам. В этой статье наши выпускники трех самых популярных направлений расскажут, как они проходили отбор. Далее представлен слегка отредактированный текст наших выпускников.
Аналитика
Сначала ждал контест. Мне и моему другу хватило всего 3 из 6 задач, чтобы позвали дальше на собеседования.
Аналитическая секция проходила так. Была одна алгоритмическая задача: есть массив целых чисел отсортированный, надо у всех отрицательных чисел знак поменять и снова отсортировать. Потом была стандартная задача на формулу Байеса: вычислить вероятность болезни, если тест показал положительный результат. В конце был бизнес кейс в духе как оценивать качество работы службы поддержки Яндекс такси. Поговорили про метрики, пользователей и тд. Прошел без каких-либо трудностей и напрягов. На все ушел час.
Алгоритмическая секция проходила так. Всего было две задачи. Первая задача: есть строка из Х, У, О наподобие "O,O,O,O,X,X,OY,O,O,X" найти минимальное расстояние между Х и У.
Вторая задача: есть массив целых чисел надо вывести границы отрезка с заданной суммой чисел, или если такого отрезка нет, то вывести (-1,-1). Опять же прошел собес без каких-либо трудностей. На все ушел час.
Интервью с командами прошли так. На финалах в основном были беседы за жизнь и спрашивали всякую фигню типо бизнес кейсов.
На первом финале были разговоры за жизнь и кейс: придумать метрики оценки системы рекомендаций фильмов на умных телевизорах.
На другом финале дали простейшую задачу на sql, которую я даже не запомнил, ибо на столько элементарная она была. Еще был бизнес кейс по оценке работы пуш уведомлений Яндекс лавки.
Но прям норм задачи были на финале в команде, которую я по итогу и выбрал. Было несколько задач по теор веру типо рассчитать оптимальный размер гардеробов в театре с двумя входами, если известно что приходят 400 человек (мы даже такую задачу решали на семинарах). Потом спросили: у тебя десять А/Б экспериментов проводится (цвета кнопки тестируются, ну 10 разных цветов ) и один из тестов показал значимый результат (ошибка первого рода 0.1) , так вот приходит дизайнерша и говорит что её цвет кнопки показал значимый результат, что ей стоит ответить. Более типичный вопрос про множественное тестирование, я немного потупил, но решил. Ещё две задачи чисто были на теор вер, но там длинные условия и я их не понял и особо не запомнил.
В статье рассмотрены примеры использования длинных (sapscript) текстов для построения шаблонов с использованием вложенности шаблонов, переменных и условных конструкций. Статья будет полезна для разработок рассылок на основе SAP NetWeaver, формирование печатных форм, рекомендательной/пояснительной документации.