Обновить
215.6

Алгоритмы *

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

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

Увлекательная история о раскрашивании парных скобок — как VSCode ускорил раскраску в 10,000 раз

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

Прим. Wunder Fund: в этой статье из блога VSCode рассказана увлекательная алгоритмическая история о решении проблемы раскрашивания скобок. Господам удалось достичь значительногоускорения этого процесса. Нам самим очень нравится решать подобные задачи при работе над торговой системой, а если они вам тоже интересны, то пишите:)

Когда имеешь дело с глубоко вложенными скобками в Visual Studio Code — может быть непросто понять то, у каких скобок есть пары, а у каких — нет.

Для того чтобы упростить решение этой задачи, в 2006 году пользователь CoenraadS разработал восхитительное расширение для VS Code — Bracket Pair Colorizer, позволяющее раскрашивать парные скобки, и опубликовал его в VS Code Marketplace. Это расширение стало весьма популярным, теперь оно, с более чем 6 миллионами установок, входит в 10 самых скачиваемых расширений.

Для того чтобы решить проблемы, касающиеся производительности и точности работы расширения, в 2018 году CoenraadS выпустил расширение Bracket Pair Colorizer 2, которое тоже стало популярным и было установлено более 3 миллионов раз.

Читать далее

Шифры замены и табличного гаммирования

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

В данной работе рассматриваются шифры замены и табличного гаммирования. Читателю предлагается решить несколько задач из области защиты информации.

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

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

Читать далее

Антиплагиат исходного кода: гибридный подход с использованием парсера ANTLR

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

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

Читать далее

Идеальная экономика

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

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

Подробнее далее...

Логистика. Часть 3. Еще одна модель динамического ценообразования

Время на прочтение41 мин
Количество просмотров6.9K
Бывает так, что попадается какая-то задача, находится ее решение, причем довольно неплохое, но потом эта задача все равно не отпускает. Появляется навязчивая мысль о том, что у нее должно быть более оптимальное решение. Примерно так и получилось с задачей динамического ценообразования для авиабилетов, которую мы описывали более года назад в прошлой статье. Решение основывалось на алгоритме семплирования Томпсона. Компьютерное моделирование продаж показывало превосходные результаты, а тот факт, что такие гиганты как Walmart и Amazon уже давным давно и более чем успешно используют различные модификации этого алгоритма, только укрепляло уверенность в том, что мы на верном пути и иных способов оптимального решения задачи просто нет. Но в подавляющем большинстве случаев то, что отлично и везде работает, в авиаотрасли должно работать лучше. Не потому что так хочется, а потому что в этом действительно есть сильная потребность. Должно быть меньше экспериментов с ценой, она не должна меняться очень часто, а сам процесс поиска оптимальной цены должен быть еще быстрее. Но самое главное, алгоритм семплирования Томпсона не позволяет получить более-менее адекватную вероятностную модель спроса, без которой невозможно в полной мере использовать стохастическое программирование и заняться задачами глобальной оптимизации.


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

Формы глаголов в английском языке

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

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

Каждое из 16 времен (каждое время – в двух вариантах: действительный и страдательный залог) может быть охарактеризовано наличием или отсутствием каждого из следующих 5 признаков.

Читать далее

Спортивное программирование — социальный лифт в IT. Как его использовать школьнику, родителям школьника и разработчику?

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

С какого возраста можно обучать ребенка программированию и какой язык лучше выбрать? Как попасть на самые крутые IT-направления в лучшие вузы? Становятся ли дети разработчиков разработчиками? Как попасть на стажировку в Яндекс или на работу в Google?

Обо всем этом нам рассказывает Михаил Рубинчик — лидер и главный тренер по спортивному программированию в Уральском федеральном университете и основатель онлайн-школы по спортивному программированию SPGuide. Подробности под катом

Читать далее

Копнем поглубже: сравниваем популярные алгоритмы оптимизации с менее известными. Часть 2

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


Еще раз здравствуй, Хабр! Меня зовут Мария Белялова, и я занимаюсь data science в мобильном фоторедакторе Prequel. Кстати, именно в нём и обработана фотография из шапки поста.

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

В этой статье мы посмотрим, как они ведут себя на игрушечной задаче — распознавании цифр из датасета MNIST. В следующей части мы проверим эти алгоритмы в бою на реальной задаче из продакшена. Код для этой и предыдущей части находится здесь.
Читать дальше →

Парадокс Монти Холла не работает

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

Недавно на просторах интернета увидел отрывок из фильма "Двадцать одно". В этом отрывке говорится о том, что парадокс Монти Холла действительно работает!

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

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

Читать далее

Мозг, сенсорные системы и их моделирование

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

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

Читать далее

Показатели работы биометрических алгоритмов

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

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

(К/Ф "Служебный роман", режиссёр -- Э. Рязанов)

