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

Алгоритмы *

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

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

Вычисляем ближайшие объекты по координатам

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

Я разрабатывал один проект по недвижимости и появилась задача показывать объекты расположенные в радиусе 20 км с просматриваемым. Т.е. у нас есть объект, в нашем случае это поселок, и нужно отображать находящиеся рядом поселки из нашей базы данных в радиусе 20 км, при этом имея только координаты их расположения.

Читать далее

Реализация алгоритма Минимакс на примере игры «Крестики-Нолики»

Время на прочтение7 мин
Количество просмотров39K
Недавно я написал непобедимую игру «Крестики-Нолики». Это был интересный и поучительный проект, который многому меня научил. Если у вас есть желание посмотреть результат — это можно сделать здесь.

image

Для того чтобы сделать игру непобедимой, было необходимо создать алгоритм, который может рассчитать все возможные ходы для «компьютерного» игрока. Далее, нужно использовать некоторую метрику, чтобы определить, какой ход является предпочтительным. После долгих исследований стало понятно, что алгоритм Минимакс, был тем, что мне нужно.

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

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

Комплексные числа и геометрические узоры

Время на прочтение6 мин
Количество просмотров31K
Когда речь заходит о комплексных числах, в первую очередь вспоминают о преобразовании Фурье и прочих аспектах цифровой обработки сигналов. Однако у них есть и более наглядная интерпретация, геометрическая — как точки на плоскости, координатам которой соответствуют действительная и мнимая часть комплексного числа. Рассматривая некоторую кривую как совокупность таких точек, можно описать её как комплексную функцию действительной переменной.

Дальше больше картинок и анимаций

Алгоритм Форда-Фалкерсона

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

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

Читать далее

Алгебраическая конкатенация и её возможности по переводу чисел между системами счисления

Время на прочтение4 мин
Количество просмотров8.5K
Во вчерашней статье про «задачу Танежи или проблемы числа 10958», я попытался представить конкатенацию чисел как алгебраическую операцию. И пока делал расчеты, понял, что мы можем переводить числа меду система счисления только на основе их умножения.

$2ACE_{16} = 10958_{10} = 25316_8 = 10101011001110_2$


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

Погрузиться в поиск музыкальной информации [MIR] — книги, которые помогут сделать это

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

Специалисты, занимающиеся поиском музыкальной информации [music information retrieval, MIR], разрабатывают алгоритмы машинного обучения для выявления паттернов и зависимостей в композициях. Лучшие практики этого направления сегодня используют стриминговые платформы для классификации музыки — например, распознают плагиат. Однако MIR — достаточно новое направление, и оно лишь начинает закрепляться в виде полноценной научной дисциплины.

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

Читать далее

Извлечение троих: Как найти пасхалки в книгах Стивена Кинга с помощью NLP алгоритмов

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

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

Читать далее

Задача Танежи или проблема числа 10958…

Время на прочтение7 мин
Количество просмотров39K
В работе Индера Танежа (Inder J. Taneja) (бразильского математика-популяризатора математики) от 2014 года: Crazy Sequential Representation: Numbers from 0 to 11111 in terms of Increasing and Decreasing Orders of 1 to 9 (Сумасшедшее последовательное представление: числа от 0 до 11111 в порядке возрастания и убывания от 1 до 9).
Был один пробел, а именно число 10958, который немного всколыхнул научное сообщество, и самое главное до сих пор не заполнен. Вот про него мы и поговорим.


Измерение интенсивности трафика при помощи u-моделей

Время на прочтение22 мин
Количество просмотров2.8K
stream rate art
Измерение интенсивности потоков в представлении художника.

В одной из наших предыдущих публикаций мы рассказывали о способе измерения интенсивности потока событий при помощи счетчика на основе экспоненциального распада. Оказывается, идея такого счетчика имеет интересное обобщение, о котором в этой публикации расскажут сотрудники компании Qrator Labs Артем Шворин и Дмитрий Камальдинов.
Читать дальше →

Двойственная задача линейного программирования

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

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

Читать далее

Cимплексный метод решения ЗЛП. Пример

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

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

Читать далее

Data Phoenix Digest — 01.07.2021

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

Приветствую всех!

Встречайте свежий выпуск дайджеста полезных материалов из мира Data Science & Machine Learning и не забывайте подписываться на наш Telegram-канал.

Читать далее

Timsort — самый быстрый алгоритм сортировки, о котором вы никогда не слышали

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

Timsort: Очень быстрый, O(n log n), стабильный алгоритм сортировки, созданный для реального мира, а не для академических целей.

Timsort — это алгоритм сортировки, который эффективен для реальных данных, а не создан в академической лаборатории. Tim Peters создал Timsort для Python в 2001 году. 

