From bc6fa2f8d7967acd859c0f660cad81199e53b0fb Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Thu, 19 May 2022 14:12:12 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BE=D1=82=D1=87=D1=91=D1=82=D0=BE=D0=B2=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BF=D0=B5=D1=80=D0=B2=D1=8B=D0=BC=20=D1=82=D1=80?= =?UTF-8?q?=D1=91=D0=BC=20=D0=BB=D0=B0=D0=B1=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reports/lab3/lab3.tex | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 reports/lab3/lab3.tex (limited to 'reports/lab3/lab3.tex') diff --git a/reports/lab3/lab3.tex b/reports/lab3/lab3.tex new file mode 100644 index 0000000..4f26e2b --- /dev/null +++ b/reports/lab3/lab3.tex @@ -0,0 +1,36 @@ +\documentclass[spec, och, labwork]{SCWorks} +\usepackage{preamble} + +\begin{document} +\include{titlepage.tex} + +\section*{Описание работы алгоритма} + +Пусть даны множество $S$ и разбиение $\pi$ множества $S$ на непересекающиеся +блоки $\{ B_1, B_2, \ldots, B_p \}$. Кроме того, дана функция $f: S \to S$. +Задача состоит в том, чтобы найти грубейшее (с наименьшим количеством блоков) +разбиение $\pi' = \{ E_1, E_2, \ldots, E_q \}$ множества $S$, что +\begin{enumerate} + \item + $\pi'$ "--- подразбиение разбиения $\pi$ (т. е. каждое множество + является подмножеством некоторого блока $B_j$); + \item + если $a$ и $b$ принадлежат $E_i$, то $f(a)$ и $f(b)$ принадлежат $E_j$ + для некоторого $j$. +\end{enumerate} + +Очевидное решение состоит в повторном утончении блоков исходного разбиения +следующим способом. Пусть $B_i$ "--- какой-нибудь блок. Рассмотрим $f(a)$ для +каждого $a$ из $B_i$. Разобьём $B_i$ так, чтобы два элемента $a$ и $b$ попадали +в один блок тогда и только тогда, когда $f(a)$ и $f(b)$ оба принадлежат +некоторому блоку $B_j$. Процесс повторяется до тех пор, пока уже нельзя будет +проводить дальнейшие утончения. + +Этот метод даёт алгоритм сложности $O(n^2)$, поскольку каждое утончение занимает +время $O(n)$, а всего может быть $O(n)$ утончений. + +\subsection*{Реализация на языке Python} + +\inputminted[fontsize=\small, breaklines=true, style=bw, linenos]{c}{../../partition.py} + +\end{document} -- cgit v1.2.3