Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Простейшие переборные задачи. Генерация подмножеств и перестановок

Цель занятия:Изучение простейших переборных задач: генерация подмножеств и перестановок.
Простейшие переборные задачи: генерация подмножеств и перестановокЛабораторная работа №1Раздел: комбинаторика Цель занятия:Изучение простейших переборных задач: генерация подмножеств и перестановок. Генерация множества перестановок  Генерация множества перестановок  Генерация множества перестановок  Генерация множества перестановок  Генерация множества перестановокРеализуем этот способНеобходима функция, принимающая на вход вектор и множествоМножество Генерация множества перестановокvoid GenPermut(size_t elems, vector& cur, vector& used) {  if Построение перестановки по ее номеру   Построение перестановки по ее номеру   Построение перестановки по ее номеру   Построение перестановки по ее номеру   Построение перестановки по ее номеру vector Permutation(size_t elemCount, size_t permNumber) { Задания  Задания 
Слайды презентации

Слайд 2
Цель занятия:
Изучение простейших переборных задач: генерация подмножеств и

Цель занятия:Изучение простейших переборных задач: генерация подмножеств и перестановок.

перестановок.


Слайд 3 Генерация множества перестановок
 

Генерация множества перестановок 

Слайд 4 Генерация множества перестановок
 

Генерация множества перестановок 

Слайд 5 Генерация множества перестановок
 

Генерация множества перестановок 

Слайд 6 Генерация множества перестановок
 

Генерация множества перестановок 

Слайд 7 Генерация множества перестановок
Реализуем этот способ
Необходима функция, принимающая на

Генерация множества перестановокРеализуем этот способНеобходима функция, принимающая на вход вектор и

вход вектор и множество
Множество реализуем бинарным вектором
Также будем передавать

число элементов, которые еще необходимо добавить к вектору: если оно равно нулю, значит, перестановка построена


Слайд 8 Генерация множества перестановок
void GenPermut(size_t elems, vector& cur, vector&

Генерация множества перестановокvoid GenPermut(size_t elems, vector& cur, vector& used) { if

used) {
if (elems == cur.size()) {

for (size_t i = 0; i < cur.size() - 1; ++i) {
cout << cur[i] + 1 << " ";
}
cout << cur[cur.size() - 1] + 1 << "\n";
}
for (size_t next = 0; next < elems; ++next) {
if (!used[next]) {
cur.push_back(next);
used[next] = true;

GenPermut(elems, cur, used);

cur.pop_back();
used[next] = false;
}
}
}

Слайд 9 Построение перестановки по ее номеру
 

Построение перестановки по ее номеру  

Слайд 10 Построение перестановки по ее номеру
 

Построение перестановки по ее номеру  

Слайд 11 Построение перестановки по ее номеру
 

Построение перестановки по ее номеру  

Слайд 12 Построение перестановки по ее номеру
 

Построение перестановки по ее номеру  

Слайд 13 Построение перестановки по ее номеру
vector Permutation(size_t elemCount,

Построение перестановки по ее номеру vector Permutation(size_t elemCount, size_t permNumber) {

size_t permNumber) {
vector numbers;
for (size_t

i = 0; i < elemCount; ++i) {
numbers.push_back(i);
}

int64 currentElementsCount = elemCount;

vector ans;
while (currentElementsCount > 0) {
int64 k = 0;
int64 L = fact(currentElementsCount - 1);

while ((k + 1) * L < permNumber) {
++k;
}

size_t curNumber = -1;

for (size_t j = 0; j < elemCount; ++j) {
if (numbers[j] != -1) {
++curNumber;
}
if (curNumber == k) {
ans.push_back(numbers[j] + 1);
numbers[j] = -1;
break;
}
}

permNumber -= L*k;
--currentElementsCount;
}
return ans;
}

Слайд 14 Задания
 

Задания 

  • Имя файла: prosteyshie-perebornye-zadachi-generatsiya-podmnozhestv-i-perestanovok.pptx
  • Количество просмотров: 87
  • Количество скачиваний: 0