summaryrefslogtreecommitdiff
path: root/lab3/report/lab3.tex
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2022-03-25 20:04:14 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2022-03-25 20:04:14 +0400
commite30b0473acca21a225cfcbdb661034661914f98f (patch)
tree32037e60660af94067e6dea6d95b5f6a2e219fc0 /lab3/report/lab3.tex
parentca1405279038223bd2d006aa90c6c61181f1a102 (diff)
Что-то похожее на третью лабу
Diffstat (limited to 'lab3/report/lab3.tex')
-rw-r--r--lab3/report/lab3.tex359
1 files changed, 359 insertions, 0 deletions
diff --git a/lab3/report/lab3.tex b/lab3/report/lab3.tex
new file mode 100644
index 0000000..6faca04
--- /dev/null
+++ b/lab3/report/lab3.tex
@@ -0,0 +1,359 @@
+\documentclass[spec, och, labwork2]{SCWorks}
+\usepackage{preamble}
+
+\begin{document}
+\include{titlepage.tex}
+\tableofcontents
+
+\section{Постановка задачи}
+
+Цель работы "--- изучение основных понятий универсальной алгебры и операций над
+бинарными отношениями. Порядок выполнения работы:
+\begin{enumerate}
+ \item
+ Рассмотреть понятие алгебраической операции и классификацию свойств
+ операций. Разработать алгоритмы проверки свойств операций:
+ ассоциативность, коммутативность, идемпотентность, обратимость,
+ дистрибутивность;
+ \item
+ Рассмотреть основные операции над бинарными отношениями. Разработать
+ алгоритмы выполнения операций над бинарными отношениями;
+ \item
+ Рассмотреть основные операции над матрицами. Разработать алгоритмы
+ выполнения операций над матрицами.
+\end{enumerate}
+
+\section{Теоретические сведения}
+
+\subsection{Алгебраические операции}
+
+\begin{definition}
+ Отображение $f : A^n \to A$ называется алгебраической $n$-арной операцией
+ или просто алгебраической операцией на множестве $A$. При этом $n$
+ называется порядком или арностью алгебраической операции $f$.
+\end{definition}
+
+Далее для бинарной операции $f$ по возможности будем использовать
+мультипликативную запись с помощью символа $\cdot$, т.е. вместо $f(x, y)$ писать
+$x \cdot y$, или просто $xy$. При необходимости для бинарной операции $f$
+используется также аддитивная запись с помощью символа $+$, т.е. вместо $f(x,
+y)$ записывается $x + y$.
+
+\begin{definition}
+ Бинарная операция $\cdot$ на множестве A называется
+ \begin{itemize}
+ \item
+ ассоциативной, если $\forall x, y, z \in A$ выполняется равенство
+ \[ x \cdot (y \cdot z) = (x \cdot y) \cdot z \]
+ \item
+ коммутативной, если $\forall x, y \in A$ выполняется равенство
+ \[ x \cdot y = y \cdot x \]
+ \item
+ идемпотентной, если $\forall x \in A$ выполняется равенство
+ \[ x \cdot x = x \]
+ \item
+ обратимой, если
+ \[ (\forall a \in A) \; \exists b \in A : a \cdot b = b \cdot a = e \]
+ где $e \in A$ и выполняется $a \cdot e = e \cdot a = a$
+ \item
+ дистрибутивной относительно бинарной операции $+$, если
+ $\forall x, y, z \in A$ выполняются равенства
+ \begin{align*}
+ x \cdot (y + z) &= (x \cdot y) + (x \cdot z) \\
+ (y + z) \cdot x &= (y \cdot x) + (z \cdot x)
+ \end{align*}
+ \end{itemize}
+\end{definition}
+
+\subsection{Основные операции над бинарными отношениями}
+
+\begin{enumerate}
+ \item Теоретико-множественные операции;
+ \item
+ Обращение бинарных отношений: обратным для бинарного отношения $\rho
+ \subset A \times B$ называется бинарное отношение $\rho^{-1} \subset B
+ \times A$, определяющееся по формуле:
+ \[ \rho^{-1} = \{ (b, a): (a, b) \in \rho \} \]
+ \item
+ Композиция композицией бинарных отношений $\rho \subset A \times B$ и
+ $\sigma \subset B \times C$ называется бинарное отношение $\rho \sigma$,
+ определяющееся по формуле:
+ \[ \rho \sigma = \{ (a, c): (a, b) \in \rho \land (b, c) \in \sigma \} \]
+\end{enumerate}
+
+\subsection{Основные операции над матрицами}
+
+\begin{enumerate}
+ \item Сложение матриц
+ \item Умножение матрицы на скаляр
+ \item Транспонирование матрицы
+ \item Умножение матриц
+\end{enumerate}
+
+\section{Алгоритмы проверки свойств операций}
+
+%
+\subsection{Проверка на ассоциативность}
+
+\textit{Вход.} Таблица Кэли $M = (m_{ij})$ размерности $N \times N$
+для операции $\cdot$ на множестве $A$.
+
+\textit{Выход.} <<Операция является ассоциативной>> или <<Операция не является
+ассоциативной>>.
+
+\begin{enumerate}
+ \item
+ Если $(\forall 0 \leq i, j, k < N)$ выполняется равенство $m_{pk} =
+ m_{jq}$, где $p$ "--- индекс $m_{ji}$, а $q$ "--- индекс $m_{ik}$, то
+ ответ "--- <<Операция является ассоциативной>>;
+ \item
+ Иначе, ответ "--- <<Операция не является ассоциативной>>.
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^3)$.
+
+%
+\subsection{Проверка на коммутативность}
+
+\textit{Вход.} Таблица Кэли $M = (m_{ij})$ размерности $N \times N$
+для операции $\cdot$ на множестве $A$.
+
+\textit{Выход.} <<Операция является коммутативной>> или <<Операция не является
+коммутативной>>.
+
+\begin{enumerate}
+ \item
+ Если $(\forall 0 \leq i, j < N) \; m_{ij} = m_{ji}$, то ответ "---
+ <<Операция является коммутативной>>;
+ \item Иначе, ответ "--- <<Операция не является коммутативной>>.
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^2)$.
+
+%
+\subsection{Проверка на идемпотентность}
+
+\textit{Вход.} Таблица Кэли $M = (m_{ij})$ размерности $N \times N$
+для операции $\cdot$ на множестве $A$.
+
+\textit{Выход.} <<Операция является идемпотентной>> или <<Операция не является
+идемпотентной>>.
+
+\begin{enumerate}
+ \item
+ Если $(\forall 0 \leq i < N) \; m_{ii} = a$, где $a$ "--- $i$-й элемент
+ множества $A$, то ответ "--- <<Операция является идемпотентной>>;
+ \item Иначе, ответ "--- <<Операция не является идемпотентной>>.
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N)$.
+
+%
+\subsection{Проверка на обратимость}
+
+\textit{Вход.} Таблица Кэли $M = (m_{ij})$ размерности $N \times N$
+для операции $\cdot$ на множестве $A$.
+
+\textit{Выход.} <<Операция является обратимой>> или <<Операция не является
+обратимой>>.
+
+\begin{enumerate}
+ \item
+ Если $(\forall 0 \leq i, j < N) \; m_{ij} = m_{ji}$, то ответ "---
+ <<Операция является обратимой>>;
+ \item Иначе, ответ "--- <<Операция не является обратимой>>.
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^2)$.
+
+%
+\subsection{Проверка на дистрибутивность}
+
+\textit{Вход.} Таблица Кэли $M^\cdot = (m^\cdot_{ij})$ размерности $N \times N$
+для операции $\cdot$ на множестве $A$, таблица Кэли $M^+ = (m^+_{ij})$
+размерности $N \times N$ для операции $+$ на множестве $A$
+
+\textit{Выход.} <<Операция является дистрибутивной>> или <<Операция не является
+дистрибутивной>>.
+
+% \begin{align*}
+% x \cdot (y + z) &= (x \cdot y) + (x \cdot z) \\
+% (y + z) \cdot x &= (y \cdot x) + (z \cdot x)
+% \end{align*}
+
+% i - x, j - y, k - z
+
+\begin{enumerate}
+ \item
+ Если $(\forall 0 \leq i, j, k < N)$ выполняются равенства $m^\cdot_{it}
+ = m^+_{pq}$ и $m^\cdot_{ti} = m^+_{rs}$, где $t$ "--- индекс $m^+_{jk}$,
+ $p$ "--- индекс $m^\cdot_{ij}$, $q$ "--- индекс $m^\cdot_{ik}$, $r$ "---
+ индекс $m^\cdot_{ji}$, $s$ "--- индекс $m^\cdot_{ki}$, то ответ "---
+ <<Операция является дистрибутивной>>;
+ \item Иначе, ответ "--- <<Операция не является дистрибутивной>>.
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^3)$.
+
+\section{Алгоритмы выполнения операций над бинарными отношениями}
+
+%
+\subsection{Вычисление объединения бинарных отношений}
+
+\textit{Вход.} Матрица $A(\rho) = (a_{ij})$ бинарного отношения $\rho$
+размерности $N \times N$, матрица $B(\sigma) = (b_{ij})$ бинарного отношения
+$\sigma$ размерности $N \times N$.
+
+\textit{Выход.} Матрица $C(\rho \cup \sigma) = (c_{ij})$ бинарного отношения
+$\rho \cup \sigma$.
+
+\begin{enumerate}
+ \item $(\forall 0 \leq i, j < N - 1) \; c_{ij} = a_{ij} + b_{ij}$.
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^2)$.
+
+%
+\subsection{Вычисление пересечения бинарных отношений}
+
+\textit{Вход.} Матрица $A(\rho) = (a_{ij})$ бинарного отношения $\rho$
+размерности $N \times N$, матрица $B(\sigma) = (b_{ij})$ бинарного отношения
+$\sigma$ размерности $N \times N$.
+
+\textit{Выход.} Матрица $C(\rho \cap \sigma) = (c_{ij})$ бинарного отношения
+$\rho \cap \sigma$.
+
+\begin{enumerate}
+ \item $(\forall 0 \leq i, j < N - 1) \; c_{ij} = a_{ij} \cdot b_{ij}$.
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^2)$.
+
+%
+\subsection{Вычисление дополнения бинарного отношения}
+
+\textit{Вход.} Матрица $M(\rho) = (m_{ij})$ бинарного отношения $\rho$
+размерности $N \times N$.
+
+\textit{Выход.} Матрица $M'(M(\rho)) = (m'_{ij})$ дополнения бинарного отношения
+$\rho$.
+
+\begin{enumerate}
+ \item $(\forall 0 \leq i, j < N - 1) \; m'_{ij} = 1 - m_{ij}$.
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^2)$.
+
+%
+\subsection{Вычисление обратного бинарного отношения}
+
+\textit{Вход.} Матрица $M(\rho) = (m_{ij})$ бинарного отношения $\rho$
+размерности $N \times N$.
+
+\textit{Выход.} Матрица $M'(M(\rho)) = (m'_{ij})$ бинарного отношения
+$\rho^{-1}$.
+
+\begin{enumerate}
+ \item Ответом является матрица транспонированная матрица $M^T = M'$.
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^2)$.
+
+%
+\subsection{Вычисление композиции бинарных отношений}
+
+\textit{Вход.} Матрица $A(\rho) = (a_{ij})$ бинарного отношения $\rho$
+размерности $N \times N$, матрица $B(\sigma) = (b_{ij})$ бинарного отношения
+$\sigma$ размерности $N \times N$.
+
+\textit{Выход.} Матрица $C(\rho\sigma) = (c_{ij})$ бинарного отношения
+$\rho\sigma$.
+
+\begin{enumerate}
+ \item Ответом является матрица $C = A \cdot B$, вычисленная с помощью
+ алгоритма 5.4 Умножения матриц.
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^3)$.
+
+\section{Алгоритмы выполнения операций над матрицами}
+
+%
+\subsection{Сложение матриц}
+
+\textit{Вход.} Матрица $A = (a_{ij})$ размерности $N \times M$, матрица
+$B = (b_{ij})$ размерности $N \times M$.
+
+\textit{Выход.} Матрица $C = (c_{ij})$ размерности $N \times M$.
+
+\begin{enumerate}
+ \item
+ $(\forall 0 \leq i < N) (\forall 0 \leq j < M) \;
+ c_{ij} = a_{ij} + b_{ij}$
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^2)$.
+
+%
+\subsection{Умножение матрицы на скаляр}
+
+\textit{Вход.} Матрица $A = (a_{ij})$ размерности $N \times M$, скаляр $\alpha$.
+
+\textit{Выход.} Матрица $A' = (a'_{ij})$ размерности $N \times M$.
+
+\begin{enumerate}
+ \item
+ $(\forall 0 \leq i < N) (\forall 0 \leq j < M) \;
+ a'_{ij} = \alpha \cdot a_{ij}$
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^2)$.
+
+%
+\subsection{Транспонирование матрицы}
+
+\textit{Вход.} Матрица $A = (a_{ij})$ размерности $N \times M$.
+
+\textit{Выход.} Матрица $A^T = (a^T_{ij})$ размерности $M \times N$.
+
+\begin{enumerate}
+ \item $(\forall 0 \leq i < N) (\forall 0 \leq j < M) \; a^T_{ji} = a_{ij}$
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^2)$.
+
+%
+\subsection{Умножение матриц}
+
+\textit{Вход.} Матрица $A = (a_{ij})$ размерности $N \times M$, матрица $B =
+(b_{ij})$ размерности $M \times K$.
+
+\textit{Выход.} Матрица $C = (c_{ij}) = A \cdot B$ размерности $N \times K$.
+
+\begin{enumerate}
+ \item
+ $ \displaystyle
+ (\forall 0 \leq i < N) (\forall 0 \leq j < M) \;
+ c_{ij} = \sum_{k = 0}^{K - 1} a_{ik} + \sum_{k = 0}^{K - 1} b_{kj}$
+\end{enumerate}
+
+Трудоёмкость алгоритма --- $O(N^3)$.
+
+\section{Программная реализация}
+
+\inputminted[fontsize=\small, breaklines=true, style=bw, linenos]{c}{../lab3.py}
+
+\section{Результаты тестирования}
+
+текст
+
+\conclusion
+
+В ходе выполнения данной лабораторной работы были изучены основные свойства
+алгебраических операций, основные операции над бинарными отношениями, основные
+операции над матрицами. Были разработаны алгоритмы для программной реализации
+данных операций, а также была произведена оценка сложности данных алгоритмов.
+Программная реализация на языке Python с библиотекой numpy успешно прошла
+тестирование.
+
+\end{document}