Uploaded by Вова Косырев

Disk Lab5

advertisement
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Владимирский государственный университет
имени Александра Григорьевича и Николая Григорьевича Столетовых»
(ВлГУ)
Кафедра физики и прикладной математики
ЛАБОРАТОРНАЯ РАБОТА №5
по дисциплине
«Дискретная математика»
на тему:
«Построение матриц бинарного отношения»
Выполнил:
ст. гр. АИС-119
Пахомов Д.А.
Принял:
доц. каф. ФиПМ
Горлов В.Н.
Владимир, 2020 г.
Цель работы: ознакомиться (изучить) построение матриц бинарного
отношения.
Задание: Построить матрицы бинарного отношения при:
1.
2.
3.
4.
5.
a<b
a=b
a mod b = 0
a mod 2 = 0 или b mod 2 = 0
a mod 2 =0 и b mod 2 =0
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Матрицы бинарных отношений
Рассмотрим два конечных множества A ={a1,a2,…,am} и B={b1,b2,…,bn} и
бинарное отношение
. Определим матрицу
размера m×n
бинарного отношения Р по следующему правилу:
Полученная матрица содержит полную информацию о связях между
элементами.
Любая матрица, состоящая из 0 и 1, является матрицей некоторого бинарного
отношения.
Основные свойства матриц бинарных отношений:
1. Если
то
и
,
где
сложение
осуществляется по правилам 0+0=0, 1+1=0+1=1+0=1, а умножение –
обычным способом.
Итак,
2. Матрица
получается перемножением соответствующих элементов
из и :
.
3. Если
, то
, где умножение матриц производится по
обычному правилу умножения матриц, но произведение и сумма
элементов – по определённым в свойстве 1 правилам.
4. Матрица обратного отношения Р-1 равна транспонированной матрице
отношения Р:
.
5. Если
, то
.
Код:
#pragma endregion
private: System::Void label3_Click(System::Object^ sender, System::EventArgs^ e)
{
}
// ВЫХОД
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
exit(0);
}
//СОЗДАНИЕ МН_ВО А
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
fopen_s(&fp, "document.txt", "w");
String^s1 = textBox1 -> Text;
if (s1 == "")
{MessageBox::Show("Error");
return; }
N = Convert::ToInt32(s1);
srand(time(0));
int k = 0, w;
A[0] = rand() %100+1;
while (k <= N) {
w = rand() %100+1;
char flag = 0;
for(int i = 0; i < k; i++)
if (A[i] == w) flag = 1;
if (flag == 0){
k++;
A[k] = w;}
}
fprintf(fp,"\nМножестов А\n");
SORT (A,N);
String^S1 = "";
for(int i = 0; i < N; i++)
{
fprintf(fp,"%3d",A[i]);
S1 = S1+A[i] + " ";
}
listBox1 -> Items -> Add(S1);
}
//СОЗДАНИЕ МН-ВО В
private: System::Void button4_Click(System::Object^
String^ s2 = textBox2->Text;
if (s2 == "")
{
MessageBox::Show("Error");
return;
}
M = Convert::ToInt32(s2);
srand(time(0));
int k = 0, w;
B[0] = rand() % 100 + 1;
while (k <= M) {
w = rand() % 100 + 1;
char flag = 0;
for (int i = 0; i < k; i++)
if (B[i] == w) flag = 1;
if (flag == 0) {
k++;
B[k] = w;
}
sender, System::EventArgs^
e) {
}
SORT(B,M);
String^ S2= "";
fprintf(fp, "\nМножество B\n");
for (int i = 0; i < M; i++) {
fprintf(fp, "%3d ", B[i]);
S2 = S2 + B[i] + " ";
}
listBox2->Items->Add(S2);
}
private: System::Void MyForm_Load(System::Object^
}
sender, System::EventArgs^
e) {
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
listBox1->Items->Clear();
}
private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) {
listBox2->Items->Clear();
}
private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) {
listBox3->Items->Clear();
}
//a<b
private: System::Void aBToolStripMenuItem_Click(System::Object^ sender,
System::EventArgs^ e) {
String^ S3 = "";
fprintf(fp, "\n a<b\n");
int k = 0;
S3 += "
";
fprintf(fp, "
");
for (int j = 0; j < M; j++)
{
fprintf(fp,"%3d",B[j]);
S3 += B[j]+ " ";
}
listBox3->Items->Add(S3);
for(int i=0;i<N;i++)
{
fprintf(fp,"\n");
S3 = "";
if(A[i]/10==0)
{
fprintf(fp,"%3d ",A[i]);
S3+=A[i]+"
";
}
else
fprintf(fp,"%3d ",A[i]);
S3 += A[i]+" ";
for(int j=0;j<M;j++)
{
if(A[i]<B[j])
{
fprintf(fp, "1 ");
S3=S3+" "+"1"+" ";
}
else
{
fprintf(fp, "0 ");
S3=S3+" "+"0"+" ";
}
}
listBox3->Items->Add(S3);
}
}
// a mod 2=0 or b mod 2=0
private: System::Void aBToolStripMenuItem2_Click(System::Object^ sender,
System::EventArgs^ e) {
int k = 0;
String^ S3 = "";
S3 += "
";
fprintf(fp, "
");
for (int j = 0; j < M; j++) {
fprintf(fp,"%3d",B[j]);
S3 += B[j] + " ";
}
listBox3->Items->Add(S3);
for (int i = 0; i < N; i++) {
fprintf(fp,"\n");
S3 = "";
if(A[i]/10==0) S3+=A[i]+"
";
else
S3 += A[i] + " ";
fprintf(fp,"%3d ",A[i]);
for (int j = 0; j < M; j++) {
if (A[i] % 2 == 0 || B[j] % 2 == 0) {
S3=S3+" "+"1"+" ";
fprintf(fp, "1 ");
}
else
S3=S3+" "+"0"+" ";
fprintf(fp, "0 ");
}
listBox3->Items->Add(S3);
}
} //a = b
private: System::Void aBToolStripMenuItem1_Click(System::Object^ sender,
System::EventArgs^ e) {
int k = 0;
String^ S3 = "";
S3 += "
";
fprintf(fp, "a = b");
fprintf(fp, "
");
for (int j = 0; j < M; j++) {
fprintf(fp,"%3d",B[j]);
S3 += B[j] + " ";
}
listBox3->Items->Add(S3);
for (int i = 0; i < N; i++) {
S3 = "";
if(A[i]/10==0)
{fprintf(fp,"%3d",A[i]);
S3 += A[i] + "
";}
else
{fprintf(fp,"%3d",A[i]);
S3 +=A[i]+" ";}
for (int j = 0; j < M; j++) {
if (A[i] == B[j]) {
S3=S3+" "+"1"+" ";
fprintf(fp, "1 ");
}
else
S3=S3+" "+"0"+" ";
fprintf(fp, "0 ");
}
listBox3->Items->Add(S3);
}
}//a mod b
private: System::Void aModBToolStripMenuItem_Click(System::Object^ sender,
System::EventArgs^ e) {
int k = 0;
String^ S3 = "";
S3 += "
";
for (int j = 0; j < M; j++) {
S3 += B[j] + " ";
}
listBox3->Items->Add(S3);
for (int i = 0; i < N; i++) {
S3 = "";
S3 += A[i] + " ";
for (int j = 0; j < M; j++) {
if (A[i] % B[j] == 0) {
S3=S3+" "+"1"+" ";
}
else
S3=S3+" "+"0"+" ";
}
listBox3->Items->Add(S3);
}
}//b mod a
private: System::Void bModAToolStripMenuItem_Click(System::Object^ sender,
System::EventArgs^ e) {
int k = 0;
String^ S3 = "";
S3 += "
";
for (int j = 0; j < M; j++) {
S3 += B[j] + " ";
}
listBox3->Items->Add(S3);
for (int i = 0; i < M; i++) {
S3 = "";
S3 += A[i] + " ";
for (int j = 0; j < N; j++) {
if (B[i] % A[j] == 0) {
S3=S3+" "+"1"+" ";
}
else
S3=S3+" "+"0"+" ";
}
listBox3->Items->Add(S3);
}
} //a mod 2 and b mod 2 = 0
private: System::Void aMod2ИBMod20ToolStripMenuItem_Click(System::Object^ sender,
System::EventArgs^ e) {
int k = 0;
String^ S3 = "";
S3 += "
";
for (int j = 0; j < M; j++) {
S3 += B[j] + " ";
}
listBox3->Items->Add(S3);
for (int i = 0; i < N; i++) {
S3 = "";
S3 += A[i] + " ";
for (int j = 0; j < M; j++) {
if (A[i] % 2 == 0 && B[j] % 2 == 0) {
S3=S3+" "+"1"+" ";
}
else
S3=S3+" "+"0"+" ";
}
listBox3->Items->Add(S3);
}
}
};
};
a<b
Вывод: В ходе выполнения лабораторной работы №5 нами было изучено
построение матриц бинарного отношения.
Download