Метка «Алгоритмы» - 11

Доброго времени суток, читатели! Частенько математики останавливаются на существовании решения, и получается что-то подобное.

В гостинице поселились инженер, физик, и математик. У каждого в номере возникает пожар.
Инженер выбегает в коридор, видит на стене пожарный шланг, хватает его, открывает воду, вбегает в номер и заливает очаг возгорания.
Физик, быстро прикинув объем горючих веществ, температуру пламени, теплоемкость воды и пара, атмосферное давление и т.п., наливает в стакан из графина строго определенное количество воды и заливает огонь этой водой.
Математик выскакивает в коридор, видит на стене огнетушитель, и, обрадованно воскликнув: “Решение существует!”, спокойно возвращается в номер.

А о том, какие грабли попадаются на пути «до победного конца», я расскажу под катом.Читать полностью »

Терминология

Для начала определимся с терминологией.
Sku (Stock-keeping unit) — это номер, код или какой-либо другой идентификатор уникального товарного продукта в розничных сетях/магазинах. На постсоветском пространстве это понятие немного адаптировалось и под ним начали понимать уже не сам идентификатор, а описание этой товарной позиции (Например типичным Sku наших розничных сетей является: «Батончик шоколадный 50г Марс»). А для каждого такого Sku ставят в соответствие артикул.

Проблемы

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

  • Каждая розничная сеть использует свои уникальные Sku и артикулы;
  • Sku некоторых сетей достаточно сильно сжимаются для экономии места на чеках, что затрудняет идентификацию товарной позиции (Пример: «К.КгВафВеселЖуравРош»);
  • Периодически возникает необходимость получить продажи не по конкретным товарным позициям, а по товарным группам (Например: «Шоколадные батончики»), тогда даже полноценные красивые Sku нам ничем не помогут.

Если вам интересно как мы пытались автоматизировать процесс свода товарных справочников разных розничных сетей — добро пожаловать под кат.
Читать полностью »

Этот алгоритм является улучшенным алгоритмом поиска пути A*. JPS ускоряет поиск пути, “перепрыгивая” многие места, которые должны быть просмотрены.  В отличие от подобных алгоритмов JPS не требует предварительной обработки и дополнительных затрат памяти. Данный алгоритм представлен в 2011 году, а в 2012 получил высокие отклики. Что из себя представляет данный алгоритм и его реализацию можно прочитать дальше в статье.
Алгоритм поиска пути Jump Point Search

Читать полностью »

С 29 июня по 1 июля 2013 г. в Екатеринбурге пройдёт международная студенческая школа CSEDays по алгоритмам и теории сложности. Список преподавателей получился очень внушительным, давайте я о них здесь буквально в двух словах расскажу.

Международная студенческая школа CSEDays по алгоритмам и теории сложности Константин Макарычев (Microsoft Research)
Молодой, но уже очень успешный учёный. Специалист по приближённым алгоритмам и Unique games conjecture (гипотезе, из которой выводятся результаты о неприближаемости для многих NP-трудных задач).
Международная студенческая школа CSEDays по алгоритмам и теории сложности Александр Шень (Montpellier Laboratory of Informatics, Robotics, and Microelectronics и ИППИ РАН)
Наверное, не нуждается в представлении. Специалист в области теории сложности.Автор многих замечательных учебников — таких, например, как «Программирование: теоремы и задачи». Также является редактором перевода (и, на самом деле, главным переводчиком) первого издания классического учебника Кормена, Лейзерсона, Ривеста «Алгоритмы: построение и анализ».
Международная студенческая школа CSEDays по алгоритмам и теории сложности Mario Szegedy (Rutgers University)
Дважды лауреат Премии Гёделя, присуждающейся ежегодно за выдающиеся статьи в области theoretical computer science. Первый раз — за вклад в доказательство PCP-теоремы(вероятностно проверяемых доказательств) и её применение к результатам о неприближаемости, второй — за работы в области streaming algorithms.
Международная студенческая школа CSEDays по алгоритмам и теории сложности Ryan Williams (Stanford University)
Тоже молодая звезда. Его недавний результат о том, что класс NEXP не содержится в классе ACC0,называют одним из самых значительных достижений в области схемной сложности за последние 20 лет. И это далеко не единственный его результат. Ещё, например, он показал, как найти максимальный разрез в графе быстрее полного перебора с неожиданным и элегантным использованием быстрого умножения матриц.

В общем, очень-преочень рекомендую. Читать полностью »

В этом посте я расскажу про программу, которая подделывает любую подпись при помощи шарнирного механизма. Программа основана на теореме Кемпе, доказанной в середине 19-го века.
Подделываем вашу подпись при помощи шарнирного механизма. Теорема Кемпе
Читать полностью »

Все доброго времени суток!
Хочу рассказать об одной интересной проблеме и ее решении, которое я применил в одном из своих проектов.
Суть проблемы такова:
Есть несколько детекторов сигнала (допустим, базовые станции GSM). И эти детекторы присылают на сервер уровень сигнала для некоего источника. Необходимо вычислить и отобразить на карте координаты источника
Если вам интересно, как это сделать, добро пожаловать под кат.
Читать полностью »

Прежде чем читать эту статью, нужно понимать, что такое декартово дерево по неявному ключу (это тема не одной статьи, поэтому об этом лучше почитать тут). Сжатие пространста — метод, используемый для сжатия на отрезке данных. Например, вместо того, чтобы хранить множество {1, 1, 1, 2, 2, 2, 3, 1, 1} будем хранить {1 x 3, 2 x 3, 3 x 1, 1 x 2}.
Теперь попробуем сжимать пространство с помощью такого метода и иметь возможность выполнять онлайн операции с любым отрезком.
Читать полностью »

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

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

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

Введение

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

Деревья в базах данных можно хранить тремя основными методами: Adjacency List, Matherialized Path & Nested Set. Когда мы хотим переехать с AL на NS, это можно сделать с помощью рекурсии (если БД расово верная). Но что делать в случае MySQL?Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js