Методы оптимизации. Метод ветвей и границ. Методы оптимизации полного перебора

Скачать на Телефон 23.02.2019
Скачать на Телефон

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

Рассмотрим пару примеров применения метода перебора в решении различных задач.

Перебор последовательности

Допустим, нам встретилась последовательность цифр 141526418, и мы знаем, что в ней зашифровано латинскими буквами некое слово. Какой самый простой способ зашифровать слово? Конечно же, использовать шифр замены ! Число цифр нечётное, значит хотя бы одна буква закодирована всего одной цифрой. Но как отделить буквы первой десятки от последующих, кодируемых двумя цифрами? 14 - это AD или N? Вот тут-то нам и пригодится метод перебора. Переберём все комбинации из одной-двух цифр из диапазона .

В последовательности 141526418 можно выделить следующие удовлетворяющие нашим условиям комбинации: 1,2,4,5,6,8,14,15,18,26. Эти числа соответствуют буквам A,B,D,E,F,H,N,O,R,Z. Комбинации 41, 52 и 64 нам не подходят, так как в латинице всего 26 букв.

Перебирать будем так: сначала возьмём самую развёрнутую последовательность, где все буквы из первого десятка, а затем будем по очереди увеличивать используемые числа, то есть заменять последовательности 1-4 на 14, 1-5 на 15, 1-8 на 18, 2-6 на 26, перебирая все возможные комбинации.

    1-4-1-5-2-6-4-1-8 = ADAEBFDAH

    1-4-1-5-2-6-4-18 = ADAEBFDR

    1-4-1-5-26-4-1-8 = ADAEZDAH

    1-4-1-5-26-4-18 = ADAEZDR

    1-4-15-2-6-4-1-8 = ADOBFDAH

    1-4-15-2-6-4-18 = ADOBFDR

    1-4-15-26-4-1-8 = ADOZDAH

    1-4-15-26-4-18 = ADOZDR

    14-1-5-2-6-4-1-8 = NAEBFDAH

    14-1-5-2-6-4-18 = NAEBFDR

    14-1-5-26-4-1-8 = NAEZDAH

    14-1-5-26-4-18 = NAEZDR

    14-15-2-6-4-1-8 = NOBFDAH

    14-15-2-6-4-18 = NOBFDR

    14-15-26-4-1-8 = NOZDAH

    14-15-26-4-18 = NOZDR

Итого получили 16 вариантов. Единственное читаемое слово NOZDR (кому читаемое, а кому и нет ), получилось в самом конце. Оно и будет ответом. Вот если бы в самом начале была подсказка, что из последовательности 141526418 должно получиться 5 букв, то тогда задача решится однозначно. И перебор будет не нужен, потому что разбить на 5 букв последовательность 141526418 можно только одним единственным способом. Но такой подсказки не было, и метод перебора пригодился.

Перебор решений при недостатке условий

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

Учитель на уроке математики задал ученикам такую задачу: «У матери три дочери. Произведение возрастов дочерей = 40, сумма возрастов равна числу учеников в классе. Каков возраст каждой из дочерей?» Ну, ученики по-быстрому посчитали, сколько их всего в классе, и стали решать задачу. Решали-решали… Не решается. Попросили у учителя подсказку. Учитель подумал и говорит: «А, точно! У младшенькой голубенькие глазки!» . Ученики обрадовались, и решили задачу. А теперь вопрос вам: сколько же лет каждой из дочерей?

Если решать задачу в лоб (AxBxC=40, A+B+C=D, голубенькие глазки), то сразу наталкиваешься на кучу неизвестных и недостаток условий. 4 неизвестных, два уравнения и ещё голубенькие глазки!!! Как известно, сколько неизвестных, столько должно быть и независимых условий. У нас в задаче два нормальных условия и одно непонятное. Как же её решать?

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

    1x1x40=40, 1+1+40=42

    1x2x20=40, 1+2+20=23

    1x4x10=40, 1+4+10=15

    1x5x8=40, 1+5+8=14

    2x2x10=40, 2+2+10=14

    2x4x5=40, 2+4+5=11

