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

Алгоритмы *

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

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

Молодые математики открывают новую главу в изучении простых чисел

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров41K
Анимация отсева по Эратосфену, где показаны кратные величины каждого простого числа, простирающиеся вдоль числовой оси.

Более 2000 лет назад греческий математик Эратосфен разработал метод поиска простых чисел, получивший название решето Эратосфена, который остаётся актуальным по сей день. Его идея заключалась в том, чтобы определять простые числа вплоть до заданной точки путём постепенного «отсеивания» тех, которые таковыми не являются. Начинается отсев с вычёркивания всех чисел, кратных 2 (кроме самой 2), затем кратных 3 (кроме 3). Следующее число, 4, уже оказывается вычеркнуто, значит, очередным шагом идёт вычёркивание всех чисел, кратных 5 и так далее. Все оставшиеся в итоге числа считаются простыми, то есть такими, которые делятся только на 1 и на самих себя.

Эратосфен работал со всем множеством простых чисел, но вы можете использовать вариации его метода для поиска таких, которые будут обладать особыми свойствами. Хотите найти «близнецов», которые отличаются всего на 2 единицы, например, 11 и 13 или 599 и 601? Для этого есть свой отсев. Интересуют простые числа, которые на 1 больше полного квадрата, например, 17 или 257? И для этого тоже есть свой отсев.
Читать дальше →

Разработка рекомендательных систем: три открытых библиотеки от Сбера

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

Делимся своими открытыми библиотеками для разработки рекомендательных систем. Что? Да! Рассказываем подробнее. Всем известно, что Сбер это уже не просто банк, а огромная технологическая компания, которая включает в себя и сервисы компаний-партнёров: электронную коммерцию, индустрию развлечений и даже медицину. Количество пользователей достигло 108 млн, и для каждого из них мы создаём персональные рекомендации, которые помогают не потеряться в разнообразии предложений и выбрать лучшее.

Читать далее

Квантовые компьютеры. С точки зрения традиционного программиста-математика. Часть 7 — Заключительная

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

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

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

Читать далее

Ещё раз про алгоритм сжатия Хаффмана

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

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

Читать далее

Из фото в 3D, ч.1: геометрия формирования изображения

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

Казалось бы, жизнь невозможно повернуть назад, а предмет из фотографии не восстановишь. Хотя с последним можно поспорить: из плоского 2D-изображения реально восстановить 3D-модель объекта. Подобная «магия» часто практикуется в AR/VR, управлении беспилотниками и других сферах. Для этого первым делом производится калибровка камеры. Чтобы понять процесс калибровки, сперва следует освоить базовые принципы преобразования трехмерных координат точек в двухмерные на плоскости. 

Сегодня мы рассмотрим:

геометрию формирования изображения на сенсоре камеры (pinhole модель);

как рассчитываются координаты точки на сенсоре для точки из реального мира;

как переходить от одной системы координат к другой;

что такое внутренние и внешние параметры камеры и зачем они нужны.

Читать далее

Использование многоуровневых зависимых списков в MS Excel для маппинга организационных структур

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

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

В этой статье мы демонстрируем наш практический опыт маппинга позиций со структурой отделов при помощи инструмента «Проверка вводимых значений» MS Excel.

С уважением,
Владимир

Читать далее

Поможем Ходору найти новых друзей с помощью графов

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

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

На связи участник профессионального сообщества NTA Кухтенко Андрей.

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

Помочь Ходору найти друзей

Считаем медиану быстрее numpy

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

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

Читать далее

Кратчайший путь с одним источником во взвешенных графах, Алгоритм Дейкстры и Python

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

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

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

Читать далее

Поиск пересечений между отрезком и прямой или прямой и прямой в трехмерном пространстве

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

Здравствуйте, дорогие хабровчане, недавно столкнулся с проблемой, связанной с написанием алгоритма из названия в turboprolog2.0, более того я не нашел нигде готовой реализации в трехмерном пространстве на нормальных языках программирования.

Блин классно, хочу ознакомиться

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

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

Привет, Хабр! Меня зовут Владислав Абрамов, я аналитик в команде разработки компании Easy Commerce. Перед нами стояла задача создать алгоритм, который определяет влияние характеристик карточки товара на поисковую позицию в крупнейших российских маркетплейсах. Большинство из них не раскрывают принципы ранжирования — эту проблему нужно было решить с помощью анализа открытых данных. В этой статье расскажу, как мы прошли этот путь и проверили, что решение действительно работает. 

Читать далее

