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

Алгоритмы *

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

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

На какие профессии повлияет ChatGPT

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

3 недели назад я написал инструкцию о том как получить доступ к ChatGPT в России. За это время она неожиданно набрала более 130т просмотров, что показывает явный интерес сообщества к этой теме.

За последнее время я собрал достаточно много интересной информации вокруг этой технологии и очень хочу с вами всем этим поделиться. Я являюсь больше разработчиком мобильных приложений, а не специалистом в области ИИ - поэтому текст данной серии статей ориентирован больше на гипотетические размышления, чем на точные технические детали. Если вы можете опровергнуть что-то из написанного мной - жду вас в комментариях!

Окей, давай посмотрим что ты там пишешь

Обзор пакетов SciPy, Pyomo и CVXPY для решения задач условной оптимизации

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

Привет, Habr! На связи Михаил Будылин и Антон Денисов, мы работаем в отделе аналитики данных X5 Tech.

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

Читать далее

Задача коммивояжера (TSP) точное решение — метод ветвей и границ

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

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

Я говорю про NP-трудные задачи (NP-трудность - недетерминированная полиномиальная трудность по времени) и на одной из данного класса хочу акцентировать ваше внимание. Задаче коммивояжера.

Мы не будем рассматривать эвристические алгоритмы, нам нужно точное решение.

Читать далее

Распознавание товаров на полках

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

Computer Vision позволил создать принципиально новые продукты и механики в многих областях жизни: умный город, беспилотный транспорт, аналитика производств.
То же самое произошло и с супермаркетами: “оценка длины очереди”, “оценка загруженности зала”, “оценка загруженности полок товарами”, “проверка выкладки”, “проверка качества уборки”, “проверка ценников” и многое-многое другое это теперь автоматизированные задачи.
В этой статье я хочу рассказать про то, какие используются общие принципы для распознавания товаров. Эти алгоритмы необходимы для проверки выкладки, заполненности полок, контроля остатков и других задач.
Так получилось что за последние 7 лет мы были вовлечены в решение и консультирование по большинству таких задач, так что накопилось много интересного опыта.

Читать далее

Применение методов, лежащих в основе генетических алгоритмов, для обеспечения проектирования упаковки

Время на прочтение18 мин
Количество просмотров2.6K
Одной из частных задач, с которыми может столкнуться конструктор при проектировании упаковки – это задача предварительно скомпоновать упаковываемые изделия с целью последующего определения габаритов контейнера (ящика), необходимого для упаковки данных изделий. С такими задачами я сталкивался в ООО «СТЦ». Пример одной организации, может быть, и не показателен, но аналогичная задача встречалась мне и в другой организации.

Такого рода компоновка может выполняться вручную с использованием 3D-моделирования (возможны также другие способы с последующим построением результата на двумерном чертеже вручную). И если таких упаковываемых изделий наберется, например, 20, то ручная компоновка становится достаточно трудоемкой.

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

Из этого возникла идея самостоятельно разработать приложение для компоновки под свою специфику, попробовав использовать при этом генетические алгоритмы. Что из этого получилось – будет рассказано дальше в статье.


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

Двое на самокате, не считая кучи разных датчиков: как мы учились определять поездки вдвоем

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

Всем привет, на связи Фарук, инженер-разработчик электроники и встроенного ПО в Whoosh (читается как ВУШ, ощущается как вжууух). Работаю я в embedded отделе (хардкорные программисты, что пишут прошивку на C для различных железок и проектируют эти самые железки), но в основном занимаюсь анализом различных данных от нашего IoT модуля и разработкой алгоритмов для работы с этими данными.

Наша компания — сервис аренды электросамокатов (а местами еще и электровелосипедов) или, иными словами, кикшеринг. О том, как мы к этому пришли и что из себя представляем можно почитать здесь.