Если бы учеников в классе было 42, 23, 15 или 11, то они бы сразу решили задачу. Но у них возникло затруднение - их было 14, и они никак не могли выбрать, какой же из вариантов 1-5-8 или 2-2-10 подходит. Но когда учитель сказал про голубые глазки, им это помогло определиться. Голубые глазки были у младшенькой, то есть была самая младшая дочь, а в варианте 2-2-10 младшеньких две. Значит, нам подходит только четвёртый вариант 1-5-8.

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

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


Рис. 10.8.

Как мы уже говорили выше, данный метод используется для решения одномерных задач. Иногда он применяется также для решения двумерных, реже трехмерных задач. Однако для задач большей размерности он практически непригоден из-за слишком большого времени, необходимого для проведения расчетов. Действительно, предположим, что целевая функция зависит от пяти переменных, а область определения G является пятимерным кубом, каждую сторону которого при построении сетки мы делим на 40 частей. Тогда общее число узлов сетки будет равно . Пусть вычисление значения функции в одной точке требует 1000 арифметических операций (это немного для функции пяти переменных). В таком случае общее число операций составит 10 11 . Если в нашем распоряжении имеется ЭВМ с быстродействием 1 млн. операций в секунду, то для решения задачи с помощью данного метода потребуется 10 5 секунд, что превышает сутки непрерывной работы. Добавление еще одной независимой переменной увеличит это время в 40 раз. Проведенная оценка показывает, что для больших задач оптимизации метод сплошного перебора непригоден. Иногда сплошной перебор заменяют случайным поиском. В этом случае точки сетки просматриваются не подряд, а в случайном порядке. В результате поиск наименьшего значения целевой функции существенно ускоряется, но теряет свою надежность.

4. Метод покоординатного спуска

