Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых» (ВлГУ) Кафедра физики и прикладной математики ЛАБОРАТОРНАЯ РАБОТА №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 нами было изучено построение матриц бинарного отношения.