Одно из отличий использования шерингового самоката от личного — наличие определенных правил. Например, вы видели когда-нибудь парочку влюбленных, вдвоем на самокате, исчезающих в закате? Или может наблюдали троих парней, которые в обнимку, преодолев смущенье, едут навстречу новым приключеньям? А может быть вы видели как чей-то отец, словно швец, жнец и на самокате ездец, с одним ребенком подмышкой а с другим на шее смело едет по парковой аллее?
Вызывают ли у вас эти картины гнев и праведное негодование? А может быть вы и сами не прочь прокатиться с другом/подругой на одном самокате? У нас для вас есть две новости.

Во-первых, так нельзя. А во-вторых, добро пожаловать под кат.

На самокат и под кат

Сравниваем open-source решения VRP задачи

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

Привет, меня зовут Абай Баймуканов, я работают алгоритмистом в ИТ-компании Relog, разрабатывающей облачный сервис для оптимизации городской доставки.

Для решения транспортных задач в логистике нужны лучшие алгоритмы, поэтому мы решили провести собственное исследование и выбрали для него два самых популярных открытых алгоритма - Vroom и Jsprit.

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

Какую задачу решали

Есть разные виды VRP-задач, например, CVRP (учет весогабаритных параметров), VRPTW (учет временных окон), MDVRP (задача с несколькими складами) и PDVRP(задача с забор-доставка). Для теста мы взяли CVRPTW (CVRP+VRPTW), поскольку это самая актуальная для наших клиентов задача.

Про сами алгоритмы. В чем их разница и преимущества

Для решения задач мы использовали два солвера Vroom и Jsprit. Оба они являются движками с открытым исходным кодом и решают CVRPTW, а также имеют много звезд Github.

VROOM

Vroom — это движок оптимизации с открытым исходным кодом, написанный на C++17, предназначенный для поиска эффективных решений разных реальных задач маршрутизации транспортных средств (VRP) за небольшое вычислительное время. Он решает задачу в 2 этапа:

Читать далее

Оценка производительности конфигурации 1C с помощью стандартных подсистем

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

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

В материале статьи я приведу два примера использования "оценки производительности" - для обычных "линейных операций" и для "длительных операций" (фоновых). Данную тему считаю интересной для оценки возможностей ваших систем. Сам довольно часто использую данных функционал.

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

Создание новой ключевой операции, встраивание ее в объект оценки произодительности.

Для начала, я подготовлю две ключевые операции, одну из которых, затем, встрою в объект. Делается это вот таким кодом...

Читать далее

Алгоритмы диапазонов C++20 — 7 немодифицирующих операций

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


Библиотека Ranges для C++20 предлагает альтернативы для большинства алгоритмов. На этот раз я хочу показать вам десять немодифицирующих операций. Мы сравним их со «старой» стандартной версией и увидим их преимущества и ограничения.


Подробности — к старту нашего курса по разработке на C++.

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

#4 Нейронные сети для начинающих. Sudoku Solver. Судоку. Часть 1

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

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

Спойлер: я столкнулся с парой проблем как в своём понимании этой игры, так и в понимании меня компьютером (тут должно было быть смешно), но всё получилось. С результатом моего труда я вам и предлагаю ознакомиться!
Читать дальше →

Объяснение рекомендаций

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


Рекомендательные системы уже давно неотъемлемая часть большинства современных веб-сервисов. Скорее всего, заходя на какой-либо развлекательный (и не только) сайт, вы не раз задавались вопросом, почему именно этот контент или этот товар предлагается вам.

В Иви давно заметили, что недостаточно просто рекомендовать что-то пользователю, важно объяснять свои действия. Если пользователю покажут незнакомый контент, то он будет воспринимать это как нечто неинтересное.

Поэтому хочется, чтобы пользователь понимал:
  1. Насколько ему могут быть интересны наши рекомендации.
  2. Зачем мы ему это показываем.

Меня зовут Андрей Макаров, я разработчик рекомендательной системы онлайн-кинотеатра Иви. В этой статье я расскажу, зачем мы объясняем рекомендации на нашем сервисе, что для этого уже сделали и что только планируем.
Читать дальше →

Генерация штрихкодов с помощью стандартных подсистем 1с для программистов

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

Привет всем! В данной статье предлагаю небольшой обзор возможностей актуальной библиотеки стандартных подсистем (БСП) на предмет формирования большинства существующих штрихкодов.

