Перебор и способы его сокращения
DESCRIPTION
Перебор и способы его сокращения. Даны N упорядоченных множеств U 1 , U 2 , … U N Требуется построить вектор A = (a 1 , a 2 , …, a N ) , удовлетворяющий заданному множеству условий и ограничений, где. Общая схема перебора с возвратом ( backtrack). - PowerPoint PPT PresentationTRANSCRIPT
Перебор и способы его сокращения
Общая схема перебора с возвратом (backtrack)
Даны N упорядоченных множеств U1, U2, … UN
Требуется построить вектор A = (a1, a2, …, aN), удовлетворяющий заданному множеству условий и ограничений, где 1 1 2 2, , , N Na U a U a U
Общая схема перебора с возвратом (backtrack)
Сложность переборных алгоритмов – экспоненциальная (O(CN)), т.е. использовать переборные алгоритмы допустимо при небольших ограничениях на входные данные
Задача о расстановке ферзей
На шахматной доске размера N*N требуется расставить N ферзей таким образом, чтобы ни один ферзь не атаковал другого. По правилам шахмат ферзь атакует все фигуры на одной с ним вертикали, горизонтали и диагонали.
Пример для N = 4
Задача о расстановке ферзей
В допустимом размещении каждый ферзь занимает отдельную вертикаль и горизонталь. Поэтому каждое размещение ферзей можно хранить в одномерном массиве H, каждый элемент которого H[i] обозначает номер горизонтали, занятый ферзем в вертикали i.
Например:i: 1 2 3 4H[i]: 3 1 4 1
Задача о расстановке ферзей
Есть n способов разместить ферзя в первой вертикали. При каждом расположении ферзя в первой вертикали есть n положений во второй вертикали; из них сразу отбросим недопустимые (знак «*»):
Задача о расстановке ферзей
Функция Test проверяет допустимость размещения <H[1], H[2], …, H[i]> при условии, что <H[1], …, H[i-1]> допустимо.