Поиск систем ортогональных латинских квадратов в проекте добровольных вычислений SAT@home Заикин О.С., Кочемазов С.Е., А.А. Семенов ИДСТУ СО РАН, Иркутск Обзор доклада • Латинские квадраты. • Задачи поиска комбинаторных структур на основе латинских квадратов. • Поиск систем ортогональных латинских квадратов в SAT@home. 2 Латинские квадраты Латинский квадрат (далее ЛК) порядка 𝑛 - это таблица 𝑛 × 𝑛, заполненная элементами упорядоченного множества M таким образом, что в каждой строке и в каждом столбце таблицы каждый элемент из M встречается ровно один раз. Леонард Эйлер использовал в качестве множества M буквы латинского алфавита, откуда ЛК и получили своё название. Обычно в качестве множества M берется множество натуральных чисел {1,2,…,n}. Примеры ЛК 3, 5 и 7 порядка. 𝐴 𝐶 𝐵 𝐵 𝐴 𝐶 𝐶 𝐵 𝐴 1 5 4 2 3 2 3 5 4 1 3 4 2 1 5 4 1 3 5 2 5 2 1 3 4 3 Ортогональные латинские квадраты Два ЛК одного и того же порядка называются ортогональными, если различны все пары (𝑥, 𝑦), где 𝑥 – символ в некоторой клетке первого ЛК, а 𝑦 – символ в той же клетке второго ЛК. Другими словами, два ЛК ортогональны, если при «наложении» первого ЛК на второй получается квадрат, в котором все все 𝑛2 элементов будут различны. Такой квадрат называется греколатинским. Пример: пара ортогональных ЛК и полученный на их основе греко-латинский квадрат. 1 2 3 2 3 3 1 1 2 11 23 32 22 31 13 33 12 21 1 3 2 2 3 1 2 3 1 4 Ортогональные латинские квадраты Пары ортогональных ЛК впервые были упомянуты в сборнике задач 1725 года: Необходимо разместить 16 игральных карт из тузов, королей, дам и валетов всех четырёх мастей в виде квадрата так, чтобы все масти и карты всех достоинств встречались в каждой строке и в каждом столбце ровно один раз. Эта задача имеет 6192 решения. Пример пары не ортогональных ЛК порядка 4 1 2 4 3 2 3 1 4 3 4 2 1 4 1 3 2 Пример пары ортогональных ЛК порядка 4 1 2 3 4 2 1 4 3 3 4 1 2 4 3 2 1 11 24 43 32 11 23 34 42 22 33 14 41 22 14 43 31 33 42 21 14 33 41 12 24 44 11 32 23 44 32 21 13 1 4 3 2 2 3 4 1 3 2 1 4 4 1 2 3 1 3 4 2 2 4 3 1 3 1 2 4 4 2 1 3 5 Ортогональные латинские квадраты Эйлер сформулировал задачу поиска пары ортогональных ЛК порядка 6 как задачу о 36 офицерах. Необходимо разместить 36 офицеров шести различных полков и шести различных воинских званий в каре так, чтобы в каждой колонне и в каждом ряду был ровно один офицер каждого полка и каждого воинского звания. 6 Гипотеза Эйлера • 1782 год – Эйлер предложил гипотезу, что не существует пар ортогональных ЛК порядка 𝑛 = 2 𝑚𝑜𝑑 4 ., т.е. для 𝑛 = 2, 6, 10, ... Он исходил из того, что ему не удалось построить пары для 𝑛 = 6 и 𝑛 = 10 (для 𝑛 = 2 справедливость гипотезы проверятся тривиально). • 1900 год – гипотеза Эйлера для 𝑛 = 6 была подтверждена G. Tarry. Он построил все 9408 нормализованных ЛК, и показал, что при любом их сочетании невозможно построить пару ортогональных квадратов. • 1922 год – MacNeish предложил метод конструирования ортогональных ЛК порядка n1*n2 из ортогональных ЛК порядков n1 и n2. • 1959 год – Bose и Shrikhande с помощью ЭВМ построили пару ортогональных ЛК для 𝑛 = 10 , тем самым опровергнув гипотезу Эйлера. 7 Системы ортогональных латинских квадратов Если имеется набор из m различных ЛК, любая пара которых ортогональна, то говорят о системе из m попарно ортогональных ЛК. Обозначим через 𝑁 𝑛 максимально возможное число попарно ортогональных ЛК порядка 𝑛. • ∀𝑛 > 1, 1 ≤ 𝑁 𝑛 ≤ 𝑛 − 1 • Если n – степень простого числа, то 𝑁 𝑛 = 𝑛 − 1 • До сих пор не удалось выяснить, существует ли система из трех попарно ортогональных ЛК порядка 10. n 6 7 8 9 10 11 N(n) 1 6 7 8 ≥ 2 10 12 13 ≥ 5 12 14 ≥3 15 ≥4 8 Системы ортогональных латинских квадратов В 1989 году было доказано отсутствие проективной плоскости порядка 10 *. Следствие: 𝑁 10 ≤ 8 Вычислительном эксперимент выполнялся 80 дней на мощном (на тот момент) кластере Cray-1A • 133 MFLOPs • ОП – 1 миллион слов *Lam C.W.H., Thiel L., Swiercz S.: The non-existence of finite projective planes of order 10. Canad. J. Math. (41), 1989. pp. 11171123. 9 Диагональные латинские квадраты Диагональным называется ЛК, в котором как в главной, так и в побочной диагоналях все элементы различны. Недиагональный ЛК 1 2 4 3 2 3 1 4 3 4 2 1 4 1 3 2 Диагональный ЛК 1 3 4 2 2 4 3 1 3 1 2 4 4 2 1 3 В 1992 году было доказано существование пары ортогональных диагональных ЛК порядка 10 *. Были представлены 3 такие пары. * Brown et al. Completion of the Spectrum of Orthogonal Diagonal Latin Squares. Lecture notes in pure and applied mathematics. 1992. Vol. 139. pp. 43–49. 10 Судоку Судоку – это ЛК порядка 9 с дополнительным условием: каждый квадрат разбивается на 9 подквадратов порядка 3, все числа в каждом подквадрате должны быть различны. Задание игры Судоку формулируется следующим образом. Дан квадрат 9×9 , в некоторых клетках которого находятся 𝑘 чисел из множества {1,2,..,9}. Эти числа называются подсказками. Требуется заполнить остальные клетки квадрата так, чтобы получившийся квадрат был ЛК порядка 9 и все числа в подквадратах 3×3 при этом были различны. 11 Судоку. Пример с 17 подсказками 12 Судоку. Минимальное число подсказок «Правильным» считается такой набор подсказок, что корректное заполнение оставшихся клеток единственно. Возникает задача: каково минимальное число подсказок, для которого существует однозначно заполняемый квадрат Судоку? Известно 49151 Судоку с 17 подсказками. Долгое время оставалась недоказанной гипотеза о том, что такое минимальное значение равно 17. 13 Судоку. Минимальное число подсказок В январе 2012 года была опубликована статья авторов: Gary McGuire, Bastian Tugemanny и Gilles Civario (Ирландия). Проведен эксперимент – были проверены все возможные варианты (около 5.5 миллиардов). Судоку с 17 подсказками не была найдена. Тем самым гипотеза была подтверждена. Эксперимент выполнялся с января по декабрь 2011 года на кластере Stokes – 320 узлов, на каждом 2 шестиядерных процессора Intel X5650. Итого использовались 3840 процессорных ядер в течение 11 месяцев. 14 Судоку. Минимальное число подсказок 15 Судоку. Минимальное число подсказок 6 сентября 2013 года завершился эксперимент в проекте sudoku@vtaiwan, в котором решалась эта же задача. Эксперимент длился 2 года 8 месяцев. Приняли участие 4378 кранчеров. Подтверждение этого результата полезно, т.к. его трудно проверить. 16 SAT-задачи В SAT-задаче требуется найти выполняющий набор конъюнктивной нормальной формы (КНФ) либо доказать его отсутствие. Пример КНФ над X x1, x2 , x3 , x4 , x5 C x1 x2 x2 x3 x4 x3 x4 x5 Выполняющий набор : (11011) К SAT-задачам сводятся задачи из областей: • обращение дискретных функций • дискретная оптимизация • биоинформатика • … SAT@home SAT@home – совместный проект ИДСТУ СО РАН и ИППИ РАН, использующий добровольные вычисления для решения сложных практически важных задач, которые эффективно сводятся к SAT-задачам Область применения • задачи обращения дискретных функций • криптография • дискретная оптимизация Основан на BOINC. Версии клиентского приложения для windows и linux (32- и 64-битные). 36 Общая концепция SAT@home Исходная задача SAT задача КНФ в формате DIMACS Desktop grid Решение решение Выполняющий набор или UNSAT декомпозиция КНФ, кодирующая исходную задачу, разбивается на семейство более простых для SAT-решателей КНФ при помощи процедуры декомпозиции. Для поиска «хороших» параметров декомпозиции используется специальная техника прогнозных функций, которая позволяет учитывать индивидуальные особенности исходной задачи. 37 Развитие SAT@home 29.09.2011 – запуск проекта. с декабря 2011 по май 2012 – решение 10 задач криптоанализа генератора A5/1. с сентября.2012 по май 2013 – поиск пар диагональных ортогональных ЛК порядка 10. с июня 2013 по настоящее время – поиск тройки попарно ортогональных ЛК порядка 10. SAT-подход в приложении к задачам поиска наборов латинских квадратов SAT-подход в приложении к задаче поиска ЛК можно разбить на несколько этапов: 1. Построение пропозициональных кодировок задач (сведение их к задачам вида КНФ=1) 2. Поиск оптимальной декомпозиции для скорейшего решения задачи в распределенной среде 3. Модификация программных «решателей» SAT-задач с целью повышения их эффективности на данном классе тестов. Следует отметить, что попытки исследования латинских квадратов при помощи SAT-подхода уже предпринимались ранее *. * H. Zhang, Сombinatorial Designs by SAT Solvers, Chapter 17, Handbook of Satisfiability, pp. 533-568, 2009 21 Пропозициональное кодирование задачи поиска пары ортогональных латинских квадратов Рассматривается подход к построению пропозициональной кодировки для задачи поиска пары ортогональных латинских квадратов порядка 𝑛. Пусть есть два множества булевых переменных 𝐴 и 𝐵, причём переменные из множества 𝐴 кодируют значения в ячейках первого латинского квадрата, а переменные из множества 𝐵, соответственно, значения в ячейках второго квадрата. Тогда кодировка задачи будет состоять из следующих частей: 1. Кодировка условия, что квадраты, кодируемые переменными из 𝐴 и 𝐵 являются латинскими 2. Кодировка условия ортогональности рассматриваемой пары квадратов 22 «Наивная» кодировка: условия на латинский квадрат Каждый квадрат представляется при помощи 𝑛3 булевых переменных. Для кодирования одного значения в его ячейке используется 𝑛 переменных, из которых только одна может принимать значение «1» (фактически они представляют собой характеристический вектор). В первой строке есть ровно одна единица В первой ячейке матрицы стоит ровно одно число В первом столбце есть ровно одна единица 𝑥1 ∨ 𝑥4 ∨ 𝑥7 ¬𝑥1 ∨ ¬𝑥4 ¬𝑥1 ∨ ¬𝑥7 ¬𝑥4 ∨ ¬𝑥7 𝑥1 ∨ 𝑥2 ∨ 𝑥3 ¬𝑥1 ∨ ¬𝑥2 ¬𝑥1 ∨ ¬𝑥3 ¬𝑥2 ∨ ¬𝑥3 𝑥1 ∨ 𝑥10 ∨ 𝑥19 ¬𝑥1 ∨ ¬𝑥10 ¬𝑥1 ∨ ¬𝑥19 ¬𝑥10 ∨ ¬𝑥19 𝑎11 𝑥1 𝑎13 𝑎12 𝑥4 𝑥2 𝑥7 𝑥5 𝑥3 𝑥6 𝑎21 𝑥10 𝑥8 𝑥9 𝑎23 𝑎22 𝑥13 𝑥11 𝑥16 𝑥14 𝑥12 𝑥15 𝑎31 𝑥19 𝑥17 𝑎33 𝑎32 𝑥22 𝑥20 23 𝑥25 𝑥23 𝑥21 𝑥18 𝑥26 𝑥24 𝑥27 «Наивная» кодировка: условие ортогональности Дизъюнкт вида ¬𝑥1 ∨ ¬𝑥28 ∨ ¬𝑥13 ∨ ¬𝑥40 Запрещает ситуацию, когда (𝑎11 , 𝑏11 ) = 𝑎22 , 𝑏22 = (1,1) Можно показать, что таких дизъюнктов потребуется 𝑂 𝑛6 . 𝑎11 𝑎12 𝑎13 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝑥7 𝑥8 𝑥9 𝑎21 𝑎22 𝑎23 𝑥10 𝑥11 𝑥12 𝑥13 𝑥14 𝑥15 𝑥16 𝑥17 𝑥18 𝑎31 𝑎32 𝑎33 𝑥19 𝑥20 𝑥21 𝑥22 𝑥23 𝑥24 𝑥25 𝑥26 𝑥27 𝑏11 𝑏12 𝑏13 𝑥28 𝑥29 𝑥30 𝑥31 𝑥32 𝑥33 𝑥34 𝑥35 𝑥36 𝑏21 𝑏22 𝑏23 𝑥37 𝑥38 𝑥39 𝑥40 𝑥41 𝑥42 𝑥43 𝑥44 𝑥45 𝑏31 𝑏32 𝑏33 𝑥46 𝑥47 𝑥48 𝑥49 𝑥50 𝑥51 𝑥52 𝑥53 𝑥54 24 Пары ортогональных диагональных латинских квадратов Необходимо добавить в описанную выше кодировку дизъюнкты, соответствующие условию диагональности. Первая строка первого квадрата была изначально зафиксирована и равнялась «0 1 2 3 4 5 6 7 8 9». Это было сделано потому, что любую пару ортогональных латинских квадратов путем перестановок можно преобразовать к паре, в которой первая строка первого квадрата будет именно такой. Полученная в результате КНФ состоит из 2000 переменных и 434440 дизъюнктов, файл с КНФ занимает 10 мегабайт. 25 Генерация заданий 0 1 2 3 4 5 6 7 8 9 Фиксированная первая строка Известные данные, уникальны в каждом задании Неизвестные данные Задание – поиск пары ортогональных диагональных ЛК с частично известным заполнением первого квадрата (1-ая строка и по 8 первых ячеек 2-ой и 3-ей строки). Значения остальных 74 ячеек первого квадрата и всех 100 ячеек второго квадрата были неизвестны, их должен был найти SAT-решатель. Генерация заданий Всего оказалось около 230 миллиардов возможных вариантов значений этих 16 ячеек, не нарушающих условие, что квадрат является диагональным латинским. Для решения в SAT@home были выбраны 20 миллионов подзадач из 230 миллиардов (т.е. всего около 0.0087 % пространства поиска). Каждый workunit в SAT@home состоял из 20 таких подзадач (итого 1 миллион workunit’ов). На каждую подзадачу был установлен лимит в 2600 рестартов решателя MiniSat 2.2, что примерно соответствует 5 минутам работы одного ядра современного процессора. При достижении лимита вычисления прерывались. Небольшая модификация MiniSat 2.2 привела к значительному уменьшению объема используемой ОП, а также к ускорению). Результат За 9 месяцев найдены 17 новых пар ортогональных диагональных ЛК порядка 10. До этого были известны только 3 такие пары, опубликованные в статье 1992 года. Первая найденных в SAT@home пара. Тройка попарно ортогональных латинских квадратов Данная задача крайне трудна. Было принято решение сосредоточиться на ослабленных вариантах данной задачи. В исходной задаче было полностью убрано одно из трех условий ортогональности – т.е. осуществлялся поиск такой тройки ортогональных латинских квадратов , что ортогонален , ортогонален , а ортогональность между и не требовалась. КНФ, кодирующая данную задачу, состоит из 23000 переменных и 1091631 дизъюнктов, файл с КНФ занимает 17 мегабайт. 29 Тройка попарно ортогональных латинских квадратов В каждом квадрате была зафиксирована первая строка (значение «0 1 2 3 4 5 6 7 8 9»). Декомпозиция проводилась по второй строке первого квадрата – перебирались все возможные варианты ее заполнения (всего 1334961 вариантов, каждому варианту соответствует подзадача). Эксперимент по решению данной задачи в SAT@home был запущен 24 июня 2013 года и продолжался примерно месяц. В результате нашлась такая тройка A, B, C, что A ортогонален B, A ортогонален C, а квадраты B и C ортогональны в 70 ячейках из 100. 30 Тройка попарно ортогональных латинских квадратов 31 Тройка попарно ортогональных латинских квадратов После этого был запущен поиск тройки квадратов, в которой на B и C было наложено условие «ортогональны минимум в 71 ячейке из 100». КНФ, кодирующая данную задачу, состоит из 36685 переменных и 1625560 дизъюнктов, файл с КНФ занимает 23 мегабайта. Эта задача решается в проекте в настоящий момент. По 5 ячеек во 2-ой и 3-ей строках. Мировой рекорд – 91 ячейка из 100 (Wanless). 32 Цель – получить новый рекорд. SAT@home. Производительность Среднее значение: 2.7 TFLOPs Максимальное значение: 7.4 TFLOPs Все рекорды – благодаря соревнованиям на boincstats Динамика за год SAT@home. Состояние на 10.09.2013 • 1279 активных пользователей • 2738 активных ПК • 108 государств Перспективы • Подобрать короткий тестовый эксперимент для тестирования других вариантов нахождения псевдотроек. Запускать это тестирование на кластере. Добровольные вычисления позволяют получить не только результаты, но и определенность. • Оптимизировать решатель • Улучшать кодировки • Накапливать на сервере ограничения, которые были найдены на хостах (может помочь отсечь некоторые подзадачи либо ускорить их решение). Благодарим всех кранчеров проекта SAT@home за оказанную поддержку! Спасибо за внимание! 36