\documentclass{beamer}

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{multirow}
\graphicspath{ {./images/} }

\usetheme{Madrid}

\title[Разложение автоматов]{Классификация состояний и подавтоматов. Разложение
автоматов и расщепляемый автомат}
\author[А.~Ю.~Гущин]{Андрей~Гущин}
\institute[СГУ]{Саратовский Государственный Университет}
\date{16 февраля 2023 г.}


\AtBeginSection[]{
  \begin{frame}
  \vfill
  \centering
  \begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
    \usebeamerfont{title}\insertsectionhead\par%
  \end{beamercolorbox}
  \vfill
  \end{frame}
}

\begin{document}

\maketitle


\section{Классификация состояний и подавтоматов}

\begin{frame}{Классификация дуг}
  \begin{minipage}[t]{0.48\linewidth}
    Дуга относительно данного состояния $\sigma_i$ может быть
    \begin{itemize}
      \item
        \emph{заходящей} в $\sigma_i$, если она направлена к $\sigma_i$ из
        другого состояния,
      \item
        \emph{исходящей} из $\sigma_i$, если она направлена от $\sigma_i$ к
        другому состоянию,
      \item 
        \emph{петлёй}, если она выходит из $\sigma_i$ и входит в $\sigma_i$.
    \end{itemize}
  \end{minipage}
  \hfill
  \begin{minipage}[t]{0.48\linewidth}
    \vspace{25pt}
    \begin{figure}[H]
      \includegraphics[width=\textwidth]{edges}
    \end{figure}
  \end{minipage}
\end{frame}

\begin{frame}{Классификация состояний}
  Состояние, в котором отсутствуют заходящие и (или) исходящие дуги, может быть
  одним из следующих типов:
  \begin{itemize}
    \item
      \emph{преходящее состояние} --- состояние, которое не имеет заходящих
      дуг, но имеет, по крайней мере, одну исходящую дугу;
    \item
      \emph{тупиковое состояние} --- состояние, которое не содержит исходящих
      дуг, но содержит, по крайней мере, одну заходящую дугу;
    \item
      \emph{изолированное состояние} --- состояние, которое не содержит ни
      заходящих, ни исходящих дуг.
  \end{itemize}
\end{frame}

\begin{frame}{Подавтомат}
  \begin{minipage}[t]{0.48\linewidth}
    Подавтомат --- любое подмножество множества состояний автомата. Рассматривая
    каждый подавтомат как одно <<сверхсостояние>>, преходящий, тупиковый или
    изолированный подавтоматы могут быть определены точно так же, как преходящее,
    тупиковое и изолированное состояние с заменой слова <<состояние>> на
    <<подавтомат>>.
  \end{minipage}
  \hfill
  \begin{minipage}[t]{0.48\linewidth}
    \vspace{10pt}
    \begin{figure}[H]
      \includegraphics[width=\textwidth]{subauto}
    \end{figure}
  \end{minipage}
\end{frame}

% \begin{frame}{}
%   Пусть $G_k(S_i)$ обозначает множество всех состояний автомата $M$, в
%   которые можно попасть из любых состояний множества $S_i = \{\sigma_{i_1},
%   \sigma_{i_2}, \dots, \sigma_{i_r}\}$ при подаче на вход последовательности
%   длины $k$ или меньше. В частности, $G_0(S_i) = S_i$. Множество $G_1(S_i)$
%   есть объединение $S_i$ и всех состояний, указанных в строках $\sigma_{i_1},
%   \sigma_{i_2}, \dots, \sigma_{i_r}$, подтаблицы $s_{v + 1}$ таблицы переходов
%   $M$. С другой стороны, $G_1(S_i)$ может быть определено путем просмотра графа
%   переходов автомата $M$. Если задано $G_{k - 1}(S_i)$, $k \geq 1$, то
%   $G_k(S_i)$ может быть определено из соотношения
%   \begin{equation*}
%     G_k(S_i) = G_1(G_{k - 1}(S_i))
%   \end{equation*}

%   Если $G_k(S_i) = G_{k - 1}(S_i)$, то $G_{k + u}(S_i) = G_{k - 1}(S_i)$ для
%   всех неотрицательных целых $u$; следовательно, $G_k(S_i)$ составляет множество
%   всех состояний, в которые можно попасть из $S_i$ если на вход подавать
%   последовательности любой длины. Определение этого множества, обозначаемого
%   просто $G(S_i)$ может быть теперь описано при помощи следующего алгоритма.
% \end{frame}

