diff options
Diffstat (limited to 'Теория автоматов')
| -rw-r--r-- | Теория автоматов/2_6-2_7/images/composite.png | bin | 0 -> 78097 bytes | |||
| -rw-r--r-- | Теория автоматов/2_6-2_7/images/edges.png | bin | 0 -> 30254 bytes | |||
| -rw-r--r-- | Теория автоматов/2_6-2_7/images/splitted.png | bin | 0 -> 79453 bytes | |||
| -rw-r--r-- | Теория автоматов/2_6-2_7/images/subauto.png | bin | 0 -> 142696 bytes | |||
| -rwxr-xr-x | Теория автоматов/2_6-2_7/maker.sh | 35 | ||||
| -rw-r--r-- | Теория автоматов/2_6-2_7/presentation.pdf | bin | 0 -> 417003 bytes | |||
| -rw-r--r-- | Теория автоматов/2_6-2_7/presentation.tex | 225 | ||||
| -rw-r--r-- | Теория автоматов/2_6-2_7/templ.tex | 254 |
8 files changed, 514 insertions, 0 deletions
diff --git a/Теория автоматов/2_6-2_7/images/composite.png b/Теория автоматов/2_6-2_7/images/composite.png Binary files differnew file mode 100644 index 0000000..7388808 --- /dev/null +++ b/Теория автоматов/2_6-2_7/images/composite.png diff --git a/Теория автоматов/2_6-2_7/images/edges.png b/Теория автоматов/2_6-2_7/images/edges.png Binary files differnew file mode 100644 index 0000000..75d7734 --- /dev/null +++ b/Теория автоматов/2_6-2_7/images/edges.png diff --git a/Теория автоматов/2_6-2_7/images/splitted.png b/Теория автоматов/2_6-2_7/images/splitted.png Binary files differnew file mode 100644 index 0000000..e224296 --- /dev/null +++ b/Теория автоматов/2_6-2_7/images/splitted.png diff --git a/Теория автоматов/2_6-2_7/images/subauto.png b/Теория автоматов/2_6-2_7/images/subauto.png Binary files differnew file mode 100644 index 0000000..a896949 --- /dev/null +++ b/Теория автоматов/2_6-2_7/images/subauto.png diff --git a/Теория автоматов/2_6-2_7/maker.sh b/Теория автоматов/2_6-2_7/maker.sh new file mode 100755 index 0000000..e847acf --- /dev/null +++ b/Теория автоматов/2_6-2_7/maker.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +watch() { + [ -z "$1" ] && echo "Необходимо указать название основного документа" && help + set -o xtrace + latexmk -pdf -f -shell-escape -interaction=nonstopmode -pvc $1 +} + +doc() { + [ -z "$1" ] && echo "Необходимо указать название основного документа" && help + set -o xtrace + latexmk -pdf -f -shell-escape -interaction=nonstopmode $1 +} + +clean() { + set -o xtrace + rm -rf _minted-* + find . -name "*.aux" -exec rm {} \; + rm -f *.dvi *.fdb_latexmk *.fls *.log *.out *.toc +} + +help() { + echo "Использование:" + echo "./maker.sh watch <main-doc>.tex -> Запуск процесса, пересобирающего документ при изменениях" + echo "./maker.sh doc <main-doc>.tex -> Пересобрать документ" + echo "./maker.sh clean -> Удаление сгенерированных файлов" + exit 1 +} + +case "$1" in + watch) watch $2 ;; + doc) doc $2 ;; + clean) clean ;; + *) help ;; +esac diff --git a/Теория автоматов/2_6-2_7/presentation.pdf b/Теория автоматов/2_6-2_7/presentation.pdf Binary files differnew file mode 100644 index 0000000..a09ee7a --- /dev/null +++ b/Теория автоматов/2_6-2_7/presentation.pdf diff --git a/Теория автоматов/2_6-2_7/presentation.tex b/Теория автоматов/2_6-2_7/presentation.tex new file mode 100644 index 0000000..12f84fd --- /dev/null +++ b/Теория автоматов/2_6-2_7/presentation.tex @@ -0,0 +1,225 @@ +\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} diff --git a/Теория автоматов/2_6-2_7/templ.tex b/Теория автоматов/2_6-2_7/templ.tex new file mode 100644 index 0000000..c25e980 --- /dev/null +++ b/Теория автоматов/2_6-2_7/templ.tex @@ -0,0 +1,254 @@ +\documentclass{beamer} + +\usepackage[T2A]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[english,russian]{babel} +\usepackage{wrapfig} +\usepackage{graphicx} +\usepackage{multirow} +\graphicspath{ {./images/} } + +\usetheme{Madrid} + +\title{Алгоритмы сжатия изображений} +\author[А.~Ю.~Гущин \and Р.~И.~Стаин]{Андрей~Гущин \and Роман~Стаин} +\institute[СГУ]{Саратовский Государственный Университет} +\date{11 ноября 2022 г.} + +\begin{document} + +\maketitle + +\begin{frame}{Представление цифровых изображений} + \begin{figure}[H] + \includegraphics[width=0.9\textwidth]{compare} + \end{figure} +\end{frame} + +\begin{frame}{Алгоритмы сжатия без потерь} + Основными и самыми популярными алгоритмами сжатия без потерь являются: + \begin{itemize} + \item + \textbf{RLE} --- используется в форматах PCX --- в качестве основного метода + и в форматах BMP, TGA, TIFF в качестве одного из доступных. + \item \textbf{LZW} --- используется в формате GIF + \item \textbf{Deflate} --- используется в формате PNG + \end{itemize} +\end{frame} + +\begin{frame}{Run-Length Encoding (RLE)} + \begin{itemize} + \item \texttt{WWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW} + \pause + \item \texttt{9W3B24W1B14W} + \end{itemize} +\end{frame} +\begin{frame}{Run-Length Encoding (RLE)} + \begin{itemize} + \item \texttt{ABCABCABCDDDFFFFFF} + \pause + \item \texttt{1A1B1C1A1B1C1A1B1C3D6F} + \pause + \item \texttt{-9ABCABCABC3D6F} + \end{itemize} +\end{frame} +\begin{frame}{Run-Length Encoding (RLE)} + \begin{itemize} + \item + \texttt{AAAAA{\dots}AAAAA} + \pause + \item \texttt{127A127A2A} + \end{itemize} +\end{frame} + +\begin{frame}{Lempel-Ziv-Welch (LZW) --- Кодирование} + \begin{table}[H] + \centering + \scriptsize + \begin{tabular}{|c|c|c|r|l|} + \hline + % Первая строка заголовка + \multirow{2}{*}{Символ} & + \multirow{2}{*}{Следующий} & + \multicolumn{2}{|c|}{Вывод} & + \multirow{2}{*}{Расширение словаря} \\ \cline{3-4} + % Вторая строка заголовка + && Код & \multicolumn{1}{|c|}{Биты} & \\ \hline + % Символ & Следующий & Код & Биты & Расширение словаря \\ + NULL & T & & & \\ \hline + T & O & 20 & \texttt{10100} & 27: TO \\ \hline + O & B & 15 & \texttt{101111} & 28: OB \\ \hline + B & E & 2 & \texttt{100010} & 29: BE \\ \hline + E & O & 5 & \texttt{100101} & 30: EO \\ \hline + O & R & 15 & \texttt{101111} & 31: OR \\ \hline + R & N & 18 & \texttt{110010} & 32: RN \\ \hline + N & O & 14 & \texttt{1001110} & 33: NO \\ \hline + O & T & 15 & \texttt{1001111} & 34: OT \\ \hline + T & T & 20 & \texttt{1010100} & 35: TT \\ \hline + TO & B & 27 & \texttt{1011011} & 36: TOB \\ \hline + BE & O & 29 & \texttt{1011101} & 37: BEO \\ \hline + OR & T & 31 & \texttt{1011111} & 38: ORT \\ \hline + TOB & E & 36 & \texttt{1100100} & 39: TOBE \\ \hline + EO & R & 30 & \texttt{1011110} & 40: EOR \\ \hline + RN & O & 32 & \texttt{1100000} & 41: RNO \\ \hline + OT & \# & 34 & \texttt{1100010} & \\ \hline + & & 0 & \texttt{000000} & \\ \hline + \end{tabular} + \end{table} +\end{frame} +\begin{frame}{Lempel-Ziv-Welch (LZW) --- Декодирование} + \begin{table}[H] + \centering + \scriptsize + \begin{tabular}{|r|c|c|l|l|} + \hline + % Первая строка заголовка + \multicolumn{2}{|c|}{Ввод} & + \multirow{2}{*}{Вывод} & + \multicolumn{2}{|c|}{Новая запись} \\ \cline{1-2} \cline{4-5} + % Вторая строка заголовка + \multicolumn{1}{|c|}{Биты} & + Код & & + \multicolumn{1}{|c|}{Полная} & + \multicolumn{1}{|c|}{Частичная} \\ \hline + % Биты & Код & Вывод & Полная & Частичная \\ + \texttt{10100} & 20 & T & & 27: T? \\ \hline + \texttt{01111} & 15 & O & 27: TO & 28: O? \\ \hline + \texttt{00010} & 2 & B & 28: OB & 29: B? \\ \hline + \texttt{00101} & 5 & E & 29: BE & 30: E? \\ \hline + \texttt{01111} & 15 & O & 30: EO & 31: O? \\ \hline + \texttt{10010} & 18 & R & 31: OR & 32: R? \\ \hline + \texttt{001110} & 14 & N & 32: RN & 33: N? \\ \hline + \texttt{001111} & 15 & O & 33: NO & 34: O? \\ \hline + \texttt{010100} & 20 & T & 34: OT & 35: T? \\ \hline + \texttt{011011} & 27 & TO & 35: TT & 36: TO? \\ \hline + \texttt{011101} & 29 & BE & 36: TOB & 37: BE? \\ \hline + \texttt{011111} & 31 & OR & 37: BEO & 38: OR? \\ \hline + \texttt{100100} & 36 & TOB & 38: ORT & 39: TOB? \\ \hline + \texttt{011110} & 30 & EO & 39: TOBE & 40: EO? \\ \hline + \texttt{100000} & 32 & RN & 40: EOR & 41: RN? \\ \hline + \texttt{100010} & 34 & OT & 41: RNO & 42: OT? \\ \hline + \texttt{000000} & 0 & \# & & \\ \hline + \end{tabular} + \end{table} +\end{frame} + +\begin{frame}{Алгоритмы сжатия с потерями} + Наиболее часто применяемые алгоритмы сжатия с потерями: + \begin{itemize} + \item + Дискретное косинусное преобразование "--- кодирование, основанное на + преобразованиях Фурье. + \item Вейвлет сжатие "--- сжатие за счёт отбрасывания низких амплитуд. + \item Квантование цветов "--- процесс уменьшения количества различных цветов. + \item + Прореживание (субдискретизация) компонентов цветности "--- усреднение или + уменьшение части информации о цветности изображения. + \item + Фрактальное сжатие "--- алгоритм сжатия изображений с потерями, основанный + на применении систем итерируемых функций к изображениям + \end{itemize} +\end{frame} + +\begin{frame}{Преобразование цветового пространства} + \begin{figure}[H] + \includegraphics[width=0.9\textwidth]{YCbCr} + \end{figure} + \begin{align*} + Y' &= K_R \cdot R' + (1 - K_R - K_B) \cdot G' + K_B \cdot B' \\ + C_B &= \frac{1}{2} \cdot \frac{B' - Y'}{1 - K_B} \\ + C_R &= \frac{1}{2} \cdot \frac{R' - Y'}{1 - K_R} \\ + \end{align*} +\end{frame} + +\begin{frame}{Прореживание (субдискретизация) компонентов цветности} + Есть несколько схем прореживания, которые применяются в зависимости от + требований к качеству изображения после его восстановления. Структура + дискретизации сигнала обозначается как соотношение между тремя частями X:a:b + (например, 4:2:2). + + \begin{figure}[H] + \includegraphics[width=0.9\textwidth]{subd} + \end{figure} +\end{frame} + +\begin{frame}{Дискретное косинусное преобразование} + \begin{minipage}[t]{0.48\linewidth} + \begin{figure}[H] + \includegraphics[width=\textwidth]{dct64} + \end{figure} + \end{minipage} + \hfill + \begin{minipage}[t]{0.48\linewidth} + \begin{align*} + RES &= DCT \cdot IMG \cdot DCT^T \\ + DCT &= + \sqrt{\frac{2}{N}} \cdot + \cos{\frac{(2j + 1) \cdot i \cdot \pi}{2 \cdot N}} \\ + N &= 8, 0 \leq i, j \leq 7 + \end{align*} + \end{minipage} +\end{frame} + +\begin{frame}{Дискретное косинусное преобразование} + До преобразования ДКП: + \begin{equation*} + \begin{pmatrix} + 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\ + 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\ + 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\ + 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\ + 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\ + 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\ + 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 \\ + 100 & 100 & 100 & 100 & 100 & 100 & 100 & 100 + \end{pmatrix} + \end{equation*} +\end{frame} + +\begin{frame}{Дискретное косинусное преобразование} + После преобразования ДКП: + \begin{equation*} + \begin{pmatrix} + 800 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 + \end{pmatrix} + \end{equation*} +\end{frame} + +\begin{frame}{Квантование и кодирование} + \begin{minipage}[t]{0.48\linewidth} + \begin{figure}[H] + \includegraphics[width=\textwidth]{q1} + \end{figure} + \end{minipage} + \hfill + \begin{minipage}[t]{0.48\linewidth} + \begin{figure}[H] + \includegraphics[width=\textwidth]{q2} + \end{figure} + \end{minipage} +\end{frame} + +\begin{frame}{Фрактальное сжатие изображений} + \begin{figure}[H] + \includegraphics[width=\textwidth]{fractal} + \end{figure} +\end{frame} + +\begin{frame} + \frametitle{Внимание!} + + \begin{center} + {\Huge Спасибо за внимание!} \\ + {\footnotesize Сжимайте осторожнее.} + \end{center} +\end{frame} + +\end{document} |