Data Science: Алгоритмы и Структуры данных
Kanalga Telegram’da o‘tish
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество: @oleginc Канал на бирже: https://telega.in/c/structuredata
Ko'proq ko'rsatish7 580
Obunachilar
-524 soatlar
-177 kun
-6030 kun
Postlar arxiv
Разбираем задачу T9 (predictive text)
На днях ко мне обратился ученик на одном из ресурсов, где я выступаю в качестве frontend-ментора, с просьбой разобрать одну задачу. Суть задачи состояла в следующем:
Найти все доступные комбинаций предложений, полученных методом T9 (predictive text)
https://habr.com/ru/articles/599029/
Алгоритмы и Структуры данных
Всего за 5 минут определите подходящую вам IT-профессию.
Онлайн-школа Skillfactory разработала уникальный профориентационный тест из 16 вопросов. Ответив на них, узнаете наиболее подходящую вам специальность.
Работайте в российских или зарубежных компаниях, в офисе или удаленно. Для айтишников — сниженная ставка по ипотеке, высокая зарплата, комфортные условия и гибкий график.
Переходите по специальной ссылке, чтобы пройти тест, получить карьерный гид по профессии и скидку 45% на обучение.
Реклама. Информация о рекламодателе по ссылкам в посте.
Верификация DataMatrix Честный знак — почему она важна
Работая в крупном разработчике и интеграторе решений для маркировки - заметил, что многие участники оборота (т.е. типографии, производители и магазины) не знают об особенностях распознавания маркировки и мало понимания как она распознается, и какие трудности могут быть при ее не правильном нанесении.
Правильность маркировки как раз проверяется ее верификацией на специальных лабораторных приборах - верификаторах 2D кода. О важности верификации для успешной продаже товара на кассе и хочу рассказать.
https://habr.com/ru/articles/599405/
Алгоритмы и Структуры данных
Как муравьи решают проблемы коммивояжёров
В математике и программировании порой используются необычные названия явлений, объектов и алгоритмов. Но почти всегда такие названия позволяют быстро понять суть описываемых сущностей. Возьмём, к примеру, широко известную задачу о коммивояжёре — найти кратчайший путь между заданными точками. И действительно, сразу представляется себе коммивояжёр, которому нужно обойти все дома в небольшом городке, но при этом затратить минимум усилий и времени. Эта задача имеет очень широкое применение, ведь оптимизация маршрутов и различных процессов — это одна из самых насущных проблем в современном, быстро меняющемся мире. Для решения этой задачи используются разные алгоритмы, один из них называется «муравьиным». С этим названием всё немного сложнее. Для того, чтобы разобраться с этим алгоритмом, нам для начала нужно присмотреться к поведению муравьёв в их необычном организованном мире.
https://habr.com/ru/articles/599093/
Алгоритмы и Структуры данных
Мой первый опыт решения неточных задач или почему стоит заниматься олимпиадами
Только что закончился vk winter quest — мини соревнование по решению неточных задач, о котором я совершенно случайно узнал за день до начала и решил, что это будет неплохим способом занять время на новогодних каникулах. Задача, которую предлагалось решить, была связана с гонками на клетчатой бумаге. Опуская некоторые подробности (о которых вы можете почитать на сайте соревнования), задача заключалась в том, чтобы из заданной стартовой клетки обойти за наименьшее количество шагов все целевые клетки. Неожиданно для меня, мое решение показало себя очень хорошо и забралось в топ-3. Наверное поэтому меня и попросили его описать, чем я сейчас и буду заниматься, попутно объясняя, как я к нему пришел.
https://habr.com/ru/articles/600003/
Алгоритмы и Структуры данных
Собчак узнаёт о мире из папок. Чем вы хуже?
В день выходит около миллиарда постов. Каждый — угроза вашей психике.
Держите голову холодной, читайте только главное ⬇️
«Политическая папка»: от геополитической игры до списка чиновников-интересантов. Ваш пропуск за кулисы власти.
«Экономическая папка»: без прогнозов в воздух — только аналитика от первых экономистов страны. Гарантия прибыли для вашего портфеля акций.
«Медиапапка»: горячие скандалы с участием топовых звёзд и рекламные кампании лидеров рынка. Учитесь информационной войне на конкретных примерах.
«Индустрия 4.0»: прорывы в айти, VR, нейросетях, финтехе, добыче ископаемых и нефтегазовой отрасли. Только те новости, что изменят вашу жизнь уже завтра.
Четыре подписки вместо тысячи бестолковых каналов ⬆️
Муравей Лэнгтона — загадочный клеточный автомат
В мире существует около 14 000 видов муравьёв, каждый из которых имеет собственное название. Но, даже если вы зададитесь такой целью, вы не найдёте ни в одном биологическом справочнике муравья Лэнгтона. Дело в том, что этот муравей — математическая абстракция, модель для описания поведения динамической системы. Иногда кажется, что математики вообще неравнодушны к муравьям — вспомним хотя бы уже ставший классическим муравьиный алгоритм. Да и во всяких логических моделях и задачах муравьи встречаются довольно часто.
От хаоса к строгому порядку
Познакомимся с муравьём Лэнгтона поближе. Он живёт на бесконечной плоскости, состоящей из белых клеток. У него есть два неиссякаемых ведёрка — одно с белой краской, другое с чёрной. Муравей перемещается по клеткам плоскости от одной клетки к другой. При этом он выполняет несложный алгоритм:
1.Если клетка белая, то муравей перекрашивает её в чёрный цвет, поворачивает на 90° направо (по часовой стрелке) и делает шаг вперёд.
2.Если клетка чёрная, то муравей перекрашивает её в белый цвет, поворачивает на 90° налево (против часовой стрелки) и делает шаг вперёд.
Вот, собственно, и всё. Невесёлая жизнь у муравья Лэнгтона, но, как мы увидим, он не готов мириться с такой возмутительной ситуацией и всеми силами старается сбежать.
https://habr.com/ru/articles/599275/
Алгоритмы и Структуры данных
Собчак узнаёт о мире из папок. Чем вы хуже?
В день выходит около миллиарда постов. Каждый — угроза вашей психике.
Держите голову холодной, читайте только главное ⬇️
«Политическая папка»: от геополитической игры до списка чиновников-интересантов. Ваш пропуск за кулисы власти.
«Экономическая папка»: без прогнозов в воздух — только аналитика от первых экономистов страны. Гарантия прибыли для вашего портфеля акций.
«Медиапапка»: горячие скандалы с участием топовых звёзд и рекламные кампании лидеров рынка. Учитесь информационной войне на конкретных примерах.
«Индустрия 4.0»: прорывы в айти, VR, нейросетях, финтехе, добыче ископаемых и нефтегазовой отрасли. Только те новости, что изменят вашу жизнь уже завтра.
Четыре подписки вместо тысячи бестолковых каналов ⬆️
Находим более качественные решения при помощи boost
Каждый C++-разработчик хотя бы слышал о Boost – это, пожалуй, наиболее распространенный набор внешних библиотек, используемый в мире C++. Истоки большинства стандартных библиотек восходят к Boost, поскольку многие разработчики Boost также входят в состав комитета по стандартам C++ и именно они определяют, в каком направлении будет развиваться язык – поэтому можете считать Boost своеобразным дорожным указателем. Возвращаясь к заголовку этой статьи - 'Boost' содержит много популярного функционала, вспомогательных библиотек, так, что, если вы столкнулись с какой-нибудь распространенной проблемой – первым делом обращайтесь к Boost, так как велики шансы, что там для вас найдется готовое решение.
https://habr.com/ru/companies/piter/articles/650945/
Алгоритмы и Структуры данных
Как в Java устроено выделение регистров в памяти
Когда виртуальная машина Java компилирует ваш исходный код Java в машинный, одна из задач, которые она должна при этом выполнить – решить, где хранить локальные переменные Java и другие подобные временные значения. В вашей машине отсутствует концепция локальных переменных, поэтому на этапе компиляции необходимо определиться, какое место в памяти стека (какой машинный регистр) будет использоваться для хранения каждой переменной. Эта операция называется «выделение регистров». Может показаться, что выделение регистров – сложная абстрактная теоретическая тема, но в этом коротком посте я покажу, как сначала соотнести исходный код Java с теорией, потом понять, как его видит компилятор, а потом – показать результирующий машинный код. В данном случае моя цель – продемонстрировать, что все эти концепции очень легко опробовать на практике с реальным компилятором.
https://habr.com/ru/companies/piter/articles/645949/
Алгоритмы и Структуры данных
Сравнение матричной факторизации с трансформерами на наборе данных MovieLens с применением библиотеки pytorch-acceleratd
Современный человек много чем занимается в интернете: ходит по магазинам, слушает музыку, читает новости. Все эти задачи подразумевают поиск и выбор того, что ему нужно. При этом важную роль тут играют рекомендательные системы. Они помогают людям не утонуть в многообразии вариантов и увидеть именно то, что им подойдёт, то, что иначе им сложно было бы найти. Предоставление пользователям качественных рекомендаций — это важнейшая часть обеспечения первоклассного уровня удовлетворения клиента. Это — один из самых эффективных способов взращивания лояльности клиентов и повышения ценности продукта или услуги в их глазах. Всё это так важно, что целые бизнес-модели некоторых компаний построены вокруг предоставления их клиентам наилучших рекомендаций, что делает рекомендательные системы важнейшими факторами, влияющими на прибыль подобных компаний! В результате неудивительно то, что клиенты проекта Microsoft CSE часто обращаются к нам с просьбами, касающимися реализации эталонных рекомендательных техник. Один из таких проектов был моим первым опытом в данной сфере.
https://habr.com/ru/companies/wunderfund/articles/645921/
Алгоритмы и Структуры данных
Построение годографа точки звуковой волны в изотропной среде при изменении ветра по высоте в вертикальной плоскости
В предыдущей статье было обещано, что будет рассказано о программе–демонстраторе численного интегрирования годографа точки звуковой волны. В программе–демонстратор учитывается деформацию полусферической звуковой волны, которое вызывает искривление звуковых лучей от ветра, характеризующегося увеличением скорости с ростом высоты.
https://habr.com/ru/articles/796863/
Алгоритмы и Структуры данных
Инь-Янь консолидация для процедурной генерации границ
Способ процедурной генерации граничного перехода от одной среды к другой, которые заданы на какой-либо регулярной решетке точек в квадрате или равностороннем треугольнике. Допускает обобщение на произвольные фигуры, а также на любые тайловые покрытия.
https://habr.com/ru/companies/timeweb/articles/792224/
Алгоритмы и Структуры данных
Нахождение порогов с оптимальным балансом классов
Решим такую алгоритмическую задачу: дано множество точек (x_i,y_i) на плоскости, имеющих метки 0 или 1. Требуется выделить область \{x\geq a \,\&\, y \geq b\}, в которой отношение числа 1 к числу 0 максимально, при условии, что число нулей в этой области не меньше заданного числа.
Упорядочим все точки по убыванию y_i. Будем поддерживать структуру данных, которая ответит на вопрос: сколько всего чисел, добавленных в структуру, не меньше заданного числа? Тогда, если добавлять в эту структуру координаты x_i всех точек, а также поддерживать упорядоченное множество значений x-координат точек с меткой 1, то алгоритм будет следующим. Для каждой просмотренной точки с меткой 1 найти количество точек с x-координатами, превосходящими координату текущей точки. Количество всех просмотренных точек с меткой 1, попавших в эту область, находится как индекс текущей точки в упорядоченном множестве.
Для реализации упорядоченного множества с функциями добавления элемента и поиска количества элементов, не меньших заданного (нахождение индекса) применяется сбалансированное дерево двоичного поиска, а точнее, дерево порядковых статистик. В Python упомянутая структура данных реализована в контейнере SortedList из библиотеки sortedcontainers. Сложность алгоритма составила O(m^2\log^2n), где n - число всех точек, m - число единиц.
https://habr.com/ru/articles/796599/
Алгоритмы и Структуры данных
Кодируем крестики-нолики в 15 битах
Недавно я наткнулся на пост Алехандры Гонсалес (@blyxyas), в которой рассказывается о попытке сжать игру крестики-нолики в минимальное количество битов. Она пришла к решению из 18 битов. Это заставило меня задуматься: а можно ли улучшить этот результат?
https://habr.com/ru/articles/796721/
Алгоритмы и Структуры данных
Выберите высокооплачиваемую IT-профессию и участвуйте в розыгрыше 200 000 рублей на обучение.
IT-рентген от онлайн-школы Skillfactory — это бесплатный вебинар, на котором вы пройдете тест на профориентацию, получите 6 гайдов по IT-направлениям. А еще встретитесь с экспертами, которые проведут карьерную консультацию.
В итоге определитесь с профессией и попадете в закрытое сообщество специалистов из индустрии.
Регистрируйтесь на бесплатный вебинар прямо сейчас и станьте участником розыгрыша 200 000 рублей на обучение.
Экспериментальная сортировка тернарным деревом
Когда-то меня заинтересовал такой вопрос: почему все самые лучшие сортировки, основанные на сравнениях, имеют асимптотику O(N log N). И почему тут логарифм двоичный? Можно ли создать сортировку, у которой асимптотика будет лучше в самом худшем случае? Я решил провести довольно любопытный эксперимент.
В википедии написано, что двоичность логарифма связана с тем, что результатом операции сравнения двух элементов может быть один из двух вариантов. И если в ходе работы алгоритма совершается k сравнений, то всего возможно 2^k вариантов комбинаций ответов на них. Количество перестановок из n элементов равно n! Для того, чтобы можно было сюръективно отобразить множество комбинаций ответов на множество всех перестановок, количество сравнений должно быть не меньше, чем log_2 n!, поскольку сравнение — единственная разрешённая операция. Так дословно гласит электронная энциклопедия.
Однако ведь результат сравнения принимает 3 варианта: больше, меньше или равно. Тогда должно быть возможно 3^k вариантов комбинаций ответов на них при k сравнений. Может быть логарифм двоичный потому, что мы всегда сравниваем только два элемента за раз (попарно)? Тоже не так! Как показали мои эксперименты, это условие необходимое, но не достаточное. Нам нужно еще отказаться от бинарного дерева в сторону тернарного!
https://habr.com/ru/articles/796405/
Алгоритмы и Структуры данных
ИИ в 3D: Где мы сейчас и какое будущее нас ждёт? (Часть 2)
В предыдущей статье мы уже затрагивали задачу реконструкции 3D-объектов по их 2D-изображениям. В этой же углубимся в реконструкцию с головой! Вообще говоря, как мне кажется, сейчас мы рассмотрим гораздо более концептуально интересные методы, а именно - HSP и Mesh R-CNN. Это база, которая просто должна осесть в головах всех любителей ИИ в 3D!
https://habr.com/ru/articles/790560/
Алгоритмы и Структуры данных
Если у вас есть хоть 1 банковская карта — можете смело сломать ее пополам
Горько признавать, но 97% людей используют карты только ради покупок. И даже не подозревают, что можно: обнулить любой кредит, получить льготную ипотеку и спокойно жить на кешбэках
«Хитрые» сотрудники банков не говорят о скрытых функциях и молчат про халявные условия. Но есть канал — Беспощадный банкстер, где раскрывают все карты
Загляните и до конца жизни сможете законно брать кредиты под 0%, навсегда уберёте с карт все списания и комиссии, поставите себе 10-процентный кэшбэк НА ВСЁ. Вот ссылка — @bezposhady
PQ3, Apple’s New iMessage Security Protocol: что нового?
Хоть убейте, не нашёл отличий. Впервые увидел на Коде Дурова, там, как обычно, не дали подробностей. Ключи используются от устройств, ну и что? Сейчас не также? Также. Приватный ключ здесь, публичный остальным, приватный никому не показываем. Всё, пошло поехало.
Но это же Apple! Не может всё так быть просто. Окей, ищу дальше, натыкаюсь на securitylab, там уже побольше подробностей:
Примечательно, что каждое устройство в системе iMessage генерирует уникальный набор ключей шифрования, а приватные ключи никогда не покидают устройство. Протокол предусматривает регулярную замену публичных ключей на новые, усиливая тем самым защиту данных пользователя.
PQ3 использует уникальный подход к шифрованию каждого сообщения, вводя новую энтропию, что делает невозможным детерминированное восстановление ключей из текущего состояния беседы. Это обеспечивает, так называемые, самовосстанавливающиеся свойства протокола.
https://habr.com/ru/articles/796065/
Алгоритмы и Структуры данных
