Допълнение на крайно множество
Определение за допълнение на множество: нека имаме крайно множество А
явяващо се определено подмножество на крайно множество М.
Допълнението на множество А е също крайно множество и включва всички елементи на множество М,
които не са елементи на множество А.
От гледната точка на статистиката допълнение на множество е противоположното събитие.
Ако разглеждаме допълнение на крайното множество A към безкрайно (универсалното) множество
резултатът е също безкрайно множество
Две крайни множества са равномощни, ако имат еднакъв брой елементи.
Под мощност на едно крайно множество се разбира също броят на неговите елементи.
Ако разглеждаме множеството M съдържащо стойности на една булева променлива {0,1},
то подмножеството А, съдържащо едната стойност ще бъде равномощно на допълнението до множеството M.
Ако разглеждаме множеството M съдържащо всички едноцифрени естествени числа {1,2,3,4,5,6,7,8,9}
и негово подмножество A, съдържащо само четните едноцифрени числа {2,4,6,8},
то подмножеството допълнение на A ще има по-голям брой елементи {1,3,5,7,9},
т.е. ще бъде с по-голяма мощност.
Операцията допълнение на множества не е комутативна.
Операцията допълнение на множество може да бъде илюстрирано с логическа функция отрицание - NOT.
Начало на страницата
Следващата примерна програма дава решена задача за допълнение на дадено множество:
#include <iostream>
#include <stdlib.h>
using namespace std;
int const Max=25;//maksimalen diapazon na generiranite chisla i tehniq broj
void inici(int mas0[], int mas1[], int mas2[])
{ int i;
for (i=0;i<Max;i++)
{mas0[i]=1;//mnovestwoto M sydyrva wsichki chisla [1..Max]
mas1[i]=mas2[i]=0;}
//wseki element w masiwa / mnovestwoto 1,2 ima stojnost 0
}// iztriwa elementi w mnovestwo
void gener(int mas3[], int br)
{ int i=0,c;
do {
c=1+rand()%Max;//generira sluchajno chislo ot interwala [1..Max] element w mnovestwo
//ako ne e bila wywevdana do momenta takawa stojnost
if (!mas3[c]) {mas3[c]++;i++;cout<<c<<"; ";};
//realno w masiwa se zapiswa 1 w kletka s indeks generiranoto chislo
} while(i<br);
cout<<endl;
}// generira elementi w mnovestwo
int mnoves(int mas0[], int mas1[], int mas2[])
{int i, kolko=0;
for (i=0;i<Max;i++)
{ if (mas0[i] > mas1[i]) {kolko++;cout<<i+1<<"; ";mas2[i]++;};
//dopylnenie koi elementi lipswat w mnovestwo 1
} //for
return kolko;//broj elementi w dopylnenie na mnovestwo
}// broj elementi mnovestwo
void obrabotka(int mas0[], int mas1[], int mas2[], int br)
{ int koe,kolko;
inici(mas0, mas1, mas2);
cout<<"Generiram "<<br<<" broq razlichni sluchajni chisla za mnovestwo A:\n";
gener(mas1, br);
cout<<"Pri operaciq dopylnenie elementite sa:\n";
kolko=mnoves(mas0, mas1, mas2); cout<<" Obsho:"<<kolko<<" elementa\n";
}// dopylnenie na mnovestwo
int main()
{int mas0[Max],mas1[Max],mas2[Max],br;
char ose;
cout<<"Imame mnovestwo M sydyrvasho wsichki estestweni chisla ot interwala [1..25]\n";
cout<<"Da se systawi programa, chrez koqto se wywevdat razlichni \n";
cout<<"estestweni chisla ot interwala [1..25] w drugo mnovestwo A.\n";
cout<<"Chislata w mnovestwoto A se generirat kato sluchajni.\n";
cout<<"Programata da izwede generiranite chisla w mnovestwoto A,\n";
cout<<"kakto i movestewoto, predstwlqwasho dopylnenie na A do mnovestwoto M.\n";
do {
cout<<"Wywedete broi elementi w mnovestwo A [10..15]: ";cin >> br;
//ne e slovena zashita po whod
obrabotka(mas0, mas1, mas2, br);
cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
} while (ose=='y');
system("pause");
return 0;
}//kraj na programa dopylnenie na mnovestwo
Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.
Начало на страницата