Примеры решения задач: пусть множество J = {a, b, g;} состоит из трех элементов, а P(J) — семейство всех подмножеств множества J

4. — множество всех подмножеств. Так как в каждом из разбиений участвуют все элементы исходного множества, будем в массиве индексов p записывать, в какой блок попадает каждый из элементов в текущем разбиении.

Все приведенные в пункте а) алгебры, естественно, являются кольцами. Найти все решения. B=0, если i-ый элемент в подмножество не входит, и B=1 иначе. Т.о. пустому подмножеству будет соответствовать набор из n нулей, а n-элементному подмножеству — набор из n единиц. Алгоритм: будем генерировать числа от 0 до 2n-1, находить их двоичное представление, и формировать подмножество из элементов с индексами единичных битов в этом представлении.

Решение. C теоретической точки зрения данная задача совпадает с задачей генерации всех подмножеств из множества жителей острова Новой Демократии

Сначала B=0 для всех i, что соответствует пустому подмножеству. Если исходное множество конечно, то у него существует конечное количество подмножеств. А именно, у n{\displaystyle n}-элементного множества существует 2n{\displaystyle 2^{n}} подмножеств (включая пустое). Таким образом мы получим последовательность из k{\displaystyle k} элементов, и ровно k!{\displaystyle k!} таким последовательностям соответствует одно подмножество.

Первым элементом подмножества может быть любой элемент, начиная с первого и заканчивая (n — k + 1)-м элементом. После того, как индекс первого элемента подмножества зафиксирован, осталось выбрать k — 1 элемент из элементов с индексами большими, чем у первого. Когда выбран последний элемент, то мы достигли конечного уровня рекурсии и выбранное подмножество можно обработать (проанализировать или распечатать).

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

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

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

Параметром i рекурсивной процедуры Perm служит место в массиве p, начиная с которого должны быть получены все перестановки правой части этого массива. Перейдем теперь к рассмотрению способа генерации всех разбиений исходного множества. Для полноты рассмотрения данной темы самостоятельно измените процедуру partition так, чтобы онагенерировала все разбиения, состоящие не более чем из kблоков.

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

Для полноты изложения этого подхода опишем функцию сheck, которуюследует применить в данной задаче. Исходные данные следует записать в массив s:array of set of1..150, заполнив каждый из n первых элементов этого массива множеством тех партий, в которых состоит тот или иной житель.

A3) если и , то (вместе с любыми двумя событиями алгебра содержит их объединение)

Однако большая размерность данной задачи не позволяет считать приведенное решение удовлетворительным во всех случаях. Так, уже для n = 100 перебор всех сочетаний из 4 и менее жителей приводит к рассмотрению около 4 миллионов вариантов. 1) элемента, затем из (kmax — 2) и т.д.

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

Еще про iPhone: