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

Алгоритмы *

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

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

Формализация WF2M сети на примере алгоритма Кофе-машина и два ученых

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

Предлагается WF2M сеть (From workflow to mathematic) с формализмом, обеспечивающим расчет движения маркера по сети workflow [WF2M23]. WF2M сеть основана на ЕРС (Event-Driven Process Chain) – событийная цепочка процессов: последовательность операций, управляемых событиями.

Ранее [CCSWF24] был приведен сценарий «кофе-машина и ученый» - как демонстрация формализма алгебры процессов CCS. Текущий пример формализации WF2M сети дополнен взаимодействием второго учёного, т.е. реализует более сложный сценарий: Кофе-машина и два ученых. Настоящую статью можно считать, как апробацию [WF2M23] на сценарии [CCSWF24].

Читать далее

Обманчиво простой и интересный RSA

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

Недавно, читая книгу Real-World Cryptography, я узнала об атаке Блейхенбахера, иначе называемой атакой миллионом сообщений. Этот вид атаки Даниэль Блейхенбахер продемонстрировал в 1998 году, взломав RSA через функцию шифрования PKCS #1. В книге об этой атаке было сказано немного, поэтому я решила изучить её сама и в конечном итоге реализовать.

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

Вместо этого я решила реализовать RSA сама, чтобы иметь возможность развернуть слабую схему шифрования, позволяющую осуществить атаку Блейхенбахера. Пока что у меня готова реализация RSA и PKCS (уязвимой версии). На создание основы RSA ушло около часа, плюс несколько дней на отладку. И теперь она (кажется) работает. Вскоре, если звёзды сойдутся, можно будет развернуть саму атаку.
Читать дальше →

Визуализация алгоритмов поиска пути на Svelte: Практические заметки

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

Привет, Хабр! В этом посте делюсь опытом разработки на Svelte, демонстрируя это на моем пет-проекте.

Код проекта: GitHub
Лайв демо: ivan-sem.com

Читать далее

Часть 3. Представление вероятности безотказной работы системы в виде ряда Тейлора

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

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

Представление функции вероятности безотказной работы системы в виде ряда Тейлора является эффективным средством для проведения углубленных исследований надежности, безопасности и живучести сложных технических систем. Функция ВБРС представлена на основе к‑кратных совместных значи‑ мостей, учитывающих влияние ряда отказов элементов на систему в целом. На основе представления ВБРС в виде ряда Тейлора выведен ряд показателей важности («весовых коэффициентов»).

Кроме этого, еще в 1981 году И.А. Рябинин обозначил широкий класс объектов моделирования под названием структурно‑сложных систем, не ограничиваясь сложными техническими системами. Технология логико‑вероятностного моделирования применима для исследования разнообразных объектов, имеющих сложную структуру и организацию. При этом вероятность может быть не только безотказной работы, но и риска возникновения опасного состояния, а также иных показателей: степени принадлежности или предпочтений, например при оценки рисков реализации проектов, кредитования и тому подобное.

In the technology of logic‑probabilistic modeling, to assess the importance of element failures of complex technical systems (CTS), indicators of one, two‑fold and k‑fold significance are used. This article presents the probability of the system's failure‑free operation in the form of a Taylor series based on k‑fold joint significances.

Читать далее

Предсказать ошибку. Как методы оценки неопределенности помогают повышать качество seq2seq-моделей

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров1.8K

Всем привет! Меня зовут Артём Важенцев, я аспирант в Сколтехе и младший научный сотрудник AIRI. Наша группа занимается исследованием и разработкой новых методов оценивания неопределенности для языковых моделей. Этим летом мы опубликовали две статьи на ACL 2023

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

Читать далее

Алгоритмы. Определение последовательности на сырых данных, или восстановление после аварии

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

Представим что вы имеете доступ к образовательному ресурсу, где есть каталог курсов и уроков. В какой-то момент вы теряете часть данного каталога и у вас есть только ID единиц контента, наименование урока, а нумерации нет. Пишем свой велосипед.

Читать далее

Часть 2. Алгоритм расчета к-кратной совместной значимости в технологии логико-вероятностного моделирования

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

Algorithm for calculating k-fold joint significance in the logical-probabilistic modeling technology

Морозов В.И. , Morozov V.I.

В части 1 приведен вывод выражения к-кратной совместной значимости в технологии логико-вероятностного моделирования, которая находится по ссылке.

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

In the technology of logic-probabilistic modeling, to assess the importance of element failures of complex technical systems, indicators of one, two-fold and k-fold significance are used. This article provides algorithm for calculating the k-fold joint significance, which allow you to significantly reduce the amount of calculation when conducting research of the influence of a certain set of element failures on the complex technical systems.

Читать далее

