Генетический алгоритм минимизации полиномов булевых функций Винокуров С.Ф., Казимиров А.С. Полиномиальные представления Pf (x1, . . . , xn) = K1 ⊕ . . . ⊕ Ks, σi σi Ki = xi1 1 · . . . · xik k , σij ∈ {0, 1}, либо Ki = 1. σ x = x, если σ = 0 x, если σ = 1. Сложность булевых функций Pf (x1, . . . , xn) = K1 ⊕ . . . ⊕ Ks L(Pf ) = s — сложность полинома L(f ) = min L(Pf ) — сложность функции Pf L(n) = max L(f ) — функция Шеннона для сложности f булевых функций Алгоритмы минимизации 1. Перебор всех полиномов 2. Решение системы уравнений f (x1, . . . , xn) = 3n L αiKi i=1 3. Специальная операторная форма 4. Преобразования СПНФ Алгоритмы минимизации 5. Спуск к n − 1 переменной — применение разложения f (x1, . . . , xn) = x̄1f1 ⊕ f2 ⊕ x1f3 Одна из функций f1, f2, f3 выбирается произвольно, остальные получаются из соотношений: f1 ⊕ f (0, x2, . . . , xn) = f2 f3 ⊕ f (0, x2, . . . , xn) = f2 L(f ) = min{L(f1) + L(f2) + L(f3)} f1 Использование библиотек При спуске к меньшему числу переменных можно использовать библиотеки функций с заранее найденной сложностью. n = 4 — 216 функций — 32 Кб n = 5 — 232 функций — 2 Гб Использование эквивалентностей, сохраняющих сложность полиномов, позволяет уменьшить размер библиотеки. Минимизация функций 7 переменных Данный алгоритм точной минимизации имеет ограничение n = 6. При n = 7 необходимо минимизировать 264 функций, а при использовании эквивалентностей — 242 функций. Применение генетической модели позволяет построить алгоритм приближенной минимизации. Генетический алгоритм Особь — вектор функции-параметра. Функция приспособленности — сложность полинома, построенного по данной функции. Мутация реализуется в виде изменения группы битов в векторе функции. Кроссовер — обмен частями векторов. Генетический алгоритм 1. Генерация популяции: случайные особи, оценивание и сортировка. 2. Шаг генетического алгоритма: 2.1. Применение мутации к случайной особи из популяции. 2.2. Применение кроссовера к случайным особи из популяции. 2.3. Оценивание новых особей и добавление их в популяцию. Генетический алгоритм Пространство поиска является гладким: Утверждение. При изменении одного бита в функциипараметре число слагаемых в соответствующем полиноме меняется не более, чем на 3. Для выхода из локальных минимумов применяются дополнительные стратегии: добавление случайных функций на каждой итерации и частичная очистка популяции. Тестовые функции pn = (011011...), qn = (101101...), rn = (110110...) Эти функции дают максимум сложности в поляризованных полиномах, в кронекеровых и псевдокронекеровых формах. В полиномиальных формах данные функции являются самыми сложными при n ≤ 6. L(pn) = L(qn) = L(rn) p n ⊕ qn ⊕ r n = 0 Тестирование алгоритма При тестировании производился подбор параметров генетического алгоритма. Запуски при n = 6 после настройки дали точный минимум для практически всех функций за время, на порядок меньшее времени работы алгоритма точной минимизации. Для n = 7, 8 алгоритм дает полиномы, сложность которых близка к теоретическим оценкам.