Комбинаторный взрыв - Combinatorial explosion

В математика, а комбинаторный взрыв это быстрый рост сложности проблемы из-за того, как комбинаторика на проблему влияют вход, ограничения и границы проблемы. Комбинаторный взрыв иногда используется для оправдания неразрешимости определенных проблем.[1][2] Примеры таких задач включают некоторые математические функции, анализ некоторых головоломок и игр, а также некоторые патологические примеры, которые можно смоделировать как Функция Аккермана.

Примеры

Латинские квадраты

А Латинский квадрат порядка п является п × п массив с записями из набора п элементов со свойством, что каждый элемент набора встречается ровно один раз в каждой строке и каждом столбце массива. Пример латинского квадрата третьего порядка дает

123
231
312

Типичным примером латинского квадрата будет заполненный Судоку головоломка.[3] Латинский квадрат - это комбинаторный объект (в отличие от алгебраического объекта), поскольку имеет значение только расположение записей, а не то, что они на самом деле представляют. Количество латинских квадратов в зависимости от порядка (независимо от набора, из которого взяты элементы) (последовательность A002860 в OEIS ) представляет собой пример комбинаторного взрыва, как показано в следующей таблице.

пКоличество латинских квадратов порядка п
11
22
312
4576
5161,280
6812,851,200
761,479,419,904,000
8108,776,032,459,082,956,800
95,524,751,496,156,892,842,531,225,600
109,982,437,658,213,039,871,725,064,756,920,320,000
11776,966,836,171,770,144,107,444,346,734,230,682,311,065,600,000

Судоку

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

пКоличество решёток судоку порядка п
(коробки размеромп×п)
Количество латинских квадратов порядка п
(для сравнения)
11 1
4288 [4][5]576
96,670,903,752,021,072,936,960 [4][6]5,524,751,496,156,892,842,531,225,600
165.96×1098 (по оценкам) [7]
254.36×10308 (по оценкам) [8]
(п = 9 - это обычная игра в судоку 9 × 9. Головоломка не включает сетки, в которых п иррационально.)

Игры

Одним из примеров игры, в которой комбинаторная сложность приводит к пределу разрешимости, является решение шахмат (игра с 64 квадратами и 32 фишками). Шахматы - это не решенная игра. В 2005 году все концовки шахматной партии с шестью или менее фигурами были решены, показывая результат каждой позиции при идеальной игре. Потребовалось еще десять лет, чтобы завершить основание стола, добавив еще одну шахматную фигуру, таким образом завершив основание стола из 7 частей. Добавление еще одной фигуры к шахматной концовке (таким образом, создавая основу стола из 8 фигур) считается неразрешимым из-за дополнительной комбинаторной сложности.[9][10]

Более того, перспектива решения более крупных шахматных игр становится более трудной по мере увеличения размера доски, например, в больших играх. шахматные варианты, и бесконечные шахматы.[11]

Вычисление

Комбинаторный взрыв может произойти в вычислительной среде аналогично коммуникациям и многомерное пространство. Представьте себе простую систему только с одной переменной, логический называется A. Система имеет два возможных состояния, А = истина или А = ложь. Добавление еще одной логической переменной B даст системе четыре возможных состояния, А = истина и B = правда, А = истина и B = ложь, А = ложь и B = правда, А = ложь и B = ложь. Система с п логическое значение имеет 2п возможных состояний, а система п переменные, каждая из которых имеет Z разрешенных значений (а не только 2 логических значения (истина и ложь)), будут иметь Zп возможные состояния.

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

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

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

Арифметика

Предположим, мы берем факториал за п:

Тогда 1! = 1, 2! = 2, 3! = 6 и 4! = 24. Однако мы быстро получаем очень большие числа даже для относительно небольших п. Например, 100! ≈ 9,33262154 × 10157, число настолько велико, что его невозможно отобразить на большинстве калькуляторов, и намного больше, чем предполагаемое количество элементарных частиц во Вселенной.[12]

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

Коммуникация

В администрации и вычисление, а комбинаторный взрыв - это быстро ускоряющееся увеличение количества линий связи по мере добавления организаций в процесс. (Этот рост часто называют «экспоненциальным», но на самом деле многочлен.)

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

В общем, для этого потребуетсялинии связи для п организаций, а это всего лишь 2-комбинации из п элементы (см. также биномиальный коэффициент ).[13]

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

Смотрите также

Рекомендации

  1. ^ Криппендорф, Клаус. «Комбинаторный взрыв». Интернет-словарь кибернетики и систем. PRINCIPIA CYBERNETICA WEB. Получено 29 ноября 2010.
  2. ^ а б http: //intelligence.worldofcomputing/combinatorial-explosion Комбинаторный взрыв.
  3. ^ Все завершенные головоломки представляют собой латинские квадраты, но не все латинские квадраты могут быть завершены головоломками, поскольку в головоломке судоку есть дополнительная структура.
  4. ^ а б Слоан, Н. Дж. А. (ред.). «Последовательность A107739 (Количество (завершенных) судоку (или судоку) размером n ^ 2 X n ^ 2)». В Он-лайн энциклопедия целочисленных последовательностей. Фонд OEIS. Получено 14 апреля 2017.
  5. ^ «Математика судоку - могут ли смертные решить эту задачу для квадрата 2x2?: Общие». Forum.enjoysudoku.com. Получено 2013-10-20.
  6. ^ «Проблемы с подсчетом судоку». Afjarvis.staff.shef.ac.uk. Получено 20 октября 2013.
  7. ^ «Математика Су-Доку: Общие - Страница 36». Forum.enjoysudoku.com. Получено 2013-10-20.
  8. ^ "Алгоритм подсчета полос RxC Sudoku: Общие". Forum.enjoysudoku.com. Получено 2013-10-20.
  9. ^ http://chessok.com/Lomonosov Endgame Tablebases Ломоносовские финальные столы
  10. ^ http://chess.stackexchange.com/7-piece-endgame-tablebase (шахматы) Эндшпиль-основа из 7 фигур (шахматы)
  11. ^ Авиезри Френкель; Д. Лихтенштейн (1981), «Вычисление идеальной стратегии для шахмат n × n требует экспоненциального времени от n», J. Combin. Теория Сер. А, 31 (2): 199–214, Дои:10.1016/0097-3165(81)90016-9
  12. ^ http://www.physicsoftheuniverse.com/numbers.html
  13. ^ Бенсон, Тим. (2010). Принципы взаимодействия HL7 и SNOMED в области здравоохранения. Нью-Йорк: Спрингер. п. 23. ISBN  9781848828032. OCLC  663097524.