Перебор и способы его сокращения

7
Перебор и способы его сокращения

Upload: beau-moore

Post on 01-Jan-2016

79 views

Category:

Documents


0 download

DESCRIPTION

Перебор и способы его сокращения. Даны N упорядоченных множеств U 1 , U 2 , … U N Требуется построить вектор A = (a 1 , a 2 , …, a N ) , удовлетворяющий заданному множеству условий и ограничений, где. Общая схема перебора с возвратом ( backtrack). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Перебор и способы его сокращения

Перебор и способы его сокращения

Page 2: Перебор и способы его сокращения

Общая схема перебора с возвратом (backtrack)

Даны N упорядоченных множеств U1, U2, … UN

Требуется построить вектор A = (a1, a2, …, aN), удовлетворяющий заданному множеству условий и ограничений, где 1 1 2 2, , , N Na U a U a U

Page 3: Перебор и способы его сокращения

Общая схема перебора с возвратом (backtrack)

Сложность переборных алгоритмов – экспоненциальная (O(CN)), т.е. использовать переборные алгоритмы допустимо при небольших ограничениях на входные данные

Page 4: Перебор и способы его сокращения

Задача о расстановке ферзей

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

Пример для N = 4

Page 5: Перебор и способы его сокращения

Задача о расстановке ферзей

В допустимом размещении каждый ферзь занимает отдельную вертикаль и горизонталь. Поэтому каждое размещение ферзей можно хранить в одномерном массиве H, каждый элемент которого H[i] обозначает номер горизонтали, занятый ферзем в вертикали i.

Например:i: 1 2 3 4H[i]: 3 1 4 1

Page 6: Перебор и способы его сокращения

Задача о расстановке ферзей

Есть n способов разместить ферзя в первой вертикали. При каждом расположении ферзя в первой вертикали есть n положений во второй вертикали; из них сразу отбросим недопустимые (знак «*»):

Page 7: Перебор и способы его сокращения

Задача о расстановке ферзей

Функция Test проверяет допустимость размещения <H[1], H[2], …, H[i]> при условии, что <H[1], …, H[i-1]> допустимо.