\begin{frame}{}
  Пусть $G_k(S_i)$ обозначает множество всех состояний автомата $M$, в
  которые можно попасть из любых состояний множества $S_i = \{\sigma_{i_1},
  \sigma_{i_2}, \dots, \sigma_{i_r}\}$ при подаче на вход последовательности
  длины $k$ или меньше. В частности, $G_0(S_i) = S_i$. Если задано $G_{k -
  1}(S_i)$, $k \geq 1$, то $G_k(S_i)$ может быть определено из соотношения
  \begin{equation*}
    G_k(S_i) = G_1(G_{k - 1}(S_i))
  \end{equation*}

  Если $G_k(S_i) = G_{k - 1}(S_i)$, то $G_{k + u}(S_i) = G_{k - 1}(S_i)
  \; (\forall u \geq 1)$; следовательно, $G_k(S_i)$ составляет множество
  всех состояний, в которые можно попасть из $S_i$ если на вход подавать
  последовательности любой длины. Такое множество можно обозначить просто
  $G(S_i)$.
\end{frame}

\begin{frame}{}
  \begin{block}{Алгоритм}
    Дано $S_i$; найти $G(S_i)$.
    \begin{enumerate}
      \item Пусть $G_0(S_i) = S_i$. Полагаем $k = 1$.
      \item Определяем $G_k(S_i) = G_1(G_{k - 1}(S_i))$
      \item
        \begin{itemize}
          \item
            Если $G_k(S_i) \neq G_{k - 1}(S_i)$, увеличиваем $k$ на 1 и
            возвращаемся к (2).
          \item Если $G_k(S_i) = G_{k - 1}(S_i)$, то $G_k(S_i) = G(S_i)$.
        \end{itemize}
    \end{enumerate}
  \end{block}
  
\end{frame}
\begin{frame}
  Если $G_k(S_i) \neq G_{k - 1}(S_i)$, то $G_k(S_i)$ должно содержать, по
  крайней мере, на один элемент больше, чем $G_{k - 1}(S_i)$. Так как
  мощность $G_k(S_i)$ не может превышать общее число $n$ состояний автомата
  $M$, то $G_k(S_i)$ должно равняться $G_{k - 1}(S_i)$ для $k \leq n - r + 1$,
  где $r$ --- мощность множества $S_i$. Следовательно,
  \begin{equation}
    G(S_i) = G_{n - r}(S_i)
  \end{equation}

  Это значит, что алгоритм требует не более чем $n - r$ итераций пункта 2.
\end{frame}

\begin{frame}{Достижимость в автоматах}
  \begin{block}{Определение}
    Если $S_i$, состоит из одного состояния $\sigma_i$, то $G(\sigma_i)$
    называется $\sigma_i$-достижимым множеством и представляет собой множество
    всех состояний, в которые можно попасть из состояния $\sigma_i$.
  \end{block}

  \begin{block}{Теорема}
    Пусть $\sigma_i$ и $\sigma_j$ --- два состояния в автомате с $n$
    состояниями. Если $\sigma_j$ вообще достижимо из $\sigma_i$, то оно
    достижимо при подаче входной последовательности длиной не более $n - 1$.
  \end{block}
\end{frame}


\section{Разложение автоматов и расщепляемый автомат}

\begin{frame}
  Пусть $H_k(S_i)$ обозначает множество всех состояний автомата $M$, соединённых
  с состояниями $S_i = \{\sigma_{i_1}, \sigma_{i_2}, \dots, \sigma_{i_r}\}$
  посредством $k$ или меньшего числа дуг, причём направление дуг несущественно.
  В частности, $H_0(S_i) = S_i$. $Н(S_i)$ составляет множество всех состояний,
  связанных с $S_i$ цепью рёбер любой длины.
\end{frame}

\begin{frame}{Разложимость автомата}
  \begin{minipage}[t]{0.48\linewidth}
    Автомат или подавтомат, который содержит два или большее число изолированных
    подавтоматов, будем называть разложимым. Если $Н(\sigma_i) \neq S$, то
    $H(\sigma_i)$ составляет неразложимый изолированный подавтомат автомата $M$.
    Если $Н(\sigma_i) = S$, то можно заключить, что автомат $M$ неразложим.

    Максимальное разложение автомата --- разложение автомата на максимально
    возможное число изолированных подавтоматов.
  \end{minipage}
  \hfill
  \begin{minipage}[t]{0.48\linewidth}
    \vspace{20pt}
    \begin{figure}[H]
      \includegraphics[width=\textwidth]{composite}
    \end{figure}
  \end{minipage}
\end{frame}

\begin{frame}{Расщепляемость автомата}
  \begin{minipage}[t]{0.48\linewidth}
    Два или большее число автоматов называются сравнимыми, если они имеют
    одинаковые входные алфавиты. Пусть $M_1, M_2, \dots, M_N$ --- сравнимые
    автоматы, представляющие $N$ различных систем, и пусть $М$ --- автомат,
    который состоит из изолированных подавтоматов $M_i, i = \overline{1, N}$. $M$
    называется расщепляемым автоматом автоматов $M_i$ и обозначается $\Delta(M_1,
    M_2, \dots, M_N)$.
  \end{minipage}
  \hfill
  \begin{minipage}[t]{0.48\linewidth}
    \vspace{-10pt}
    \begin{figure}[H]
      \includegraphics[width=\textwidth]{splitted}
    \end{figure}
  \end{minipage}
\end{frame}


\end{document}