Фильтр Блума – вероятностная структура данных для проверки принадлежности элемента множеству

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

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

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

Читать далее

Книга «Продвинутые алгоритмы и структуры данных»

Время на прочтение7 мин
Количество просмотров33K
image Привет, Хаброжители!

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

Вы постоянно сталкиваетесь с бесчисленными проблемами программирования, которые поначалу кажутся запутанными, трудными или нерешаемыми. Не отчаивайтесь! Многие из “новых” проблем уже имеют проверенные временем решения. Эффективные подходы к решению широкого спектра сложных задач кодирования легко адаптировать и применять в собственных приложениях, а при необходимости создавать собственные структуры данных под конкретную задачу. Сбалансированное сочетание классических, продвинутых и новых алгоритмов обновит ваш инструментарий программирования, добавив в него новые перспективы и практические методы.
Читать дальше →

Алгебра музыкального текста

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

Пшеничников С.Б., Сотникова Т.В.

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

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

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

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

Для применения алгебры текста к музыкальным знаковым последовательностям нет необходимости использования нотоносца из пяти линий. То, что полезно и привычно для музыкантов, - для применения алгебры невыносимо вредно. Целесообразным представляется использование нотоносца-«нитка» - это нотный стан из одной линии.  В этом случае нотный текст становится похож на вербальный текст.

Для решения задачи требуется найти преобразование канонического нотного текста в «нитку». И как всегда для нового применения алгебры необходима правильная координатизация предметной области. В данной случае каждому используемому нотному знаку  и символу современной нотной нотации требуется поставить в соответствие свой порядковый номер (натуральное число).

Читать далее

Обратный маятник простым PID-регулятором

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

Как-то давно для выставки делал небольшую инсталляцию. Привёрнутый маятник. Вот где пришлось настраивать ПИД-регуляторы. Маятник удерживается в верхнем положении двумя ПИД регуляторами, соединенными каскадом. Первый быстрый (настоящий ПИД, т.к. пришлось настраивать дифференциальную составляющую) реагирует на угол отклонения маятника от вертикали и подыгрывает положением точки подвеса. Но, поскольку ход точки подвеса ограничен, то второй медленный ПИ-регулятор стремит точку подвеса к центру рельсов. Выход ПИ – регулятора является уставкой угла для первого быстрого ПИД. Действительно, стандартных функциональных блоков - ПИД регуляторов часто бывает вполне достаточно для стабилизации даже очень неустойчивых систем. Но, например, в этом проекте есть больше математики: "Все, что вы хотели знать об обратном маятнике"

Читать далее

Сферический коммивояжёр в вакууме и в реальной жизни

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

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

Читать далее

Часть 1. Вывод выражения к-кратной совместной значимости в технологии логико-вероятностного моделирования

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

В 2000-2001 годах в журналах издательства "Атомная энергия" были опубликованы две мои статьи, посвященные применению технологии логико-вероятностного моделирования (ТЛВМ) в интересах технического диагностирования сложных технических объектов, к которым отностся атомные электростанции:
1. Приоритетные направления внедрения диагностического обеспечения на АЭС. Атомная энергия, т.88, вып.4, апрель 2000 года, ссылка: http://morozovweb.beget.tech/2020/07/31/прио

2. Отдельные аспекты технической диагностики АЭС. Атомная энергия, т.91, вып.1, июль 2001 года, ссылка http://morozovweb.beget.tech/2020/07/31/отдельные-аспекты-
Эти статьи размещены в разных библитотеках, включая электронную библиотеку Минатома, e-library. Также издательство Springer перевело их на английский язык и реализует электронную версию pdf формате.
В этих работах представлены основные положения методологии ранжирования элементов технической системы по важности в интересах диагностического оснащения сложных технических объектов и математическая модель расчета технико-экономического эффекта от внедрения диагностического обеспечения, учитывающая весь комплекс составляющих, включая, что особенно важно для объектов атомной энергетики, учет структуры и организации системы.

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

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

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

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

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

Читать далее

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

Компилятор за выходные: лексер и парсер

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

Продолжаем разговор. На прошлой неделе я пообещал за выходные написать компилятор из простенького мной придуманного языка в ассемблер. В назначенное время уложился, и компилятор даже вроде работает, см. заглавную картинку. Теперь дело за малым, потихоньку причесать и стройно изложить. В прошлый раз я рассказал про синтаксические деревья и показал простейший транслятор в питон (по факту, обычный pretty print дерева). Но если в предыдущей статье я синтаксическое дерево строил вручную, то сегодня всё же будем автоматизировать процесс.

Сегодня я публикую две статьи разом, поскольку по дороге меня довольно круто занесло, и получился небольшой спин-офф. Очень рекомендую к прочтению :)

Ну а тема этой статьи - автоматическое построение синтаксического дерева aka лексер и парсер.

Читать далее

Разбираем самый маленький PNG в мире

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

Самый миниатюрный PNG в мире весит 67 байт и представляет собой один чёрный пиксель. Выше вы видите его в 200-кратном увеличении.

Красота, не так ли?

Состоит этот файл из четырёх частей:

  1. Сигнатура PNG, одинаковая во всех файлах этого формата: 8 байт.
  2. Метаданные изображения, включая его размеры: 25 байт.
  3. Данные пикселя: 22 байта.
  4. Маркер «конец изображения»: 12 байт.

Далее я опишу этот файл подробнее и постараюсь объяснить принцип работы формата PNG.

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

Отсечение и поиск / Prune and search

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

Решал задачу на LeetCode (Word Search) и наткнулся на незнакомый мне термин "search pruning", либо "Prune and search". Немного погуглив, узнал, что это метод решения задач оптимизации, на Википедии есть соответствующая статья (ссылка). На русском языке я не нашел такого термина, только некоторые работы на studfile и автоматический корявый перевод на Wiki5, из-за чего решил перевести статью на Википедии, которую привел выше и немного пояснить, что этот термин означает. Перевод любительский и вольный, если будут ошибки, то поправьте, пожалуйста. Перевожу для ссылки из своего расширения LeetCode to Russian и для тех, кто наткнется на такой термин и решит погуглить его на русском языке. Если в русском языке существует похожее определение, но называется по-другому, то прошу написать в комментариях, чтобы я поправил статью.

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

Читать далее

Недостатки и предложения по улучшению метода анализа иерархий

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

В данной статье выполнен обзор метода анализа иерархий (МАИ) Т.Саати в части формирования экспертами матриц парных сравнений, выявлены недостатки и разработаны рекомендации по совершенствованию МАИ.

Один из недостатков МАИ - возможное существенное отклонение элементов матрицы парных сравнений, установленных экспертами, от своих рангов, что не предусматривается МАИ и привело Т. Саати к ошибке в демонстрационном примере выбора варианта покупки дома, которую он исправил в 2015 году. Метод парных сравнений основан на так называемой шкале относительной важности, имеющей серьезные противоречия в практической реализации конкретных проектов, закономерно приводящиеся к ошибкам, что продемонстрировано на конкретном примере. Элементы матриц парных сравнений (МПС), заполненные экспертами и вычисленные через промежуточные парные отношения соседних элементов МПС всегда будут отличаться, что является противоречием.

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

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

This article analyses T. Saaty's Analytic hierarchy process (AHP) in the part of formation of pairwise comparison matrices by experts, identifies shortcomings and develops recommendations to improve AHP.

Читать далее

Как «подправить» неправильные судоку. Алгоритм решения судоку, использующий систему ограничений

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

Разобран алгоритм, ориентированный главным образом на решение неправильных судоку (9х9), и на примерах показано, как можно их «подправить».
Правильное судоку имеет единственное решение, которое печатается, например, в газетах в виде одной заполненной цифрами таблицы. Но многие генераторы судоку из интернета, да и газеты часто приводят головоломки судоку с одним (но вовсе не единственным) ответом на судоку. Получить нетривиальное правильное судоку непросто. Поэтому уместно, взяв за основу опубликованные неправильные судоку, «подправить» их, дополнив некоторыми условиями, и получить подправленные судоку с одним решением, которое можно представить (и напечатать) в виде одной таблицы как ответ на судоку.

Читать далее

Чтение Micro QR Code версии М3 (кириллица, второй тип библиотек)

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

Данная публикация является продолжением первой части кодирования кириллицы в микрокодах версии М3.

 Этап 5. Применение полученного алгоритма для M3 АБВГ (второй тип библиотек в сети Интернет)

 Так как аналогично предыдущему этапу для M3 АБВГ заготовлена битовая последовательность также заранее, а основной алгоритм очень схож (необходимо будет поменять только маску и функцию комбинации итогового кода), то воспользуемся данным обстоятельством и просто продублируем страницу М3 АБВГДЕ на M3 АБВГ с учетом замены исходного микрокода.

Читать далее

Векторизация изображений. Как создать алгоритм поиска похожих изображений на Python

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

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

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

В мире есть много вещей, которые интуитивно понятны и очевидны для нас. Например, если перед нами два похожих цветка, мы можем определить их принадлежность одному виду, даже не зная названий этих растений. Этот навык позволяет нам распознавать объекты и определять их в группы. Разумеется, подобные алгоритмы уже давно существуют в современных поисковиках Google, Яндекс и прочих. Но что, если вы проектируете обособленную систему с собственной базой изображений одной или нескольких конкретных тематик и вам необходим функционал поиска похожих изображений?

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

Читать далее

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