Рассмотрим функцию двух переменных. Ее линии постоянного уровня представлены на рис. 10.9 , а минимум лежит в точке . (Напомним, что линией постоянного уровня называется кривая в двумерном сечении пространства параметров (в данном случае в плоскости (х1, х2) , значение функции на которой - константа). Простейшим методом поиска является метод покоординатного спуска . Из точки А мы производим поиск минимума вдоль направления оси х 1 и, таким образом, находим точку B , в которой касательная к линии постоянного уровня параллельна оси x 1 . Затем, производя поиск из точки B в направлении оси x 2 , получаем точку C , производя поиск параллельно оси x 1 , получаем точку D , и т.д. Таким образом, мы приходим к оптимальной точке. Любой из одномерных методов, описанных в предыдущей главе, может быть использован здесь для поиска вдоль оси. Очевидным образом эту идею можно применить для функций n переменных.


Рис. 10.9.

Рассмотрим данный метод более детально на примере некоторой целевой функции.

Пусть нужно найти наименьшее значение целевой функции u=f(M)=f(x 1 ,x 2 ,...,x n) . Здесь через M обозначена точка n -мерного пространства с координатами x 1 ,x 2 ,...,x n:M=(x 1 ,x 2 ,...,x n) . Выберем какую-нибудь начальную точку и рассмотрим функцию f при фиксированных значениях всех переменных, кроме первой: . Тогда она превратится в функцию одной переменной x 1 . Изменяя эту переменную, будем двигаться от начальной точки в сторону убывания функции, пока не дойдем до ее минимума при , после которого она начинает возрастать. Точку с координатами обозначим через M 1 , при этом .

Фиксируем теперь переменные: и рассмотрим функцию f как функцию одной переменной . Изменяя x 2 , будем опять двигаться от начального значения в сторону убывания функции, пока не дойдем до минимума при . Точку с координатами обозначим через M 2 , при этом . Проведем такую же минимизацию целевой функции по переменным x 3 ,x 4 ,...,x n . Дойдя до переменной x n , снова вернемся к x 1 и продолжим процесс.

Эта процедура вполне оправдывает название метода. С ее помощью мы построим последовательность точек M 0 ,M 1 ,M 2 ,.. . которой соответствует монотонная последовательность значений функции Обрывая ее на некотором шаге k , можно приближенно принять значение функции f(M k) за ее наименьшее значение в рассматриваемой области (рис. 10.10).

Отметим, что данный метод сводит задачу поиска наименьшего значения функции нескольких переменных к многократному решению одномерных задач оптимизации. Если целевая функция f(x 1 ,x 2 ,\ldots,x n задана явной формулой и является дифференцируемой, то мы можем вычислить ее частные производные и использовать их для определения направления убывания функции по каждой переменной и поиска соответствующих одномерных минимумов.

На рис. 10.10. изображены линии уровня некоторой функции двух переменных u=f(x,y) . Вдоль этих линий функция сохраняет постоянные значения, равные 1, 3, 5, 7, 9. Показана траектория поиска ее наименьшего значения, которое достигается в точке O , с помощью

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

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

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

3. Третий этап - реализация построенного алгоритма модели на ЭВМ.

4. Исследование результатов численного моделирования, оценка их адекватности, и общей пригодности модели для использования.

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

Методы оптимизации

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

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

За критерий оптимальности принимается некоторая функция F(x) , называемая целевой функцией. Целевая функция аналитически выражает зависимость оптимизируемого показателя от некоторых параметров x, значения которых можно изменять, называемых управляемыми параметрами

хi , i = 1,2,...,n.

Управляемые параметры xi являются независимыми друг от друга и в процессе оптимизации могут изменяться в известных пределах (допустимой области) Dx . Аналитически область допустимых значений может задаваться аналитически в виде набора функций

Ψ k (x 1 ,...,x n )= 0

В общем виде математическую задачу оптимизации можно сформулировать следующим образом:

Минимизировать (максимизировать) целевую функцию с учетом ограничений на управляемые переменные.

Под минимизацией (максимизацией) функции n переменных F(x)=F(x1 , ... ,xn ) на заданном множестве Dx понимается определение глобальног минимума (максимума) этой функции на заданном множестве Dx .

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

Максимизация целевой функции (F(x) -> max) эквивалента минимизации противоположной величины (−F(x) -> min), поэтому можно рассматривать только задачи минимизации.

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

Численные методы решения задач одномерной оптимизации

Задачи одномерной минимизации представляют собой простейшую математическую модель оптимизации, в которой целевая функция зависит от одной переменной, а допустимым множеством является отрезок вещественной оси:

F(x) -> min , x принадлежит .

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

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

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

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

Метод перебора

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

Разобьем отрезок на n равных частей точками деления:

xi =A+i·(B − A)/n, i=0,...n

Вычислив значения F(x) в точках xi , путем сравнения найдем точку xm , где m - это число от 0 до n, такую, что

F(xm ) = min F(xi ) для всех i от 0 до n.

Погрешность определения точки минимума xm функции F(x) методом перебора не превосходит величины ε = (B − A)/n.

Метод дихотомии

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

Суть метода в следующем. Пусть целевая функция F(х) задана на интервале A≤ x ≤ B. Отрезок на каждом этапе делится пополам. За первые две поиско-

чения целевой функции F(x) в точках x1 , x2 уточняется направление поиска. Если отыскивается экстремум-минимум и F(х1 ) < F(х2 ), то смещается правая граница первоначального интервала неопределенности , т.е. полагается В = x2 , если F(х1 ) > F(x2 ) , то смещается левая граница А = x1 . Если новый интервал неопределенности [В−А] больше заданной погрешности решения ε, то де-

ление пополам продолжается. Если B−A ≤ ε, то решение получено x* =A + 2 B , F(x) = F(x*).

Метод Фибоначчи

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

Nn =Nn-1 +Nn-2 , при N1 =N2 =1.

Первоначальный интервал неопределенности [В−А] принимается пропорциональным некоторому числу Фибоначчи Fn , определенному в зависимости

Основанные на методе полного перебора, являются самыми универсальными, но и самыми долгими.

Энциклопедичный YouTube

    1 / 5

    ✪ Перебор. Жадные алгоритмы: Полный перебор с использованием циклов. Центр онлайн-обучения «Фоксфорд»

    ✪ #82. Арифметическая прогрессия, делимость и полный перебор вариантов! Теория чисел на ЕГЭ

    ✪ Алгоритмы C++ Перебор (часть 1)

    ✪ #84. Задача про два взвода солдат! Строгое и понятное решение. ЕГЭ по математике (профиль)

    ✪ Перебор. Жадные алгоритмы: Задача о размене монет. Центр онлайн-обучения «Фоксфорд»

    Субтитры

Метод исчерпывания

Терминология

В английском языке рассматриваемый в данной статье термин «brute-force » обычно относится к классу хакерских атак . При этом более общее понятие, математический метод исчерпывания всевозможных вариантов для нахождения решения задачи, соответствует термину «Proof by exhaustion ».

Описание

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

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

Характерные задачи, решаемые методом полного перебора

Хотя полный перебор в большинстве прикладных задач (особенно не связанных со взломом шифров) на практике не применяется, есть ряд исключений. В частности, когда полный перебор всё же оказывается оптимальным, либо представляет собой начальный этап в разработке алгоритма, его использование оправдано. Примером оптимальности полного перебора является алгоритм оценки времени вычисления цепочечных произведений матриц, который не удаётся ускорить по сравнению с алгоритмом, основанным на методе «грубой силы» . Этот алгоритм используется для решения классической задачи динамического программирования - определения приоритетов вычислений матричных произведений следующего вида: A 1 A 2 A 3 ⋯ A n {\displaystyle A_{1}A_{2}A_{3}\cdots A_{n}} .

Пример использования полного перебора

Исходная задача заключается в вычислении данной цепочки (матричного произведения) за наименьшее время. Можно реализовать тривиальный последовательный алгоритм, вычисляющий искомое произведение. Поскольку матричное произведение является ассоциативной операцией , можно вычислить цепочечное произведение, произвольно выбирая пару элементов цепочки (A i A i + 1) , i = 1.. n − 1 {\displaystyle (A_{i}A_{i+1}),i=1..n-1} и заменяя её результирующей матрицей A i 1: A i 1 = (A i A i + 1) {\displaystyle A_{i}^{1}\colon A_{i}^{1}=(A_{i}A_{i+1})} . Если повторять описанную процедуру n − 1 {\displaystyle n-1} раз, то оставшаяся результирующая матрица A k n − 1 {\displaystyle A_{k}^{n-1}} и будет ответом: A k n − 1 = (A k n − 2 A k + 1 n − 2) = … = A 1 A 2 A 3 ⋯ A n , k = 1.. n − 1 {\displaystyle A_{k}^{n-1}=(A_{k}^{n-2}A_{k+1}^{n-2})=\ldots =A_{1}A_{2}A_{3}\cdots A_{n},k=1..n-1} . Эта формула может быть проиллюстрирована следующим образом. Рассмотрим матричную цепочку: ⟨ A 1 , A 2 , A 3 , A 4 ⟩ {\displaystyle \left\langle A_{1},A_{2},A_{3},A_{4}\right\rangle } . Существуют следующие 5 способов вычислить соответствующее этой цепочке произведение A 1 A 2 A 3 A 4 {\displaystyle A_{1}A_{2}A_{3}A_{4}} :

(A 1 (A 2 (A 3 A 4))) , {\displaystyle {\color {Violet}(}A_{1}{\color {BurntOrange}(}A_{2}{\color {BrickRed}(}A_{3}A_{4}{\color {BrickRed})}{\color {BurntOrange})}{\color {Violet})},} (A 1 ((A 2 A 3) A 4)) , {\displaystyle {\color {Violet}(}A_{1}{\color {BurntOrange}(}{\color {BrickRed}(}A_{2}A_{3}{\color {BrickRed})}A_{4}{\color {BurntOrange})}{\color {Violet})},} ((A 1 A 2) (A 3 A 4)) , {\displaystyle {\color {Violet}(}{\color {BrickRed}(}A_{1}A_{2}{\color {BrickRed})}{\color {BurntOrange}(}A_{3}A_{4}{\color {BurntOrange})}{\color {Violet})},} ((A 1 (A 2 A 3)) A 4) , {\displaystyle {\color {Violet}(}{\color {BurntOrange}(}A_{1}{\color {BrickRed}(}A_{2}A_{3}{\color {BrickRed})}{\color {BurntOrange})}A_{4}{\color {Violet})},} (((A 1 A 2) A 3) A 4) . {\displaystyle {\color {Violet}(}{\color {BurntOrange}(}{\color {BrickRed}(}A_{1}A_{2}{\color {BrickRed})}A_{3}{\color {BurntOrange})}A_{4}{\color {Violet})}.}

Выбрав правильный порядок вычислений, можно добиться значительного ускорения вычислений. Чтобы убедиться в этом, рассмотрим простой пример цепочки из 3-х матриц. Положим, что их размеры равны соответственно 10 × 100 , 100 × 5 , 5 × 50 {\displaystyle 10\times 100,100\times 5,5\times 50} . Стандартный алгоритм перемножения двух матриц размерами p × q , q × r {\displaystyle p\times q,q\times r} требует время вычисления, пропорциональное числу p q r {\displaystyle pqr} (число вычисляемых скалярных произведений) . Следовательно, вычисляя цепочку в порядке ((A 1 A 2) A 3) {\displaystyle ((A_{1}A_{2})A_{3})} , получаем 10 ⋅ 100 ⋅ 5 = 5000 {\displaystyle 10\cdot 100\cdot 5=5000} скалярных произведений для вычисления (A 1 A 2) {\displaystyle (A_{1}A_{2})} , плюс дополнительно 10 ⋅ 5 ⋅ 50 = 2500 {\displaystyle 10\cdot 5\cdot 50=2500} скалярных произведений, чтобы вычислить второе матричное произведение. Общее число скалярных произведений: 7500. При ином выборе порядка вычислений получаем 100 ⋅ 5 ⋅ 50 = 25000 {\displaystyle 100\cdot 5\cdot 50=25000} плюс 10 ⋅ 100 ⋅ 50 = 50000 {\displaystyle 10\cdot 100\cdot 50=50000} скалярных произведений, то есть 75000 скалярных произведений .

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

Связь с концепцией «разделяй и властвуй»

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

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

По сравнению с другими примерами полного перебора, особенностью метода рекурсии является то, что конечное решение опирается не на одну-единственную тривиальную подсистему. В общем случае решение формируется на основании целого множества подсистем.

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

Атака методом «грубой силы»

Кол-во знаков Кол-во вариантов Стойкость Время перебора
1 36 5 бит менее секунды
2 1296 10 бит менее секунды
3 46 656 15 бит менее секунды
4 1 679 616 21 бит 17 секунд
5 60 466 176 26 бит 10 минут
6 2 176 782 336 31 бит 6 часов
7 78 364 164 096 36 бит 9 дней
8 2,821 109 9x10 12 41 бит 11 месяцев
9 1,015 599 5x10 14 46 бит 32 года
10 3,656 158 4x10 15 52 бита 1 162 года
11 1,316 217 0x10 17 58 бит 41 823 года
12 4,738 381 3x10 18 62 бита 1 505 615 лет

Таким образом, пароли длиной до 8 символов включительно в общем случае не являются надежными. Для современных компьютеров этот показатель гораздо выше. Так, 64 битный ключ(пароль) перебирается на современном компьютере примерно за 2 года и перебор легко может быть распределен между множеством компьютеров.

Средства проведения атаки

Современные персональные компьютеры позволяют взламывать пароли полным перебором вариантов с эффективностью, проиллюстрированной в таблице выше. Однако, при оптимизации brute force, основанной на параллельных вычислениях , эффективность атаки можно существенно повысить . При этом может потребоваться использование компьютера, адаптированного к многопоточным вычислениям . В последние годы широкое распространение получили вычислительные решения, использующие GPU , такие как Nvidia Tesla . С момента создания компанией Nvidia архитектуры CUDA в 2007 году, появилось множество решений (см., например, Cryptohaze Multiforcer , Pyrit), позволяющих проводить ускоренный подбор ключей благодаря использованию таких технологий, как CUDA, FireStream , OpenCL .

Устойчивость к атаке полного перебора

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

  1. повышение требований к ключам доступа от защищаемой информации;
  2. повышение надежности всех узлов системы безопасности.

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

Методы оптимизации полного перебора

Метод ветвей и границ

Распараллеливание вычислений

Одним из методов увеличения скорости подбора ключа является распараллеливание вычислений . Существует два подхода к распараллеливанию :

  • Первый подход - построение конвейера . Пусть алгоритм соотношения E k (x) = y {\displaystyle E_{k}\ (x)=y} можно представить в виде цепочки простейших действий (операций): O 1 , O 2 , . . . , O N {\displaystyle {O_{1}\ ,O_{2},...,O_{N}}} . Возьмём N {\displaystyle N\ } процессоров A 1 , A 2 , . . . , A N {\displaystyle {A_{1}\ ,A_{2},...,A_{N}}} , зададим их порядок и положим, что i {\displaystyle i\ } - ый процессор выполняет три одинаковые по времени операции: Тогда конвейер из N {\displaystyle N\ } последовательно соединённых, параллельно и синхронно работающих процессоров работает со скоростью v / 3 {\displaystyle v/3\ } , где v {\displaystyle v\ } - скорость выполнения одной операции одним процессором.
  • Второй подход состоит в том, что множество K {\displaystyle K\ } всех возможных ключей разбивается на непересекающиеся подмножества K 1 K 2 , . . . , K N {\displaystyle {K_{1}\,K_{2},...,K_{N}}} . Система из Q {\displaystyle Q\ } машин перебирает ключи так, что i {\displaystyle i\ } - ая машина осуществляет перебор ключей из множества K i , i = 1.. Q {\displaystyle K_{i}\ ,i=1..Q} . Система прекращает работу, если одна из машин нашла ключ. Самое трудное - это разделение ключевого множества. Но если каждый процессор начнёт вычисление с какого-то произвольного ключа, то время нахождения увеличится, а схема значительно упростится. Среднее число шагов в этом случае составляет | K | / N {\displaystyle |K|/N\ } , где | K | {\displaystyle |K|\ } - число элементов во множестве ключей, а N {\displaystyle N\ } - число процессоров.

Радужные таблицы

Предпосылки к появлению

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

Использование

Радужная таблица создается построением цепочек возможных паролей. Каждая цепочка начинается со случайного возможного пароля, затем подвергается действию хеш-функции и функции редукции. Данная функция преобразует результат хеш-функции в некоторый возможный пароль (например, если мы предполагаем, что пароль имеет длину 64 бита, то функцией редукции может быть взятие первых 64 бит хеша, побитовое сложение всех 64-битных блоков хеша и т. п.). Промежуточные пароли в цепочке отбрасываются и в таблицу записываются только первый и последний элементы цепочек. Создание таких таблиц требует больше времени, чем нужно для создания обычных таблиц поиска, но значительно меньше памяти (вплоть до сотен гигабайт, при объеме для обычных таблиц в N слов для радужных нужно всего порядка N 2/3) . При этом они требуют хоть и больше времени (по сравнению с обычными методами) на восстановление исходного пароля, но на практике более реализуемы (для построения обычной таблицы для 6-символьного пароля с байтовыми символами потребуется 256 6 = 281 474 976 710 656 блоков памяти, в то время как для радужной - всего 256 6·⅔ = 4 294 967 296 блоков).

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

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

Инциденты

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

Атака «Энигмы»

Изобретенная в 1918 году шифровальная машина, названная «Энигма», широко использовалось немецким военно-морским флотом начиная с 1929 года. В течение дальнейших нескольких лет система модифицировалась, а с 1930 года активно использовалась немецкой армией и правительством в процессе Второй мировой войны .

Первые перехваты сообщений, зашифрованных с кодом Энигмы относятся к 1926 году. Однако прочитать сообщения долгое время не могли. На протяжении всей Второй мировой шло противостояние между польскими и германскими криптографами. Поляки, получая очередной результат по взлому немецкой криптосистемы, сталкивались с новыми трудностями, которые привносили германские инженеры, постоянно модернизирующие систему «Энигма». Летом 1939 года , когда неизбежность вторжения в Польшу стала очевидна, бюро передало результаты своей работы английской и французской разведкам .

Дальнейшая работа по взлому была организована в Блетчли-парке . Основным инструментом криптоаналитиков стала дешифровальная машина «Бомба» . Её прототип был создан польскими математиками накануне Второй мировой войны для министерства обороны Польши. На основе этой разработки и при непосредственной поддержке её создателей в Англии был сконструирован более «продвинутый» агрегат.

Теоретическую часть работы выполнил Алан Матисон Тьюринг . Его работы по криптографическому анализу алгоритма, реализованного в шифровальной машине «Энигма », основывался на более раннем криптоанализе предыдущих версий этой машины, которые были выполнены в 1938 году польским криптоаналитиком Марианом Реевским . Принцип работы разработанного Тьюрингом дешифратора состоял в переборе возможных вариантов ключа шифра и попыток расшифровки текста, если была известна структура дешифруемого сообщения или часть открытого текста .

С современной точки зрения шифр «Энигмы» был не очень надёжным, но только сочетание этого фактора с наличием множества перехваченных сообщений, кодовых книг, донесений разведки, результатов усилий военных и даже террористических атак позволило «вскрыть» шифр .

Массовый взлом домашних сетей посредством WASP

См. также

Примечания

Литература

  • Reid, D. A. et al.,. Proof in Mathematics Education: Research, Learning, and Teaching . - John Wiley & SSense Publishersons, 2010. - P. 266. - ISBN 978-9460912443 .
  • Paar, Christof et al.,.

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


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

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

Как видно, описанный здесь метод решения , основанный на полном переборе вершин, является значительно более простым л эффективным, нежели непосредственное использование метода множителей Лагранжа . В то же время не следует считать, что решение задач линейного программирования является простым делом, состоящим просто в полном переборе вершин множества допустимых значений переменных. Для того чтобы понять это, достаточно заметить, что вершина множества допустимых точек (в том случае, когда это множество имеет внутренние точки) в задаче (4.22) - (4.24) связана с обращением в равенства п ограничений из их совокупности (4.23), (4.24). Таким образом, вообще говоря, число вершин множества (4.23), (4.24) может равняться числу различных сочетаний по п ограничений из общего числа т + п. Число различных сочетания  

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

Направленный перебор. Начнем с точки, удовлетворяющей ограничениям (ее можно найти простым перебором). Будем последовательно или случайно (метод случайного поиска) менять ее координаты на определенную величину А, каждый раз переходя в точку с более высоким значением целевой функции . Если выйдем на плоскость ограничения, будем двигаться по ней, находя одну из координат по уравнению ограничения. Затем движение по ребру (когда два ограничения-неравенства переходят в равенства)... Остановка - в вершине линейного многогранника. Решение найдено (с точностью до А если необходимо, в окрестности найденного решения проводим направленный перебор с шагом Д/2, Д/4 и т.д.).  

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

СИМПЛЕКСНАЯ ТАБЛИЦА (



Рекомендуем почитать

Наверх