Timsort сначала анализирует список, который он пытается отсортировать, и на его основе выбирает наилучший подход. С момента его появления он используется в качестве алгоритма сортировки по умолчанию в Python, Java, платформе Android и GNU Octave.

Нотация Big O для Timsort — это O(n log n). Чтобы узнать о нотации Big O, прочтите это.

Читать далее

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

Симплексный метод решения задач линейного программирования

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

Задача линейного программирования (ЗЛП) состоит в определении значений упорядоченной совокупности переменных xj, j=1(1)n при которых линейная целевая функция достигает экстремального значения и при этом выполняются (удовлетворяются) все ограничения (они также линейные) в форме равенств или неравенств. Требуется найти план  Х <n> = <x1, x2, ..., xn>, который обеспечивает получение целевой функцией с экстремальным значением.

Читать далее

30 миллиардов параметров: реально ли обучить русский GPT-3 в «домашних» условиях?

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

Не так давно Сбер, а затем и Яндекс объявили о создании сверхбольших русских языковых моделей, похожих на GPT-3. Они не только генерируют правдоподобный текст (статьи, песни, блоги и т. п.), но и решают много разнообразных задач, причем эти задачи зачастую можно ставить на русском языке без программирования и дополнительного обучения — нечто очень близкое к «универсальному» искусственному интеллекту. Но, как пишут авторы Сбера у себя в блоге, «подобные эксперименты доступны только компаниям, обладающим значительными вычислительными ресурсами». Обучение моделей с миллиардами параметров обходится в несколько десятков, а то сотен миллионов рублей. Получается, что индивидуальные разработчики и маленькие компании теперь исключены из процесса и могут теперь только использовать обученные кем-то модели. В статье я попробую оспорить этот тезис, рассказав о результатах попытки обучить модель с 30 миллиардами параметров на двух картах RTX 2080Ti.

Читать далее

О том, как нейросеть исследует физику толпы…

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

...чтобы потом обучать урбанистических роботов.

Цифровой двойник плотных скоплений хаотически движущихся объектов разрабатывают для задач навигации роботов студенты НИТУ "МИСиС", ИТМО и МФТИ . Он будет представлять собой веб-сервис с применением графовых нейронных сетей и позволит изучать физику толпы, законы роевого поведения у животных и принципы движения «активной материи». Эти данные активно требуются для обучения роботов-курьеров, беспилотников и других автономных устройств, работающих в условиях многолюдных пространств. Первые результаты опубликованы в журнале Journal of Physics: Conference Series.

Подробнее -->

Метод ветвей и границ. Задача коммивояжера

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

Среди методов, привлекаемых к решению задач исследования операций (ИО) особое место занимает метод ветвей и границ (МВГ), который внес оригинальный взгляд в целом на проблемы оптимизации и позволил по другому воспринимать смысл оптимальности решений. Авторы разработанного метода предложили оценивать целевую функцию (ЦФ) задачи нижней границей целевой функции (НГЦФ) всего множества решений конкретной задачи, не получая ни всех решений, ни одного из них. Располагая такой оценкой, можно формировать решения задачи последовательно их улучшая не сильно уклоняясь от НГЦФ. В статье предлагается детальный разбор этого метода решения на числовом примере с подробными комментариями выполняемых действий при поиске оптимального решения.

Читать далее

Без границы. Системный подход и алгоритмы творчества

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

Так уж вышло, что творчество всё ещё позиционируется как нечто "душевное и вдохновенное". А системный подход объясняет алгоритмы творчества, позволяя поставить "на поток" без потери уникальности и "вау эффекта". Можно ли так делать, и отличается ли такое творчество от условно канонического. Давайте разберемся вместе.

Читать далее

Обзор методов численной оптимизации. Безусловная оптимизация: метод линий

Время на прочтение24 мин
Количество просмотров47K
image

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

Введение


Оптимизация — это процесс нахождения точки экстремального значения некоторой заданной целевой функции $f(\mathbf{x})$. Это один из крупнейших краеугольных камней прикладной математики, физики, инженерии, экономики, промышленности. Область её применений необъятна и может распространяться от минимизации физических величин на микро- и макроуровнях до максимизации прибыли или эффективности логистических цепочек. Машинное обучение также заострено на оптимизации: всевозможные регрессии и нейроные сети пытаются минимизировать ошибку между предсказанием и реальными данными.

Экстремум может быть как минимумом, так и максимумом, но обычно принято изучать любую оптимизацию исключительно как поиск минимума, поскольку любая максимизация эквивалентна минимизации из-за возможности поменять знак перед целевой функцией: $f(\mathbf{x})\to -f(\mathbf{x})$. Следовательно, в любом месте ниже под оптимизацией мы будем понимать именно минимизацию.
Читать дальше →

Неочевидные лайфхаки 3D реконструкции людей

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

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

Читать далее

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