Сравнение алгоритмов балансировки нагрузки: Round Robin vs. Least Connections vs. IP Hash

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

Привет, уважаемые читатели Хабра!

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

В этой статье мы проведем сравнительный анализ трех известных алгоритмов балансировки нагрузки: Round Robin, Least Connections и IP Hash. Мы рассмотрим их преимущества и недостатки, а также сценарии использования, в которых каждый из них сияет особенным образом.

Читать далее

Разбор задач Школы программистов 2023

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

Школа программистов hh.ru 2023 успешно стартовала, а значит пришло время традиционно показать вам задачки со вступительных испытаний. В этой статье мы разберемся, как устроен отборочный тур изнутри и разберем решения задач этого года. Мы так уже делали: последние материалы с разборами можно посмотреть здесь и здесь. Поехали!

Читать далее

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

CRC — это просто (деление столбиком)

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

Целостность можно достичь различными способами. Например, чек-суммами. Вот как раз была такая задача - обеспечить целостность с помощью чек-сумм.

На ум сразу пришел CRC. Ну тут просто - взял скопировал готовый код, бери не хочу, реализаций на разных языках куча.

Но это простой путь слишком просто - так не интересно (да и лишних часов на таску надо тоже поставить). Поэтому решил усложнить себе жизнь разобраться в работе CRC!

Читать далее

Реализация консенсусного алгоритма Raft

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

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

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

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

К примеру, у вас есть распределенный кластер серверов, которые отвечают за хранение критически важных данных. Если один из серверов хранит информацию о балансе банковского счета пользователя и другой сервер отвечает за транзакции, нам нужно обеспечить согласованность данных между ними. Консенсусный алгоритм помогает решить вопросы вроде "Что произойдет, если сервер с балансом откажет?"

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

Читать далее

Инженерный калькулятор на C++. Часть 1: Токенизатор математических выражений

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

Всем привет! Сегодня хочу поделиться опытом написания консольного инженерного калькулятора, который может посчитать выражение вроде (log2(18)/3.14)*sqrt(0.1*10^(-3)/0.02)

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

Читать далее

Процедурная генерация укрытий в играх

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

В игровых мирах сражения, взаимодействия НПС и стратегические маневры приводят к необходимости поиска точек защиты или точек укрытия (cover). В этой статье я рассмотрю один из аспектов игровой механики – создание такой системы на основе анализа окружения, которая позволяет игрокам и AI эффективно и эффектно использовать геометрию в разных игровых сценариях, и делают игровой опыт более динамичным. Посмотрим на особенности, которые влияют на алгоритм генерации и реализацию в движке 4A Engine.

Читать далее

9 алгоритмов сортировки и поиска для JS, о которых вас спросят на собеседовании

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

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

Меня зовут Илья, я frontend-разработчик SimbirSoft. Долгое время вопрос изучения алгоритмов был холиварным. Со я временем убедился, что ни одно современное собеседование в крупную компанию не обходится без вопросов про алгоритмы, и в последний год их всё больше.

Даже если ты frontend-разработчик и решаешь прикладные задачи, тебе в любом случае придётся знать алгоритмы хотя бы на базовом уровне. Но статей на русском с объяснением алгоритмов и тем, как их реализовать на JavaScript, крайне мало. Поэтому хочу поделиться некоторыми алгоритмами сортировки и поиска, и немного рассказать про структуры данных. Знание алгоритмов и структур данных поможет вам в оптимизации приложений.

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

Читать далее

Как применять метод PCA для уменьшения размерности данных

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

Одной из ключевых задач при работе с данными является уменьшение размерности данных, чтобы улучшить их интерпретируемость, ускорить алгоритмы обучения машин и, в конечном итоге, повысить качество решений. Сегодня мы поговорим о методе, который считается одним из наиболее мощных инструментов в арсенале данных разработчиков — методе главных компонент, или PCA (Principal Component Analysis).

Читать далее

Как устроен PassMark. Воспроизводим тесты из машинного кода

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

На сегодняшний день существуют сотни программ для оценки производительности вычислительных устройств, но абсолютным лидером среди них несомненно является PassMark - "Industry standard benchmarking since 1998", - как его позиционирует сам разработчик, и вдобавок предоставляющего обширную публичную базу оценок производительности разнообразных устройств по всему миру для возможности их сравнения между собой. Все это делает PassMark выбором №1 для всех, кто не только желает оценить производительность своего устройства, но и сравнить его с любым другим устройством в мире.

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

Читать далее

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