From 7030059bbbf2818b1df8a7be54dc2e525af76dfb Mon Sep 17 00:00:00 2001 From: Arity-T Date: Wed, 23 Apr 2025 20:24:23 +0300 Subject: [PATCH] lab2 --- lab2/.gitignore | 8 + lab2/img/ka.png | Bin 0 -> 113928 bytes lab2/img/nka.png | Bin 0 -> 65487 bytes lab2/img/result1.png | Bin 0 -> 37505 bytes lab2/img/wrong.png | Bin 0 -> 11815 bytes lab2/programm/finite_automaton.py | 63 +++ lab2/programm/main.py | 82 ++++ lab2/report.tex | 664 ++++++++++++++++++++++++++++++ 8 files changed, 817 insertions(+) create mode 100644 lab2/.gitignore create mode 100644 lab2/img/ka.png create mode 100644 lab2/img/nka.png create mode 100644 lab2/img/result1.png create mode 100644 lab2/img/wrong.png create mode 100644 lab2/programm/finite_automaton.py create mode 100644 lab2/programm/main.py create mode 100644 lab2/report.tex diff --git a/lab2/.gitignore b/lab2/.gitignore new file mode 100644 index 0000000..96dc833 --- /dev/null +++ b/lab2/.gitignore @@ -0,0 +1,8 @@ +**/* +!.gitignore +!report.tex +!img +!img/** +!programm +!programm/*.py +!programm/*.txt \ No newline at end of file diff --git a/lab2/img/ka.png b/lab2/img/ka.png new file mode 100644 index 0000000000000000000000000000000000000000..de717dabda21db2d30d50b96868084f16cb99249 GIT binary patch literal 113928 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

YmxZvOl#`AUzvGp*sE=#L)ndE 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 LRAuv}O<(;#PKu{H literal 0 HcmV?d00001 diff --git a/lab2/img/result1.png b/lab2/img/result1.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e95734d9aa573270b00e362402e02ab670b90a GIT binary patch literal 37505 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 literal 0 HcmV?d00001 diff --git a/lab2/programm/finite_automaton.py b/lab2/programm/finite_automaton.py new file mode 100644 index 0000000..46fce4c --- /dev/null +++ b/lab2/programm/finite_automaton.py @@ -0,0 +1,63 @@ +import random + + +class FiniteAutomaton: + def __init__( + self, + transitions: dict[str, list[tuple[str, str]]], + initial_state: str, + final_states: set[str], + alphabet: set[str], + ): + self.transitions = transitions + self.initial_state = initial_state + self.final_states = final_states + self.alphabet = alphabet + + def _get_next_state(self, current_state: str, char: str) -> str | None: + if current_state in self.transitions: + for transition, next_state in self.transitions[current_state]: + if char in transition: + return next_state + return None + + def process_input(self, input_string: str) -> tuple[str, list[str]]: + current_state = self.initial_state + transitions_path = [current_state] + + for char in input_string: + if char not in self.alphabet: + return f"Символ '{char}' не из алфавита", transitions_path + + next_state = self._get_next_state(current_state, char) + + if next_state is None: + return "Строка не соответствует", transitions_path + + transitions_path.append(next_state) + current_state = next_state + + return ( + "Строка соответствует" + if current_state in self.final_states + else "Строка не соответствует" + ), transitions_path + + def generate_random_string(self, stop_probability: float = 0.3) -> str: + result = [] + current_state = self.initial_state + + while True: + if ( + current_state in self.final_states + and random.random() < stop_probability + ): + break + + transition, next_state = random.choice(self.transitions[current_state]) + + char = random.choice(transition) + result.append(char) + current_state = next_state + + return "".join(result) diff --git a/lab2/programm/main.py b/lab2/programm/main.py new file mode 100644 index 0000000..143fd83 --- /dev/null +++ b/lab2/programm/main.py @@ -0,0 +1,82 @@ +from finite_automaton import FiniteAutomaton + + +def main(): + alphabet = set("+-0123456789.,eE") + initial_state = "S0" + final_states = {"S2", "S4", "S7", "S8", "S9"} + + transitions = { + "S0": [("+-", "S1"), ("123456789", "S2"), ("0", "S8")], + "S1": [("123456789", "S2"), ("0", "S8")], + "S2": [("0123456789", "S2"), (".,", "S3"), ("eE", "S5")], + "S3": [("0123456789", "S4")], + "S4": [("0123456789", "S4"), ("eE", "S5")], + "S5": [("+-", "S6"), ("123456789", "S7"), ("0", "S9")], + "S6": [("123456789", "S7"), ("0", "S9")], + "S7": [("0123456789", "S7")], + "S8": [(".,", "S3")], + } + + automaton = FiniteAutomaton( + transitions=transitions, + initial_state=initial_state, + final_states=final_states, + alphabet=alphabet, + ) + + print("Конечный автомат для распознавания форматов вещественных чисел") + print("=" * 60) + print("Варианты команд:") + print(" - check <строка> - проверить, соответствует ли строка автомату") + print( + " - gen [<вероятность_остановки>] - сгенерировать случайную строку (по умолчанию 0.3)" + ) + print(" - q - выход из программы") + print("=" * 60) + + while True: + command = input("\nВведите команду: ").strip() + + if not command: + continue + + parts = command.split() + cmd = parts[0].lower() + + if cmd == "q": + print("Выход из программы.") + break + + elif cmd == "check": + input_string = "" + if len(parts) > 1: + input_string = " ".join(parts[1:]).strip() + + message, transitions = automaton.process_input(input_string) + + print(f"Результат: {message}") + print("Путь переходов:", " -> ".join(transitions)) + + elif cmd == "gen": + stop_prob = 0.3 + if len(parts) > 1: + try: + stop_prob = float(parts[1]) + if not (0 < stop_prob <= 1): + raise ValueError( + "Вероятность должна быть больше 0 и меньше либо равна 1" + ) + except ValueError as e: + print(f"Ошибка: {e}") + continue + + random_string = automaton.generate_random_string(stop_prob) + print(f"Сгенерированная строка: {random_string}") + + else: + print(f"Неизвестная команда: {cmd}") + + +if __name__ == "__main__": + main() diff --git a/lab2/report.tex b/lab2/report.tex new file mode 100644 index 0000000..fd2bb4e --- /dev/null +++ b/lab2/report.tex @@ -0,0 +1,664 @@ +\documentclass[a4paper, final]{article} +%\usepackage{literat} % Нормальные шрифты +\usepackage[14pt]{extsizes} % для того чтобы задать нестандартный 14-ый размер шрифта +\usepackage{tabularx} +\usepackage[T2A]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[russian]{babel} +\usepackage{amsmath} +\usepackage[left=25mm, top=20mm, right=20mm, bottom=20mm, footskip=10mm]{geometry} +\usepackage{ragged2e} %для растягивания по ширине +\usepackage{setspace} %для межстрочно го интервала +\usepackage{moreverb} %для работы с листингами +\usepackage{indentfirst} % для абзацного отступа +\usepackage{moreverb} %для печати в листинге исходного кода программ +\usepackage{pdfpages} %для вставки других pdf файлов +\usepackage{tikz} +\usepackage{graphicx} +\usepackage{afterpage} +\usepackage{longtable} +\usepackage{float} + + + +% \usepackage[paper=A4,DIV=12]{typearea} +\usepackage{pdflscape} +% \usepackage{lscape} + +\usepackage{array} +\usepackage{multirow} + +\renewcommand\verbatimtabsize{4\relax} +\renewcommand\listingoffset{0.2em} %отступ от номеров строк в листинге +\renewcommand{\arraystretch}{1.4} % изменяю высоту строки в таблице +\usepackage[font=small, singlelinecheck=false, justification=centering, format=plain, labelsep=period]{caption} %для настройки заголовка таблицы +\usepackage{listings} %листинги +\usepackage{xcolor} % цвета +\usepackage{hyperref}% для гиперссылок +\usepackage{enumitem} %для перечислений + +\newcommand{\specialcell}[2][l]{\begin{tabular}[#1]{@{}l@{}}#2\end{tabular}} + + +\setlist[enumerate,itemize]{leftmargin=1.2cm} %отступ в перечислениях + +\hypersetup{colorlinks, + allcolors=[RGB]{010 090 200}} %красивые гиперссылки (не красные) + +% подгружаемые языки — подробнее в документации listings (это всё для листингов) +\lstloadlanguages{ SQL} +% включаем кириллицу и добавляем кое−какие опции +\lstset{tabsize=2, + breaklines, + basicstyle=\footnotesize, + columns=fullflexible, + flexiblecolumns, + numbers=left, + numberstyle={\footnotesize}, + keywordstyle=\color{blue}, + inputencoding=cp1251, + extendedchars=true +} +\lstdefinelanguage{MyC}{ + language=SQL, +% ndkeywordstyle=\color{darkgray}\bfseries, +% identifierstyle=\color{black}, +% morecomment=[n]{/**}{*/}, +% commentstyle=\color{blue}\ttfamily, +% stringstyle=\color{red}\ttfamily, +% morestring=[b]", +% showstringspaces=false, +% morecomment=[l][\color{gray}]{//}, + keepspaces=true, + escapechar=\%, + texcl=true +} + +\textheight=24cm % высота текста +\textwidth=16cm % ширина текста +\oddsidemargin=0pt % отступ от левого края +\topmargin=-1.5cm % отступ от верхнего края +\parindent=24pt % абзацный отступ +\parskip=5pt % интервал между абзацами +\tolerance=2000 % терпимость к "жидким" строкам +\flushbottom % выравнивание высоты страниц + + +% Настройка листингов +\lstset{ + language=python, + extendedchars=\true, + inputencoding=utf8, + keepspaces=true, + % captionpos=b, % подписи листингов снизу +} + +\begin{document} % начало документа + + + + % НАЧАЛО ТИТУЛЬНОГО ЛИСТА + \begin{center} + \hfill \break + \hfill \break + \normalsize{МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ\\ + федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский политехнический университет Петра Великого»\\[10pt]} + \normalsize{Институт компьютерных наук и кибербезопасности}\\[10pt] + \normalsize{Высшая школа технологий искусственного интеллекта}\\[10pt] + \normalsize{Направление: 02.03.01 <<Математика и компьютерные науки>>}\\ + + \hfill \break + \hfill \break + \hfill \break + \hfill \break + \large{Лабораторная работа №2}\\ + \large{<<Конечный автомат и регулярное выражение для распознавания форматов вещественных чисел>>}\\ + \large{по дисциплине}\\ + \large{<<Математическая логика>>}\\ + \large{Вариант 15}\\ + + % \hfill \break + \hfill \break + \end{center} + + \small{ + \begin{tabular}{lrrl} + \!\!\!Студент, & \hspace{2cm} & & \\ + \!\!\!группы 5130201/20102 & \hspace{2cm} & \underline{\hspace{3cm}} &Тищенко А. А. \\\\ + \!\!\!Преподаватель & \hspace{2cm} & \underline{\hspace{3cm}} & Востров А. В. \\\\ + &&\hspace{4cm} + \end{tabular} + \begin{flushright} + <<\underline{\hspace{1cm}}>>\underline{\hspace{2.5cm}} 2025г. + \end{flushright} + } + + \hfill \break + % \hfill \break + \begin{center} \small{Санкт-Петербург, 2025} \end{center} + \thispagestyle{empty} % выключаем отображение номера для этой страницы + + % КОНЕЦ ТИТУЛЬНОГО ЛИСТА + \newpage + + \tableofcontents + + + \newpage + + \section*{Введение} + \addcontentsline{toc}{section}{Введение} + Лабораторная №2 по дисциплине <<Математическая логика>> заключается в следующем. Необходимо построить регулярное выражение для заданного варианта, затем создать недетерминированный конечный автомат и детерминировать его. Реализовать программу, которая проверяет введённый текст через реализацию конечного автомата, с вариантами вывода: строка соответствует, не соответствует, символы не из алфавита. Также необходимо реализовать функцию случайной генерации верной строки по полученному конечному автомату. + + \textit{Вариант 15}. Соответствие вещественного числа разным форматам представления. + + \newpage + \section {Математическое описание} + \subsection{Форматы представления вещественных чисел} + + В данной лабораторной работе рассматриваются следующие форматы представления вещественных чисел. + \begin{itemize} + \item Целые числа, например: \texttt{''123''}, \texttt{''-456''}, \texttt{''0''}, в т. ч. \texttt{''+0''}, \texttt{''-0''}. + \item Десятичные числа с двумя возможными разделителями (точка или запятая), например: \texttt{''123.456''}, \texttt{''-456,789''}. + \item Экспоненциальная форма (буква E может быть как в верхнем, так и в нижнем регистре), например: \texttt{''1.23E4''}, \texttt{''-4,56e-7''}, \texttt{''7e8''}. + \end{itemize} + + Формальное определение синтаксиса предложенного формата вещественных чисел в БНФ нотации: + \begin{verbatim} + real ::= decimal | exponential + decimal ::= integer [separator digit {digit}] + integer ::= [sign] (nonzerodigit {digit} | "0") + exponential ::= decimal ("e" | "E") integer + sign ::= "+" | "-" + nonzerodigit ::= "1" | "2" | ... | "9" + digit ::= "0" | nonzerodigit + separator ::= "." | "," + \end{verbatim} + Где: + \begin{itemize} + \item \lbrack R\rbrack -- необязательный элемент (0 или 1 раз) + \item \{R\} -- повторение элемента (0 или более раз) + \item P|Q -- альтернатива (либо P, либо Q) + \end{itemize} + + + + \subsection{Языки и грамматики} + Языком над конечным словарем $\Sigma$ называется произвольное множество конечных цепочек над этим словарем. + + \begin{itemize} + \item Цепочки языка называются словами (предложениями). + \item Над конечным непустым словарем можно определить бесконечное + количество слов конечной длины (счетное множество). + \item Над конечным + непустым словарем можно определить бесконечное количество языков, т.е. + подмножество множества всех возможных слов + (континуум, как число подмножеств счетного множества). + \end{itemize} + + Языки могут быть конечными и бесконечными (содержать бесконечное число цепочек). Словарь всегда конечен. + + Формальная грамматика – способ описания того, какие предложения возможны в языке. Существует два вида грамматик: + \begin{itemize} + \item порождающие грамматики – правила, позволяющие + строить любое предложение языка, + \item распознающие грамматики (алгоритмы) - позволяют + определить, принадлежит ли данное предложение языку. + \end{itemize} + + Распознающая грамматика – это конечный набор + правил, алгоритм, который по введенной цепочке + определяет, принадлежит цепочка языку, или нет. + + \subsection{Регулярные множества} + Регулярные множества, как множества цепочек, построенные над конечным словарем (по определенным правилам) – это языки. Их называют регулярными языками. + + Правила построения регулярных множеств: + \begin{itemize} + \item Объединение двух регулярных множеств $L_1$ и $L_2$ обозначается $L_1 \cup L_2$ и состоит из цепочек, которые принадлежат хотя бы одному из множеств $L_1$ или $L_2$. + $$L_1 \cup L_2 = \{ \alpha \mid \alpha \in L_1 \text{ или } \alpha \in L_2 \}$$ + + \item Конкатенация (произведение) двух регулярных множеств $L_1$ и $L_2$ обозначается $L_1 \cdot L_2$ и состоит из цепочек, которые можно разбить на две части, одна из которых принадлежит $L_1$, а другая $L_2$. + $$L_1 \cdot L_2 = \{ \alpha \beta \mid \alpha \in L_1 \text{ и } \beta \in L_2 \}$$ + + Обозначим $L^0 = \{ \varepsilon \}$, $L^1 = L$, $L^2 = L \cdot L$, $L^{k + 1} = L^k \cdot L$, и так далее. Обозначение $\varepsilon$ обозначает пустую цепочку. + + \item Итерация регулярного множества $L$ обозначается $L^*$ и состоит из цепочек, которые можно разбить на произвольное количество повторений множества $L$. + $$L^* = \{ \varepsilon \} \cup L \cup L^2 \cup L^3 \cup \ldots$$ + \end{itemize} + + \subsection{Регулярные выражения} + Регулярные выражения -- формальный язык шаблонов для поиска и выполнения манипуляций с подстроками в тексте. Регулярное выражение -- это формула (pattern, шаблон), задающая правило поиска подстрок в потоке символов. + + Регулярное выражение показывает, как можно построить регулярное множество цепочек из одноэлементных множеств с использованием трех операций: конкатенации, объединения и итерации. + + Примеры регулярных выражений: + \begin{itemize} + \item $ab + ba^*$ -- представляет регулярное множество: + $$\{ a\} \{b \} \cup \{ b \} \{ a \}^*$$ + \item $(ac)^*b+c^*$ -- представляет регулярное множество: + $$\{b, acb, acacb, acacacb, \ldots, \varepsilon, c, cc, ccc, \ldots \}$$ + \end{itemize} + + В реальных программах и языках программирования используется расширенный синтаксис регулярных выражений, который добавляет множество удобных конструкций. Среди дополнительных возможностей: классы символов (например, \verb|[a-z0-9]|), квантификаторы (\verb|?|, \verb|+|, \verb|{n,m}|), группировка с помощью скобок, обратные ссылки, опережающие и ретроспективные проверки. Эти расширения делают регулярные выражения более компактными и удобными для использования, но не меняют их выразительную мощность с теоретической точки зрения. + + Если регулярные множества это языки, то регулярные выражения -- это распознающие грамматики этих языков. + + \subsection{Регулярные выражения для заданного варианта} + + Для разных форматов представления вещественных чисел были построены следующие регулярные выражения в соответствии с определённой БНФ нотацией: + \begin{itemize} + \item Десятичные и целые числа: \\ + \texttt{[+-]?([1-9][0-9]*|0)([.,][0-9]+)?} + \item Экспоненциальная форма: \\ + \texttt{[+-]?([1-9][0-9]*|0)([.,][0-9]+)?[eE][+-]?([1-9][0-9]*|0)} + \end{itemize} + + Объединяя все форматы в соответствии с нашей БНФ нотацией, получаем следующее регулярное выражение, которое распознает все форматы вещественных чисел: + + \texttt{[+-]?([1-9][0-9]*|0)([.,][0-9]+)?([eE][+-]?([1-9][0-9]*|0))?} + + Разберём структуру этого выражения: + \begin{itemize} + \item \texttt{[+-]?} -- необязательный знак числа (плюс или минус) + \item \texttt{([1-9][0-9]*|0)} -- целая часть числа, которая может быть либо нулём, либо цифрой от 1 до 9, за которой следует произвольное количество цифр + \item \texttt{([.,][0-9]+)?} -- необязательная десятичная часть, состоящая из разделителя (точка или запятая) и как минимум одной цифры + \item \texttt{([eE][+-]?([1-9][0-9]*|0))?} -- необязательная экспоненциальная часть, состоящая из буквы E (в любом регистре), необязательного знака и целого числа + \end{itemize} + + Таким образом, полученное регулярное выражение распознаёт формат представления вещественных чисел, рассматриваемый в данной работе, и полностью соответствует формальному определению, представленному в БНФ нотации. + + \subsection{Конечный автомат-распознаватель} + Конечный автомат-распознаватель – это математическая модель, которая используется для распознавания цепочек символов в соответствии с заданным формальным языком. + + Конечный автомат-распознаватель $A = (S, \Sigma, s_0, \delta, F)$, где: + \begin{itemize} + \item $S$ – конечное множество состояний + \item $\Sigma$ – конечное множество входных символов + \item $s_0 \in S$ – начальное состояние + \item $\delta: S \times \Sigma \rightarrow S$ – функция переходов + \item $F \subseteq S$ – множество финальных (допускающих) состояний + \end{itemize} + + Автомат $A$ допускает (распознает) цепочку, если эта цепочка переводит $A$ из начального в одно из финальных состояний. Автомат $A$ допускает язык $L$, если он допускает все цепочки этого языка – и только их. + + Конечный автомат-распознаватель является распознающей грамматикой. + + \subsection{Недетерминированный КА-распознаватель} + Недетерминизм - очень удобное свойство формальной + модели, его можно определенным образом трактовать, + даже и не реализовывая, ограничиваясь только + формальными аналитическими преобразованиями. + + В недетерминированном конечном автомате-распознавателе могут быть следующие неоднозначности: + \begin{itemize} + \item несколько начальных состояний, + \item несколько переходов, помеченных одним и тем + же символом, + \item переходы, помеченные пустым символом $\varepsilon$. + \end{itemize} + + Цепочка допускается конечным автоматом, если существует путь, по которому эта цепочка переводит автомат из какого-нибудь начального состояния в какое-нибудь финальное состояние. + + Недетерминированный конечный автомат-распознаватель $A = (S, \Sigma, S_0, \delta, F)$, где: + \begin{itemize} + \item $S$ – конечное множество состояний + \item $\Sigma$ – конечное множество входов + \item $S_0 \subseteq S$ – множество начальных состояний + \item $\delta: S \times \Sigma \rightarrow 2^S$ – функция переходов + \item $F \subseteq S$ – множество финальных состояний + \end{itemize} + + \subsection{Теорема Клини} + \textbf{Теорема Клини}. Классы регулярных множеств и автоматных языков совпадают. Это значит, что: + \begin{itemize} + \item Любой язык, распознаваемый конечным автоматом, может быть задан регулярным выражением. + \item Для любого регулярного выражения существует конечный автомат, распознающий соответствующий язык. + \end{itemize} + + \subsection{Недетерминированный КА-распознаватель для заданного варианта} + + На Рис.~\ref{fig:nka} представлен недетерминированный КА-распознаватель, соответствующий регулярному выражению для заданного варианта. + + \begin{figure}[h!] + \centering + \includegraphics[width=1\linewidth]{img/nka.png} + \caption{Недетерминированный КА-распознаватель для заданного варианта.} + \label{fig:nka} + \end{figure} + + Матрица переходов для данного автомата представлена в Таблице~\ref{tab:nka}. + + \begin{table}[h!] + \centering + \caption{Таблица переходов для недетерминированного КА-распознавателя.} + \footnotesize + \begin{tabularx}{\textwidth}{|c|X|X|X|X|X|} + \hline + \textbf{Состояние\textbackslash Вход} & \textbf{+-} & \textbf{0} & \textbf{1-9} & \textbf{.,} & \textbf{eE} \\ + \hline + $S_0$ & $S_1$ & $S_8$ & $S_2$ & -- & -- \\ + \hline + $S_1$ & -- & $S_8$ & $S_2$ & -- & -- \\ + \hline + $S_2$ & -- & $S_2$ & $S_2$ & $S_3$ & $S_5$ \\ + \hline + $S_3$ & -- & $S_4$ & $S_4$ & -- & -- \\ + \hline + $S_4$ & -- & $S_4$ & $S_4$ & -- & $S_5$ \\ + \hline + $S_5$ & $S_6$ & $S_9$ & $S_7$ & -- & -- \\ + \hline + $S_6$ & -- & $S_9$ & $S_7$ & -- & -- \\ + \hline + $S_7$ & -- & -- & $S_7$ & -- & -- \\ + \hline + $S_8$ & -- & -- & -- & $S_3$ & -- \\ + \hline + $S_9$ & -- & -- & -- & -- & -- \\ + \hline + \end{tabularx} + \label{tab:nka} + \end{table} + + \subsection{Детерминированный КА-распознаватель для заданного варианта} + + Для того, чтобы преобразовать недетерминированный КА-распознаватель (Рис.~\ref{fig:nka}) в детерминированный, достаточно добавить ещё одно состояние $S_E$, соответствующее недопустимой цепочке символов, и переходы в него из всех остальных состояний. + + На Рис.~\ref{fig:ka} представлен детерминированный КА-распознаватель. Символом \textit{C} (от англ. Complement -- дополнение) обозначены переходы, соответствующие любым символам, кроме тех, по которым уже есть переходы в другие состояния. Символом \textit{A} (от англ. Any -- любой) обозначен переход, соответствующий любому символу. + + \begin{figure}[h!] + \centering + \includegraphics[width=1\linewidth]{img/ka.png} + \caption{Детерминированный КА-распознаватель для заданного варианта.} + \label{fig:ka} + \end{figure} + + Матрица переходов для данного автомата представлена в Таблице~\ref{tab:ka}. + + \begin{table}[h!] + \centering + \caption{Таблица переходов для детерминированного КА-распознавателя.} + \footnotesize + \begin{tabularx}{\textwidth}{|c|X|X|X|X|X|} + \hline + \textbf{Состояние\textbackslash Вход} & \textbf{+-} & \textbf{0} & \textbf{1-9} & \textbf{.,} & \textbf{eE} \\ + \hline + $S_0$ & $S_1$ & $S_8$ & $S_2$ & $S_E$ & $S_E$ \\ + \hline + $S_1$ & $S_E$ & $S_8$ & $S_2$ & $S_E$ & $S_E$ \\ + \hline + $S_2$ & $S_E$ & $S_2$ & $S_2$ & $S_3$ & $S_5$ \\ + \hline + $S_3$ & $S_E$ & $S_4$ & $S_4$ & $S_E$ & $S_E$ \\ + \hline + $S_4$ & $S_E$ & $S_4$ & $S_4$ & $S_E$ & $S_5$ \\ + \hline + $S_5$ & $S_6$ & $S_9$ & $S_7$ & $S_E$ & $S_E$ \\ + \hline + $S_6$ & $S_E$ & $S_9$ & $S_7$ & $S_E$ & $S_E$ \\ + \hline + $S_7$ & $S_E$ & $S_E$ & $S_7$ & $S_E$ & $S_E$ \\ + \hline + $S_8$ & $S_E$ & $S_E$ & $S_E$ & $S_3$ & $S_E$ \\ + \hline + $S_9$ & $S_E$ & $S_E$ & $S_E$ & $S_E$ & $S_E$ \\ + \hline + \end{tabularx} + \label{tab:ka} + \end{table} + + + \newpage + \phantom{text} + \newpage + \section{Особенности реализации} + \subsection{Общая структура программы} + Программа состоит из двух файлов: + \begin{itemize} + \item \texttt{finite\_automaton.py} -- содержит класс \texttt{FiniteAutomaton} для создания конечных автоматов. + \item \texttt{main.py} -- содержит определение конечного автомата для распознавания вещественных чисел, а также функцию \texttt{main}, которая реализует интерактивный интерфейс для проверки и генерации строк. + \end{itemize} + + \subsection{Класс \texttt{FiniteAutomaton}} + + Класс \texttt{FiniteAutomaton} это класс для представления конечных автоматов. Код конструктора класса представлен в листинге~\ref{lst:FiniteAutomaton}. + + В классе определены четыре поля. + \begin{itemize} + \item \texttt{transitions} -- \texttt{dict[str, list[tuple[str, str]]]} -- словарь, определяющий переходы между состояниями. Ключами словаря являются состояния, значениями -- списки кортежей вида \texttt{(transition, next\_state)}, определяющие переходы из данного состояния. \texttt{transition} это строка, содержащая символы, по которым можно перейти из данного состояния в следующее состояние -- \texttt{next\_state}. + \item \texttt{initial\_state} -- \texttt{str} -- начальное состояние. + \item \texttt{final\_states} -- \texttt{set[str]} -- множество финальных состояний. + \item \texttt{alphabet} -- \texttt{set[str]} -- множество символов, которые может содержать входная строка. + \end{itemize} + +\begin{lstlisting}[caption={Код конструктора класса FiniteAutomaton.}, label={lst:FiniteAutomaton}] +class FiniteAutomaton: + def __init__( + self, + transitions: dict[str, list[tuple[str, str]]], + initial_state: str, + final_states: set[str], + alphabet: set[str], + ): + self.transitions = transitions + self.initial_state = initial_state + self.final_states = final_states + self.alphabet = alphabet +\end{lstlisting} + + Класс \texttt{FiniteAutomaton} содержит три метода: \texttt{\_get\_next\_state}, \texttt{process\_input} и \texttt{generate\_random\_string}. + + \subsection{Метод \texttt{\_get\_next\_state}} + Приватный метод \texttt{\_get\_next\_state} принимает три параметра: \texttt{self} -- ссылку на объект класса, \texttt{current\_state} (\texttt{str}) -- текущее состояние, и \texttt{char} (\texttt{str}) -- символ, по которому нужно перейти из текущего состояния. Возвращает следующее состояние (\texttt{str}), либо \texttt{None}, если переход невозможен. + +\begin{lstlisting}[caption={Код метода \texttt{\_get\_next\_state}.}, label={lst:get_next_state}] +def _get_next_state(self, current_state: str, char: str) -> str | None: + if current_state in self.transitions: + for transition, next_state in self.transitions[current_state]: + if char in transition: + return next_state + return None +\end{lstlisting} + + + \subsection{Метод \texttt{process\_input}} + Метод \texttt{process\_input} принимает два параметра: \texttt{self} -- ссылку на объект класса, и входную строку \texttt{input\_string}. Возвращает кортеж из двух элементов: строку с сообщением о результате проверки, и список пройденных состояний. + +\begin{lstlisting}[caption={Код метода \texttt{process\_input}.}, label={lst:process_input}] +def process_input(self, input_string: str) -> tuple[str, list[str]]: + current_state = self.initial_state + transitions_path = [current_state] + + for char in input_string: + if char not in self.alphabet: + return f"Символ '{char}' не из алфавита", transitions_path + + next_state = self._get_next_state(current_state, char) + + if next_state is None: + return "Строка не соответствует", transitions_path + + transitions_path.append(next_state) + current_state = next_state + + return ( + "Строка соответствует" + if current_state in self.final_states + else "Строка не соответствует" + ), transitions_path +\end{lstlisting} + + + \subsection{Метод \texttt{generate\_random\_string}} + Метод \texttt{generate\_random\_string} принимает два параметра: \texttt{self} -- ссылку на объект класса, и вероятность остановки в финальном состоянии -- \texttt{stop\_probability} (\texttt{float}). Возвращает сгенерированную строку. + + Шаг алгоритма заключается в следующем: + \begin{enumerate} + \item Проверяем условие остановки: если текущее состояние является финальным и случайное число оказывается меньше заданной вероятности остановки, то генерация завершается. + \item Случайным образом выбираем переход из текущего состояния в следующее. + \item Случайным образом выбираем символ из множества символов выбранного перехода. + \item Добавляем выбранный символ в результат и переходим в следующее состояние. + \end{enumerate} + +\begin{lstlisting}[caption={Код метода \texttt{generate\_random\_string}.}, label={lst:generate_random_string}] +def generate_random_string(self, stop_probability: float = 0.3) -> str: + result = [] + current_state = self.initial_state + + while True: + if ( + current_state in self.final_states + and random.random() < stop_probability + ): + break + + transition, next_state = random.choice(self.transitions[current_state]) + + char = random.choice(transition) + result.append(char) + current_state = next_state + + return "".join(result) +\end{lstlisting} + + + + \subsection{Функция \texttt{main}} + В функции \texttt{main} (листинг~\ref{lst:Main}) заданы параметры конечного автомата и реализован интерактивный интерфейс пользователя. Функция не принимает параметров и ничего не возвращает. + + Пользователю доступны следующие команды: + + \begin{itemize} + \item \texttt{check <строка>} -- проверяет, соответствует ли строка автомату. + \item \texttt{gen [<вероятность\_остановки>]} -- сгенерировать случайную строку. + \item \texttt{q} -- выход из программы. + \end{itemize} + +\begin{lstlisting}[caption={Функция main.}, label={lst:Main}] +def main(): + alphabet = set("+-0123456789.,eE") + initial_state = "S0" + final_states = {"S2", "S4", "S7", "S8", "S9"} + + transitions = { + "S0": [("+-", "S1"), ("123456789", "S2"), ("0", "S8")], + "S1": [("123456789", "S2"), ("0", "S8")], + "S2": [("0123456789", "S2"), (".,", "S3"), ("eE", "S5")], + "S3": [("0123456789", "S4")], + "S4": [("0123456789", "S4"), ("eE", "S5")], + "S5": [("+-", "S6"), ("123456789", "S7"), ("0", "S9")], + "S6": [("123456789", "S7"), ("0", "S9")], + "S7": [("0123456789", "S7")], + "S8": [(".,", "S3")], + } + + automaton = FiniteAutomaton( + transitions=transitions, + initial_state=initial_state, + final_states=final_states, + alphabet=alphabet, + ) + + print("Конечный автомат для распознавания форматов вещественных чисел") + print("=" * 60) + print("Варианты команд:") + print(" - check <строка> - проверить, соответствует ли строка автомату") + print( + " - gen [<вероятность_остановки>] - сгенерировать случайную строку (по умолчанию 0.3)" + ) + print(" - q - выход из программы") + print("=" * 60) + + while True: + command = input("\nВведите команду: ").strip() + + if not command: + continue + + parts = command.split() + cmd = parts[0].lower() + + if cmd == "q": + print("Выход из программы.") + break + + elif cmd == "check": + input_string = "" + if len(parts) > 1: + input_string = " ".join(parts[1:]).strip() + + message, transitions = automaton.process_input(input_string) + + print(f"Результат: {message}") + print("Путь переходов:", " -> ".join(transitions)) + + elif cmd == "gen": + stop_prob = 0.3 + if len(parts) > 1: + try: + stop_prob = float(parts[1]) + if not (0 < stop_prob <= 1): + raise ValueError( + "Вероятность должна быть больше 0 и меньше либо равна 1" + ) + except ValueError as e: + print(f"Ошибка: {e}") + continue + + random_string = automaton.generate_random_string(stop_prob) + print(f"Сгенерированная строка: {random_string}") + + else: + print(f"Неизвестная команда: {cmd}") +\end{lstlisting} + +\newpage + \section{Результаты работы программы} + Результаты работы программы представлены на Рис.~\ref{fig:result1}. + + \begin{figure}[h!] + \centering + \includegraphics[width=1\linewidth]{img/result1.png} + \caption{Результаты работы программы.} + \label{fig:result1} + \end{figure} + + На Рис.~\ref{fig:wrong} представлена реакция программы на некорректный пользовательский ввод. + + \begin{figure}[h!] + \centering + \includegraphics[width=0.8\linewidth]{img/wrong.png} + \caption{Реакция программы на некорректный пользовательский ввод.} + \label{fig:wrong} + \end{figure} + + + \newpage + \section*{Заключение} + \addcontentsline{toc}{section}{Заключение} + В ходе выполнения лабораторной работы было построено регулярное выражение для распознавания различных форматов вещественных чисел, созданы недетерминированный и детерминированный конечные автоматы-распознаватели. На основе разработанного автомата была реализована программа, которая проверяет соответствие входной строки заданному формату и генерирует случайные корректные строки. + + Из достоинств выполнения лабораторной работы можно выделить структурирование кода за счёт использования ООП. Вся логика работы с конечными автоматами вынесена в отдельный класс \texttt{FiniteAutomaton} с четко разделенными методами для проверки строк и генерации случайных строк. Создана удобная интерактивная консольная оболочка для взаимодействия с пользователем, позволяющая выполнять различные команды. + + К недостаткам текущей реализации можно отнести следующие аспекты. Во-первых, переходы в автомате представлены в виде строк, содержащих допустимые символы, такой способ представления переходов не является самым оптимальным с точки зрения производительности. Во-вторых, в реализации генерации случайных строк вероятность остановки одинакова для всех финальных состояний, что может приводить к неравномерному распределению различных форматов чисел в генерируемых строках. + + Функционал программы несложно масштабировать. Класс \texttt{FiniteAutomaton} может быть использован для работы с различными конечными автоматами-распознавателями. Для изменения распознаваемого языка достаточно задать новые параметры для автомата, не меняя базовую логику программы. Однако, текущая реализация работает только с символьными переходами, поэтому задать строчные переходы в виде, например, регулярных выражений не представляется возможным. Однако подобный функционал также несложно реализовать, взяв за основу существующий код. + + На выполнение лабораторной работы ушло около 10 часов. Работа была выполнена в среде разработки Visual Studio Code. Программа написана на Python версии 3.10. + +\newpage +\section*{Список литературы} +\addcontentsline{toc}{section}{Список литературы} + +\vspace{-1.5cm} +\begin{thebibliography}{0} + \bibitem{vostrov} + Востров, А.В. Курс лекций по дисциплине <<Математическая логика>>. URL \url{https://tema.spbstu.ru/compiler/} (дата обращения 01.04.2025 г.) + \bibitem{lutz} + Лутц, М. Изучаем Python. 5-е изд. / М. Лутц. — СПб.: Питер, 2019. — 1216 с. + \bibitem{friedl} + Фридл, Дж. Регулярные выражения = Mastering Regular Expressions / Дж. Фридл. — СПб.: Питер, 2001. — 352 с. — (Библиотека программиста). +\end{thebibliography} + +\end{document} \ No newline at end of file