
Я часто вижу в интернете дискуссии, а должен ли True-разработчик знать теорию алгоритмов и стандартные алгоритмы. Про алгоритмические собеседования вообще молчу - мнения на этот счет у всех разные, оно и понятно.
Я часто вижу в интернете дискуссии, а должен ли True-разработчик знать теорию алгоритмов и стандартные алгоритмы. Про алгоритмические собеседования вообще молчу - мнения на этот счет у всех разные, оно и понятно.
Угроза кибератак с применением квантовых компьютеров — это хороший пример ситуации, когда в салоне первого класса ещё играет приятная музыка и разносят напитки, но корабль уже плывет к айсбергу в нужном направлении.
Google, Amazon, Microsoft и другие крупные игроки активно вкладываются в исследования и пилотные проекты в этой области уже сейчас. Например, тот же Cloudflare уже пилотировал постквантовую криптографию для TLS 1.3 в некоторых зонах. Хотя бы просто потому, что дамп зашифрованного трафика, где для обмена симметричным ключом использовался алгоритм RSA, будет оставаться зашифрованным ровно до того момента, когда у атакующего появится возможность запустить алгоритм Шора на квантовом компьютере с достаточным количеством кубитов. Поэтому, несмотря на то, что подобных квантовых вычислительных комплексов ещё не существует, квантово-устойчивые алгоритмы в критических областях нужно применять уже сейчас. Скорее всего, одними из первых практические атаки смогут осуществить спецслужбы крупных стран. В разработку квантовых компьютеров вкладываются не менее активно.
Сегодня я расскажу, что происходит в области разработки решений по кибербезопасности на основе квантово-устойчивых алгоритмов шифрования. Газпромбанк с 2015 года активно участвует в развитии российских квантовых технологий. Мы ведем пилотные проекты по тестированию продуктов кибербезопасности на основе постквантовых алгоритмов совместно с компанией QApp. Это отечественный разработчик решений по кибербезопасности на основе квантово-устойчивых алгоритмов шифрования, единственный в стране, у кого есть готовые решения в этой области.
Так что будем обсуждать варианты атак на классическую криптографию, разные подходы в реализации постквантовой криптографии и текущий конкурс NIST, где отбираются лучшие постквантовые алгоритмы.
Читать полностью »
В одной из предыдущих статей (Синаптические веса в нейронных сетях – просто и доступно) мы разбирались со смыслом синаптических весов на примере определения цифры на 13-ти сегментном индикаторе и подбирали веса "вручную", путем логических рассуждений.
С этой статьи приступаем к автоматическому подбору и рассматриваем один из наиболее простых способов – циклический перебор.
Артём Мурадов — Senior Software Development Engineer в Amazon и автор курса «Алгоритмы: roadmap для работы и собеседований». Уже больше 14 лет он использует алгоритмы для решения рабочих задач и прохождения собеседований. С помощью алгоритмов он повышал производительность приложений, побеждал в спорах с коллегами и ускорял исследование ДНК. Даже попасть в Amazon ему помогло знание алгоритмов.
Мы пообщались с Артёмом, чтобы узнать о его опыте. Он подробно рассказал, как изучал алгоритмы и как они помогали ему в работе.
Представляем вашему вниманию чрезвычайно простой алгоритм сортировки. Может показаться, что он очевидно ошибочен, но мы докажем, что на самом деле он корректен. Мы сравним его с другими простыми алгоритмами сортировки и проанализируем некоторые его любопытные свойства.
Большинству из нас хорошо известны такие простые алгоритмы сортировки, как сортировка пузырьком. По крайней мере, нам так кажется. Оказывались ли вы когда-нибудь в ситуации, когда вам нужно записать псевдокод сортировки пузырьком, и вы осознавали, что он не так прост, как кажется, и с первого раза правильно написать его не удаётся? Нужно внимательно следить за тем, чтобы индексы циклов начинались и заканчивались нужными значениями и не выходили за границы, а также правильно обрабатывать флаговые переменные. Разве не было бы здорово иметь простой алгоритм без всей этой возни? Ниже представлен такой алгоритм, сортирующий массив A из n элементов в неубывающем порядке. Для простоты доказательства массив начинается с 1, то есть имеет элементы A[1],..., A[n].
Алгоритм 1 ICan’tBelieveItCanSort(A[1..n]):
for i = 1 to n do
for j = 1 to n do
if A[i] < A[j] then
swap A[i] and A[j]
Вот, собственно, и всё. Он просто обходит в цикле каждую пару значений (i, j) стандартным способом из двойного цикла for, выполняет сравнение и обмен значениями. Разве можно придумать что-то ещё более простое? Возможно первой реакцией увидевшего этот алгоритм будет что-то типа «это не может быть верно» или «знак неравенства направлен в другую сторону, да и индексы цикла указаны неверно». Но нет, он действительно правильно сортирует в возрастающем порядке.Читать полностью »
В данной статье для реализации алгоритма будут рассмотрены:
Система хранения графа на основе List<>
Сортировка рёбер графа по весу
Система непересекающихся множеств
Алгоритм Краскала необходим для нахождения минимального остовного дерева графа.
Если прочитав предложение выше вы невольно задались этим вопросом, то вам следует изучить пару книг по теории графов информацию, представленную в этом блоке.
Данная статья является продолжением предыдущей статьи о распознавании простых многоугольников по нарисованной линии. В данной части будут рассмотрены алгоритмы распознавания эллипсов и алгоритм распознавания невыпуклых многоугольников.
Вам нравится изображение выше? А насколько? Что такое «привлекательность изображения» и как она раскладывается в математические формулы? Можно ли алгоритмически определить, какое из двух изображений больше понравится людям? А можно ли это запатентовать?
Некоторое время назад я рассказывал о программном комплексе для выявления скрытого параллелизма в произвольном алгоритме и технологиях его, параллелизма, рационального использовании (https://habr.com/ru/post/530078/). Одним из компонентов этого комплекса является т.н. “универсальный вычислитель”, выполненный в соответствии с архитектурой Data-Flow (далее DF, пото́ковый вычислитель, описание здесь https://habr.com/ru/post/534722/).
Выясняем, как и откуда можно получить электронную подпись на примере криптосистемы RSA.
Введение
Определения и обозначения
Описание криптосистемы RSA
Асимметричные криптографические системы
Генерация ключей
Шифрование и дешифрование
Получение подписи сообщения по RSA
Электронная подпись документов
Заключение