В предыдущей статье «Биометрия в платежах» я рассмотрел основные технологии, используемые для аутентификации и идентификации человека по лицу (face recognition). Я описал принципы работы алгоритмов нахождения лица на снимке, распознавания черт лица и создания биометрических шаблонов. В этой статье я остановлюсь подробнее на оценке качества работы решений по идентификации и аутентификации пользователя по лицу.

Погрузиться в чарующий мир

Эффективное геометрическое хеширование пространства признаков для быстрого точного поиска наиболее близких дескрипторов

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

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

Читать далее

Аппроксимация синуса: полиномы Чебышёва vs. ряды Маклорена

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

В комментариях к моей статье про быстрое вычисление синуса был задан вопрос: "А чем не устроило разложение в ряд Тейлора?"

Краткий ответ таков: хоть приближение при помощи рядов Тейлора (точнее - рядами Маклорена) и даёт меньшую ошибку при том же количестве вычислений, но оно не позволяет разбить аргумент на произвольное количество интервалов и тем самым увеличить точность вычислений.

Читать далее

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

Консистентно о Консенсусе

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

Здравствуйте, меня зовут Дмитрий Карловский. А вы на канале Core Dump, где мы берём различные темы из компьютерной науки и раскладываем их по полочкам.


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



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

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

К-распределение плотности вероятности. Единорог среди всех распределений

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

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

На практике такое распределение используется, как правило, довольно узкими специалистами. В основном при математическом моделировании работы радиолокационных станций (РЛС), а также радаров с синтезированной апертурой и то в определенных условиях. Аналитиками данных в повседневной жизни конечно же не используется. Хотя, возможно К-распределение может описывать какие-то процессы, кто знает, эта сторона вопроса требует дополнительного изучения. Предлагаю аналитикам данных над этим подумать, а также всем желающим.

Читать далее

Сжатие данных LZW

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

Если бы вы взглянули почти на любой файл данных в компьютере, просматривая символ за символом, то наверняка обратили бы внимание на множество повторяющихся элементов. LZW — это метод сжатия данных, который воспользовался этим повторением. Оригинальная версия метода была создана Лемпелем и Зивом в 1978 году (LZ78) и доработана Уэлчем в 1984 году, отсюда и аббревиатура LZW (Lempel, Ziv and Welch). Как и в любом адаптивном/динамическом методе сжатия, идея заключается в том, чтобы (1) начать с исходной модели, (2) читать данные по частям, (3) обновлять модель и кодировать данные по мере продвижения. LZW — алгоритм сжатия на основе "словаря".

Это означает, что вместо сведения в таблицу количества символов и построения деревьев (как при кодировании по Хаффману), LZW кодирует данные, обращаясь к словарю. Таким образом, чтобы закодировать подстроку, в выходной файл нужно записать только одно кодовое число, соответствующее индексу этой подстроки в словаре. Хотя LZW часто рассматривается в контексте сжатия текстовых файлов, его можно использовать для любого типа файлов. Однако, как правило, он лучше всего справляется с файлами где есть повторяющиеся подстроки, например, с текстовыми файлами.

Читать далее

Конференция Graph+AI Summit 2021 — ускорение аналитики и машинного обучения графовыми алгоритмами

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

5-19 сентября пройдёт конференция Graph+AI Summit 2021 для людей, не равнодушных к графовой аналитике и машинному обучению. Мероприятие будет проходить в смешанном формате онлайн и оффлайн, участие бесплатное, старт в 18:00 по МСК.

Организатором выступила компания TigerGraph, создатель одноименной Графовой БД и аналитической платформы, а в программе будут доклады от спикеров из различных компаний: Gartner, Dell Technologies, Mastercard, Intuit Corporatio, Optum, Mercury NZ и др.

Между 5 и 19 октября будут воршопы, примеры реализаций по индустриям (ФинТех, БиоТех, Медиа, Реклама и Ритейл), тренинги и сертификации.

Почему это интересно? Будущий Графовый язык запросов GQL - первый за 40 лет язык запросов к БД, который ISO комитет решил стандартизироваать после SQL. И как говорит Марк Бейер, вице-президент-аналитик Gartner “To Graph or Not to Graph? That is NOT the Question – You Will Graph.”

Для тех, кто сразу хочет присоединиться к одному из 10000 участников, ссылка на регистрацию. Под катом - пример использования для борьбы с мошенническими звонками на примере China Mobile.

Читать далее

Перплексия в языковых моделях

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

В этом материале я хочу сделать подробный обзор такого понятия, как «перплексия» («коэффициент неопределённости»), так как оно применяется в обработке текстов на естественном языке (Natural Language Processing, NLP). Я расскажу о двух подходах, которые обычно используются для определения этого понятия, и о тех идеях, которые лежат в основе этих подходов.

Читать далее

Заметки по выбору шифров для TLS 1.3

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

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

Em tpyrced

Букварь материалиста

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

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

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

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

Мир вокруг нас порой

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