Читать далее

Многопоточный процесс выполнения процедуры с помощью методов стандартных подсистем 1С

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

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

Читать далее

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

Еще один «привет» из мира 1с — новые возможности языка запроса, которые нужно знать всем 1с-никам

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

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

Введение

Всем привет! В данном материале, я решил, что немного отойду от своего основного профиля - практической разработке и изучения возможностей библиотеке стандартных подсистем (БСП) и затрону работу программиста с языком запросов 1с.

Читать далее

Управление в децентрализованных сетях

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

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

Читать далее

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

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

С 1 по 7 ноября проходила квалификация Yandex Cup 2022. В секции Алгоритм: Марафон организаторы предложили интересную задачу программирования в ограничениях, обобщения известной задачи коммивояжёра, задачу поиска маршрута (vehicle routing problem). В статье расскажу о своем решении на основе Google OR-tools.

Читать далее

Настало время раскрыть карты

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

Всем здравствуйте, уважаемые Хабровчане!

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

Начну с небольшого знакомства и расскажу о своем опыте работы. Без малого 13 лет я являюсь исследователем транспортных сетей в телеком индустрии. Работал в одном из крупнейших операторов связи, был экспертом, менеджером, обычным инженером. Строил и свопировал региональные транспортные сети, развернул с коллегами систему мониторинга сетей MBH от Москвы до Владикавказа, крайние два года отдал изучению графовых баз данных, которые позволили решить не решаемую проблему - автодискавери и построение топологии сетей с путями прохождения трафика сервисов мобильной сети и B2B клиентов. Если забежать немного вперед, то данная система осталась не нужна главному заказчику, и мы благополучно выкинули ее на помойку истории. К сожалению, так бывает, но сейчас не об этом.

Итак, статья будет посвящена графовой БД Neo4j, методам работы с ней, софту по визуализации данных, прикладным задачам.

Немного тезисов - что нужно понять.

Читать далее

Привет из мира 1С — Обработка результатов запроса произвольными вычисляемыми полями. Обзор некоторых новых функций СКД

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

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

Читать далее

Поиск в глубину, поиск в ширину, алгоритмы Дейкстры и А* — это один и тот же алгоритм

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

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

Читать далее

К вопросу о математических способностях студентов или как учить переполненный мозг

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

Я люблю давать простые задачки студентам на лекции. Во-первых, понятно, скольких мы потеряли, во-вторых, это переключение из режима потребления информации в режим выдачи результатов, в третьих — возможность проявить себя для шустрых. Сплошные плюсы!

Одна из простых задач звучит так: «При переводе картинки из цветового пространства RGB в YUV мы выполняем прореживание, то есть выкидываем каждый четный столбец и каждую четную строку в компонентах U и V (все компоненты пикселя по 1 байту). Вопрос: во сколько раз меньше данных у нас стало?» Эта операция называется chroma subsampling и широко используется при сжатии видео, например.

Забавно, что когда-то давно, когда винчестеры были меньше, а дискеты больше, студенты реально отвечали на этот вопрос быстро. А в последние годы регулярно народ в ступор впадает. Приходится разбирать по частям: «Если выкинуть каждую четную строку и каждый четный столбец, во сколько раз меньше данных будет у компоненты?» Почти хором: «В четыре». Начинаю подкалывать: «Отлично! У нас было 3 яблока, первое осталось как есть, а от второго и третьего осталось по четвертинке. Во сколько раз меньше яблок у нас стало?» Народ ржет, но, наконец-то, дает правильный ответ (заметим, не все). 

Это было бы смешно, если бы от способности быстро в уме прикинуть результат не зависела способность быстрее создавать сложные алгоритмы. 

И хорошо видно, как эта способность в широких массах студентов заметно плавно падает. Причем не только в нашей стране. Придуман даже специальный термин: «цифровое слабоумие» ("digital dementia") — снижение когнитивных способностей, достаточно серьезное, чтобы повлиять на повседневную деятельность человека. 

Кому интересно как теряют мозг студенты масштабы бедствия и что с этим делать — добро пожаловать под кат!

Читать далее

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