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

Post on 01-Jan-2016

80 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Общая схема перебора с возвратом (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]> допустимо.

top related