Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Задача 1: Получение всех выборок





Очень часто встречаются задачи, в которых нужно уметь построить все возможные комбинации из заданного набора предметов. Например, такая задача:

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

Эту задачу можно сформулировать так:

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

Задач такого сорта довольно много. И все они сводятся, как уже было сказано к умению получить все возможные комбинации (далее мы будем называть их выборками) из заданного набора элементов. И сейчас мы рассмотрим общий метод получения всех возможных выборок с использованием операции сложения двоичных чисел. А начнём с примера. Пусть есть множество из трёх предметов. Построим все возможные выборки. Предметы будем обозначать порядковыми номерами. То есть, имеются следующие предметы: 1, 2, 3.

Выборки: (0, 0, 1); (0, 1, 0); (0, 1, 1); (1, 0, 0); (1, 0, 1); (1, 1, 0); (1, 1, 1);

Если в позиции с очередным номером стоит единица, то это означает, что элемент с номером равным этой позиции присутствует в выборке, а если стоит ноль, то элемент не присутствует. Например, выборка (0, 1, 0); состоит из одного элемента с номером 2, а выборка (1, 1, 0); состоит из двух элементов с номерами 1 и 2.

Из этого примера ясно видно, что выборку можно представить в виде двоичного числа. Кроме того, нетрудно заметить, что выше записаны все возможные одно, двух и трехзначные двоичные числа. Перепишем их следующим образом:

001; 010; 011; 100; 101; 110; 111

Будем считать младшим разрядом первый справа, отбросим незначащие нули (то есть нули в старших разрядах до первой единицы), и получим следующий ряд:

1; 10; 11; 100; 101; 110; 111

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

Исходные данные алгоритма

Дан набор предметов N - штук. Далее будем называть этот набор множеством исходных элементов. Пронумеруем все элементы исходного множества от 1 до N. Составим двоичное число из N незначащих нулей. 0000… 0N Это нулевое двоичное число будет обозначать нулевую выборку с которой и начнётся процесс составления выборок. Разряды числа считаются справа налево, то есть самый левый разряд это самый старший.

Договоримся обозначать это двоичное число большими буквами ДВОИЧНОЕ

Алгоритм

Если ДВОИЧНОЕ число состоит целиком из единиц

То прекращаем работу алгоритма

Иначе

Начало

    • Прибавляем к ДВОИЧНОМУ числу единицу по правилам двоичной арифметики.
    • Из полученного ДВОИЧНОГО числа составляем очередную выборку, как было описано выше.

Конец

Date: 2015-05-05; view: 431; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию