Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Генерація комбінаторних об'єктів

Реферат Генерація комбінаторних об'єктів





Міністерство освіти Республіки Білорусь

Установа навчання

В«Гомельський державний університет ім. Ф. Скорини В»

Математичний факультет

Кафедра МПМ








Реферат

Генерація комбінаторних об'єктів



Виконавець:

Студентка групи М-43

Самусенко А.Ю.


Науковий керівник:

Канд. фіз-мат. наук, доцент

Лебедєва М.Т.







Гомель 2007

Зміст


3

1 Безліч всіх підмножин ................................................. ..................... 4

2 7

3 11

4 14

5 Перестановки з повтореннями ................................................. ................... 17

6 Сполучення з повтореннями ........................................... .............................. 20

23

24


Введення


Існує набір завдань, вирішення яких полягає в генерації всіх елементів таких комбінаторних об'єктів як безліч всіх підмножин, перестановки, поєднання, розміщення, перестановки з повтореннями, поєднання з повтореннями.

Для кожного згенерованого елемента потім перевіряються якісь властивості для конкретного завдання.

Надалі в даній роботі пропонується наступний порядок викладу матеріалу для кожного комбінаторного об'єкту: приклад, алгоритм, програма, коментарі до програми.


1 Безліч всіх підмножин


Нехай ми маємо безліч з 4-х компонент - які ми позначаємо латинськими літерами A, B, C, D відповідно.

І нехай за умовами задачі потрібно вибрати підмножина, що складається з декількох компонент, що володіє деяким властивістю. Пропонується такий спосіб вирішення завдання: ми генеруємо ВСЕ можливі підмножини даної множини і для кожного з згенерованих підмножин перевіряємо задовольняє воно заданими властивостями. Альтернативний варіант завдання - підрахувати ВСЕ підмножини даної множини, що володіють заданою властивістю.

Наприклад:

Для безлічі з 4-х символів A, B, C, D безліч всіх підмножин включає в себе наступні множини:

Пусте безліч

Одноелементні безлічі: {A}, {B}, {C}, {D}

Двоелементні безлічі: {A, B}, {A, C}, {A, D} {B, C}, {B, D}, {C, D}

Трьохелементні безлічі: {A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}

чотириелементних безліч: {A, B, C, D}

У разі, якщо порядок генерації підмножин не грає ролі (а, наприклад, у разі потреби підрахувати всі підмножини, володіють заданою властивістю, так воно і є) один з найбільш просто кодованих алгоритмів генерації безлічі всіх підмножин виглядає наступним чином.

Заведемо вектор B, що складається з чотирьох чисел, кожне з яких може приймати значення 0 або 1. І будемо вважати, що значення 1 вказує на те, що відповідний за номером компонент вихідного безлічі включається до безліч, а значення 0 вказує на те, що елемент не включається.

Розглянемо тепер послідовність двійкових чисел від 0 до 15 і відповідні їм підмножини:

4321

DCBA

0000 - Пусте безліч

0001 A

0010 B

0011 AB

0100 C

0101 AC

0110 BC

0111 ABC

1000 D

1001 AD

1010 BD

1011 ABD

1100 CD

1101 ACD

1110 BCD

1111 ABCD

Таким чином, всього є 16 різних підмножин безлічі з 4-х елементів. У загальному випадку безліч всіх підмножин множини з N елементів містить 2N (два у степені N) елементів.

Алгоритм, що забезпечує таку генерацію безлічі всіх підмножин з N елементів, може бути неформально описаний таким чином:

Формуємо масив, що складається з N нулів - і розглядаємо його як порожній безліч. Таким чином, початкове значення поточного підмножини - порожній безліч.

Для отримання наступного підмножини з поточного підмножини обробляємо поточний масив з чисел 0 або 1 таким чином:

Праворуч (від першого елемента масиву до останнього) шукаємо перше число, рівне нулю.

Якщо таке число не знайдено - значить, поточне підмножина є останнім - безліччю, що складається з усіх елементів, і на цьому алгоритм закінчує свою роботу.

Якщо ж елемент рівний 0 знайдений, то він замінюється на 1, а всі числа праворуч від нього (якщо такі є) замінюються на нулі.

Більше формалізовано цей алгоритм може бути записаний наступним чином:

Введення (N)

Обнулення масиву B з N +1 елемента

Висновок (Пусте безліч)

Поки B [N +1] = 0

i = 1

Поки B [i] = 1 робити B [i] = 0, i = i +1

B [i] = 1

Висновок (безлічі, що визначається масивом B)

Нижче наводиться текст програми, яка зчитує N - число елементів у множині і виводить на екран безліч всіх підмножин позначаючи елементи відповідними по порядку латинськими літерами:

const

<...


сторінка 1 з 5 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Поняття предиката. Безліч істинності предиката. Класифікація предикатів
  • Реферат на тему: Подільність безлічі чисел та їх властивості
  • Реферат на тему: Розрахунок всіх елементів двухкаскадного підсилювача із заданими технічними ...
  • Реферат на тему: Практична обробка безлічі даних, що представляють собою масив покажчиків на ...
  • Реферат на тему: Як, виходячи з розуміння всіх елементів комунікативного процесу, відновити ...