Обновить
197.43

Алгоритмы *

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

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

Чтение Micro QR Code версии М3 (алфавитно-цифровой режим)

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

Задание: необходимо прочитать Micro QR Code версии М3, содержащий кодовое слово, состоящее из символов верхнего регистра (на примере закодированных слов – SAFEBOX, Q1W2E3R4T5Y6U и EFB QWG WIFI 7; почему выбрано именно такое количество символов будет также расшифровано) на основе алгоритма, приведенного в ГОСТ Р ИСО/МЭК 18004-2015 (п. 7.4.4). Аналогично версии М2 данный режим невозможно прочитать стандартными ресурсами мобильных устройств, производимых GAFAM (как оказалось, свободно распространяемые библиотеки страшно глючат, поэтому Ассоциация отказалась и от этого режима).

Читать далее

Чтение Micro QR Code версии М3 (числовой режим)

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

Задание: необходимо прочитать Micro QR Code версии М3, содержащий кодовое слово, состоящее из цифр (на примере – 777777777777777777 (18 цифр) и максимальном кодовом расстоянии (23 цифры) – 77777777777777777777777; почему выбрано именно такое количество цифр будет также расшифровано) на основе алгоритма, приведенного в ГОСТ Р ИСО/МЭК 18004-2015 (п. 7.4.3, пример 2). Аналогично версии М2 данный режим невозможно прочитать стандартными ресурсами мобильных устройств, производимых GAFAM (как оказалось, свободно распространяемые библиотеки страшно глючат, поэтому Ассоциация отказалась и от этого режима)

Читать далее

Создание простого и работоспособного генетического алгоритма для нейросети с Python и NumPy

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

Генетический алгоритм нужен, когда ты знаешь параметры своей нейросети, но не знаешь, что должно получиться на выходе, например, этот алгоритм можно использовать для игры в Google динозаврика или Flappy Bird, потому что там ты не знаешь, что должно быть на выходе, но у тебя есть возможность сортировать наиболее жизнеспособные варианты, например по времени, это называется фитнес функций.

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

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

Вначале нам потребуется импортировать модули:

Читать далее

Быстрый парсинг 8-битных целых чисел

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

Допустим, вам нужно быстро распарсить 8-битные целые числа (0, 1, 2, …, 254, 255) из строки ASCII/UTF-8. Задача взята из проекта simdzone под руководством Йероена Коеккоека (NLnet Labs). Дана строка и её длина: например, ’22’ и длина 2. Наивное решение на C может выглядеть так:

Читать далее

Распаковываем файл gzip вручную. Часть 2

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

В этой части мы, как и в первой, распакуем файл gzip вручную, но теперь ещё и декодируем коды Хаффмана.

Для начала запишем данные на диск:

$ echo "hector the frantic father on an anchor or a rare fat cat sat on the ranch" > test-huff.txt
$ xxd test-huff.txt
00000000: 6865 6374 6f72 2074 6865 2066 7261 6e74  hector the frant
00000010: 6963 2066 6174 6865 7220 6f6e 2061 6e20  ic father on an
00000020: 616e 6368 6f72 206f 7220 6120 7261 7265  anchor or a rare
00000030: 2066 6174 2063 6174 2073 6174 206f 6e20   fat cat sat on
00000040: 7468 6520 7261 6e63 680a                 the ranch.

На этот раз файл получился размером 74 байта и содержит 13 символов:

a, c, e, f, h, i, n, o, r, s, t; пробел (0x20) и перевод каретки (0x0a).

В этой строке есть много повторений. Надеюсь, gzip это учтёт. Поскольку я работаю под Windows, то для распаковки использовал 7zip-zstd.

$ 7z a -mx9 test-huff.txt.gz .\test-huff.txt
$ xxd test-huff.txt.gz
00000000: 1f8b 0808 d76f 6565 0200 7465 7374 2d68  .....oee..test-h
00000010: 7566 662e 7478 7400 158b 410a 0031 0c02  uff.txt...A..1..
00000020: effb 0abf 2621 257b 69c1 e6ff d480 1e64  ....&!%{i......d
00000030: c6ca e823 7425 96b8 fb0f 2c7a 0967 8393  ...#t%....,z.g..
00000040: 2873 8710 9543 11ee 75ad cc51 237d 0fc7  (s...C..u..Q#}..
00000050: 9797 d64a 0000 00                        ...J...

Чтобы вы лучше поняли, как будет выглядеть декодирование, покажу первую строку декодированного потока gzip:

0101 1001 0001 1101 00111 010 000 1101 0101 1001 000
h    e    c    t    o     r   ' '   t    h  e    ' ' 

Ну а подробности читайте далее.
Читать дальше →

Бинарный поиск

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

В этой статье мы познакомимся с бинарным поиском с примером на JavaScript, а так же сравним бинарный поиск и линейным.

Читать далее

Оптимизация на лету: Как правильная методология разработки в 1С сокращает отчетность с минут до секунд

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

Автоматизация процессов выглядит как задача без конца, не так ли?

Давайте подумаем, как можно упростить этот путь.

Существуют определенные стандарты программирования, которым нужно следовать разработчикам — зачем же они нужны?

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

Когда программное решение превращается в препятствие, вместо того чтобы быть инструментом, возникает вопрос – зачем оно вообще нужно?

Читать далее

Ortools — библиотека для решения задачи VRP

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

Привет! Меня зовут Илья Набатчиков, я MLE в компании Kamaz Digital. Также я являюсь учусь в онлайн магистратуре на базе университета ИТМО @ai-talent.

Сегодня я хочу рассказать о библиотеке ortools для решения проблемы маршрутизации транспортных средств с учетом ограничений по времени и грузоподъемности (CVRPTW).

И самое важно поделиться парой важных фичей, которых вы не найдете в документации.

Читать далее

Многорукие бандиты в задаче ритейла

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

В настоящее время набирают популярность модели Reinforcement Learning для решения прикладных задач бизнеса. В этой статье мы рассмотрим подмножество этих моделей, а именно многоруких бандитов (multi-armed bandits). Также мы:

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

Читать далее

4 миллиарда операторов if

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

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

В современном мире, где ИИ постепенно заменяет программистов, отнимая у них работу и совершая переворот в том, как мы подходим к рассуждениям о коде, нам, возможно, следует быть более открытыми к мыслям людей, недавно пришедших в нашу отрасль? На самом деле, показанный выше код — идеальный пример компромисса между временем и задействованной памятью. Мы жертвуем временем и в то же время памятью и временем компьютера! Поистине чудесный алгоритм!

Поэтому я решил изучить эту идею проверки чётности числа при помощи одних сравнений, чтобы понять, насколько хорошо она работает в реальных ситуациях. Я сторонник высокопроизводительного кода, поэтому решил реализовать это на языке программирования C, потому что он и сегодня остаётся самым быстрым языком в мире с большим отрывом от других (благодаря гению Денниса Ричи).

Читать далее

Искусство следопыта в корпоративной инфраструктуре

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

В этой статье хотелось бы обсудить индикаторы атаки — ту часть Threat Intelligence, которая отвечает за эффективное реагирование на угрозы и расследование инцидентов. В этом контексте вспомним одну из апорий Зенона Элейского - про Ахиллеса и черепаху. Современный бизнес часто оказывается в позиции быстроного Ахиллеса, который, догоняя черепаху, всегда остается чуть позади.

Читать далее

Топ-18 наших самых крутых ИИ-разработок за 2023 год: рукописная прописка, UniversalPay и обрезанные QR. А что еще?

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

2023 год оказался для нашей компании, Smart Engines, крайне успешным со всех точек зрения – бизнес-результатов, научных достижений и, разумеется, технологий. И нашими успехами мы традиционно хотим поделиться с вами. 

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

Мы собрали для себя и для вас топ-18 разработок Smart Engines за минувший год – приглашаем под кат, чтобы с ними познакомиться.

Читать далее

Чтение Micro QR Code версии М2 (алфавитно-цифровой режим)

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

Задание: необходимо прочитать Micro QR Code версии М2, содержащий кодовое слово, состоящее из символов верхнего регистра (на примере закодированных слов – NOVICE, MONEY и M1ND5; почему выбрано именно такое количество символов будет также расшифровано) на основе алгоритма, приведенного в ГОСТ Р ИСО/МЭК 18004-2015 (п. 7.4.4). Аналогично версии М1 данный режим невозможно прочитать стандартными ресурсами мобильных устройств, производимых GAFAM (как оказалось, свободно распространяемые библиотеки страшно глючат, поэтому Ассоциация отказалась и от этого режима).

Читать далее

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

Генеративные рекомендательные системы: как мы научились предсказывать заказы пользователей

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

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

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

Читать далее

Товары-аналоги и с чем их едят или Свежий подход к формированию групп товаров для управления ассортиментом Ozon fresh

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

Мы команда data science Ozon fresh. В этой статье мы расскажем об одной из наших задач - алгоритм, который помогает управлять нашим огромным ассортиментом.

Ozon fresh — это сервис быстрой доставки продуктов, бакалеи, бытовой техники, электроники и других товаров. В нашем ассортименте более 35 000 уникальных позиций (готовая еда, мясо, рыба, фрукты, овощи, товары для гигиены и многое другое). Специфика Ozon fresh заключается в мини-складах, где хранятся товары. Они доставляются клиентам в радиусе нескольких километров. 

Управление таким количеством позиций требует много человеческих и технологических ресурсов. У нас этим занимаются более 30 человек. Для упрощения работы мы  используем различные группировки товарных позиций. Самая популярная — иерархическая четырёхуровневая группировка (далее мы будем называть её «категорийное дерево»).

Читать далее

В поисках алгоритмического дзена

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

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

Читать далее

Простая проблема приводит к слишком большим числам для нашей Вселенной

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

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

Нечасто пятилетние дети могут разобраться в вопросах, связанных с информатикой, но и это может произойти. Предположим, например, что у девочки по имени Алиса есть два яблока, но она предпочитает апельсины. К счастью, её одноклассники разработали хорошую систему торговли фруктами со строго контролируемым обменным курсом: за яблоко, скажем, вы получите банан. Может ли Алиса совершить серию сделок, собирая и предлагая бананы или дыни, и получить свой любимый фрукт? 

Звучит достаточно просто. «Вы можете пойти в начальную школу и рассказать об этом детям», — сказал Кристоф Хаазе, учёный из Оксфордского университета. «Люди подумают: «Это должно быть легко». 

Но математическая задача, лежащая в основе дилеммы Алисы и называемая проблемой достижимости для систем сложения векторов, на удивление тонкая.

Читать далее

Почему B-деревья быстрые?

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

B-дерево — это структура, помогающая выполнять поиск в больших объёмах данных. Она была изобретена более сорока лет назад, однако по-прежнему используется в большинстве современных баз данных. Хотя существуют и более новые структуры индексов, например, LSM-деревья, B-дерево пока никто не победил в обработке большинства запросов баз данных.

После прочтения этого поста вы будете знать, как B-дерево упорядочивает данные и выполняет поисковые запросы.

Читать далее

Томографический калейдоскоп, или подведение итогов уходящего 2023 года вместе с STE

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

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

Результат наших трудов покажем на томографии 12 объектов, каждый из которых символизирует один из 12 месяцев года. Да-да, интересная задача перед нами стояла в декабре - собрать 12 объектов, сфотографировать, сделать томографию и соорудить календарь из них. Кстати, и ты, дорогой читатель, можешь стать обладателем календаря от Smart Engines, но обо всем по порядку!

Читать далее

Чтение Micro QR Code версии М2 (числовой режим)

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

Задание: необходимо прочитать Micro QR Code версии М2, содержащий кодовое слово, состоящее из цифр (на примере – 99999999 и максимальном кодовом расстоянии – 9999999999; почему выбрано именно такое количество цифр будет также расшифровано) на основе алгоритма, приведенного в ГОСТ Р ИСО/МЭК 18004-2015 (п. 7.4.3, пример 2). Аналогично версии М1 данный режим невозможно прочитать стандартными ресурсами мобильных устройств, производимых GAFAM (как оказалось, свободно распространяемые библиотеки страшно глючат, поэтому Ассоциация отказалась и от этого режима).

Читать далее

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