Рубрика «алгоритм» - 2

Самый простой (и неожиданный) алгоритм сортировки? - 1

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

1. Алгоритм

Большинству из нас хорошо известны такие простые алгоритмы сортировки, как сортировка пузырьком. По крайней мере, нам так кажется. Оказывались ли вы когда-нибудь в ситуации, когда вам нужно записать псевдокод сортировки пузырьком, и вы осознавали, что он не так прост, как кажется, и с первого раза правильно написать его не удаётся? Нужно внимательно следить за тем, чтобы индексы циклов начинались и заканчивались нужными значениями и не выходили за границы, а также правильно обрабатывать флаговые переменные. Разве не было бы здорово иметь простой алгоритм без всей этой возни? Ниже представлен такой алгоритм, сортирующий массив 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, выполняет сравнение и обмен значениями. Разве можно придумать что-то ещё более простое? Возможно первой реакцией увидевшего этот алгоритм будет что-то типа «это не может быть верно» или «знак неравенства направлен в другую сторону, да и индексы цикла указаны неверно». Но нет, он действительно правильно сортирует в возрастающем порядке.Читать полностью »

В данной статье для реализации алгоритма будут рассмотрены:

  1. Система хранения графа на основе List<>

  2. Сортировка рёбер графа по весу

  3. Система непересекающихся множеств


Алгоритм Краскала необходим для нахождения минимального остовного дерева графа.

О чём речь?

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

Читать полностью »

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


Оглавление

Получение патента на свой алгоритм: личный опыт - 1

Вам нравится изображение выше? А насколько? Что такое «привлекательность изображения» и как она раскладывается в математические формулы? Можно ли алгоритмически определить, какое из двух изображений больше понравится людям? А можно ли это запатентовать?

Читать полностью »

Некоторое время назад я рассказывал о программном комплексе для выявления скрытого параллелизма в произвольном алгоритме и технологиях его, параллелизма, рационального использовании (https://habr.com/ru/post/530078/). Одним из компонентов этого комплекса является т.н. “универсальный вычислитель”, выполненный в соответствии с архитектурой Data-Flow (далее DF, пото́ковый вычислитель, описание здесь https://habr.com/ru/post/534722/).

Читать полностью »

Выясняем, как и откуда можно получить электронную подпись на примере криптосистемы RSA.

RSA: от простых чисел до электронной подписи - 1
Содержание
  1. Введение

  2. Определения и обозначения

  3. Описание криптосистемы RSA

    1. Асимметричные криптографические системы

    2. Генерация ключей

    3. Шифрование и дешифрование

    4. Получение подписи сообщения по RSA

  4. Электронная подпись документов

  5. Заключение

Читать полностью »

«Привет, мир»: разбираем каждый шаг хэш-алгоритма SHA-256 - 1

SHA-2 (Secure Hash Algorithm), в семейство которого входит SHA-256, — это один самых известных и часто используемых алгоритмов хэширования. В тексте подробно покажем каждый шаг работы этого алгоритма на реальном примере. SHA-2 отличается безопасностью (его тяжелее взломать, чем SHA-1) и скоростью.
Читать полностью »

Вступление

Эта статья описывает стабильный нерекурсивный адаптивный алгоритм сортировки слиянием под названием quadsort.

Четверной обмен

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

    if (val[0] > val[1])
    {
        tmp[0] = val[0];
        val[0] = val[1];
        val[1] = tmp[0];
    }

В четверном обмене происходит сортировка с помощью четырёх подменных переменных (своп). На первом этапе четыре переменные частично сортируются в четыре своп-переменные, на втором этапе они полностью сортируются обратно в четыре исходные переменные.

Алгоритм сортировки quadsort - 1
Этот процесс показан на диаграмме выше.
Читать полностью »

Идём в глубь острова сокровищ с названием "Алгоритм".

Title

Читать полностью »

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

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

Как мы забрали у человека сито и помогли мельнице - 1

В 1949 году советский пилот-геологоразведчик Михаил Сургутанов пролетал над одной из территорий Казахстана (урочище Сарбай) и, взглянув на компас, заметил, что стрелка стала игнорировать Север и зажила своей жизнью. Да, как в кино при обнаружении каких-то магнитных аномалий.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js