diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2022-04-25 00:47:51 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2022-04-25 00:47:51 +0400 |
| commit | 94db19d6fba27a729154d3473a1ddf005724f006 (patch) | |
| tree | fc84b4a56d9408b0e65f58bc8ad0879203d0ffeb | |
| parent | a9869f0dab129bd94400c3aa2b0787e3e4a9c62b (diff) | |
Добавил четвёртую лабу
| -rw-r--r-- | .vscode/settings.json | 5 | ||||
| -rw-r--r-- | lab4/lab4.py | 145 | ||||
| -rw-r--r-- | lab4/report/SCWorks.cls | 991 | ||||
| -rw-r--r-- | lab4/report/images/test1.png | bin | 0 -> 522854 bytes | |||
| -rw-r--r-- | lab4/report/images/test2.png | bin | 0 -> 593095 bytes | |||
| -rw-r--r-- | lab4/report/images/test3_1.png | bin | 0 -> 616662 bytes | |||
| -rw-r--r-- | lab4/report/images/test3_2.png | bin | 0 -> 534190 bytes | |||
| -rw-r--r-- | lab4/report/lab4.tex | 472 | ||||
| -rw-r--r-- | lab4/report/preamble.sty | 52 | ||||
| -rw-r--r-- | lab4/report/titlepage.tex | 54 |
10 files changed, 1719 insertions, 0 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2c07464 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "[latex]": { + "editor.tabSize": 2 + } +}
\ No newline at end of file diff --git a/lab4/lab4.py b/lab4/lab4.py new file mode 100644 index 0000000..b4c2e73 --- /dev/null +++ b/lab4/lab4.py @@ -0,0 +1,145 @@ +import numpy as np +import itertools as it + + +def make_subsemigroup(): + print("Введите элементы множества:") + elements = input().split() + n = len(elements) + + print("Введите элементы подмножества:") + subelements = input().split() + + print("Введите значения таблицы Кэли:") + cayley = [] + for _ in range(n): + cayley.append(input().split()) + cayley = np.array(cayley) + + x_i = subelements[:] + while True: + x_l = [] + for x in x_i: + for y in subelements: + x_l.append(cayley[elements.index(x)][elements.index(y)]) + tmp = list(set(x_i) | set(x_l)) + tmp.sort() + + if tmp == x_i: + break + + x_i = tmp[:] + + print("Подполугруппа:") + print(x_i) + + +def find_correlation(matrices): + result = {} + correlations = {} + for key, value in matrices.items(): + if not any(np.array_equal(value, i) for i in result.values()): + result[key] = value + else: + for k, v in result.items(): + if np.array_equal(v, value): + correlations[key] = k + + print("Копредставления:") + for key, value in result.items(): + print(f"{''.join(key)}:") + print(value) + + print("Полученные соотношения:") + for key, value in correlations.items(): + print(''.join(key), "->", ''.join(value)) + + +def make_semigroup_binrel(): + print("Введите элементы множества:") + elements = input().split() + n = len(elements) + + print("Введите количество бинарных отношений:") + q = int(input()) + + matrices = {} + for i in range(q): + print("Введите значения матрицы:") + matrix = [] + for _ in range(n): + matrix.append(list(map(int, input().split()))) + matrices[str(i + 1)] = np.array(matrix) + + combinations = [] + for i in range(1, q + 1): + combination = list(it.product(map(str, range(1, q + 1)), repeat=i)) + combinations.extend(combination) + + for combination in combinations: + matrix = matrices[combination[0]].copy() + word = combination[0] + for comb_i in range(1, len(combination)): + matrix *= matrices[combination[comb_i]] + word += combination[comb_i] + matrices[word] = matrix + + find_correlation(matrices) + + +def make_semigroup(): + print("Введите элементы полугруппы:") + elements = input().split() + n = len(elements) + + print("Введите элементы множества преобразований:") + generators_list = input().split() + gn = len(generators_list) + + translations = [] + for i in range(gn): + print(f"Введите значения преобразования '{generators_list[i]}' " + "элементов полугруппы:") + print(*elements) + translations.append(input().split()) + + combinations = [] + for i in range(1, gn + 1): + combinations.extend(it.product(''.join(generators_list), repeat=i)) + + result = {} + for combination in combinations: + correlation = [] + for i in elements: + element = i + for generator in combination: + if element not in elements: + element = '*' + else: + gi = generators_list.index(generator) + si = elements.index(element) + element = translations[gi][si] + correlation.append(element) + result[combination] = correlation + + find_correlation(result) + + +def main(): + flag = input("Построить подполугруппу по таблице Кэли? (да/НЕТ) ") + if flag.lower() == "да": + make_subsemigroup() + + flag = input("Построить полугруппу бинарных отношений по порождающему " + "множеству? (да/НЕТ) ") + if flag.lower() == "да": + make_semigroup_binrel() + + flag = input("Построить полугруппу по порождающему множеству и " + "определяющим соотношениям? (да/НЕТ) ") + if flag.lower() == "да": + make_semigroup() + + +if __name__ == "__main__": + main()
\ No newline at end of file diff --git a/lab4/report/SCWorks.cls b/lab4/report/SCWorks.cls new file mode 100644 index 0000000..f905804 --- /dev/null +++ b/lab4/report/SCWorks.cls @@ -0,0 +1,991 @@ +\LoadClass[14pt]{extarticle} +%\RequirePackage[14pt]{extsizes} +\RequirePackage[ + a4paper, mag=1000, + left=2.5cm, right=1.5cm, top=2cm, bottom=2cm, bindingoffset=0cm, + headheight=0cm, footskip=1cm, headsep=0cm + ]{geometry} +\RequirePackage{setspace} +\RequirePackage{calc} +\RequirePackage{titlesec} +\RequirePackage{titletoc} +\RequirePackage{caption} +\RequirePackage{graphicx} +\RequirePackage[inline]{enumitem} + + + + +% --------------------------------------------------------------------------% +% Input data +% --------------------------------------------------------------------------% +\def\chair#1{\gdef\@chair{#1}}\chair{\hbox to 3cm{\hrulefill}} +\def\worktype#1{\gdef\@worktype{#1}} +\def\worktitle{\@title} +\def\subject#1{\gdef\@subject{#1}} +\def\typework#1{\gdef\@typework{#1}} +\def\disserform#1{\gdef\@disserform{#1}} +\def\disserformP#1{\gdef\@disserformP{#1}} +\def\disserformR#1{\gdef\@disserformR{#1}} +\def\disserformV#1{\gdef\@disserformV{#1}} +\def\course#1{\gdef\@course{#1}}\course{2} +\def\group#1{\gdef\@group{#1}}\group{211} +\def\department#1{\gdef\@department{#1}}\department{\cyr\cyrf\cyra\cyrk% +\cyru\cyrl\cyrsftsn\cyrt\cyre\cyrt\cyra\ \CYRK\CYRN\cyri\CYRI\CYRT} +\def\otdelenie#1{\gdef\@otdelenie{#1}} +\def\studentName{\@author} +%\def\studentName#1{\gdef\@studentName{#1}} +\def\satitle#1{\gdef\@satitle{#1}}\satitle{\hbox to 3cm{\hrulefill}} +\def\saname#1{\gdef\@saname{#1}}\saname{\hbox to 3cm{\hrulefill}} +\def\critictitle#1{\gdef\@critictitle{#1}}\critictitle{\hbox to 3cm{\hrulefill}} +\def\criticname#1{\gdef\@criticname{#1}}\criticname{\hbox to 3cm{\hrulefill}} +\def\secrname#1{\gdef\@secrname{#1}}\secrname{\hbox to 3cm{\hrulefill}} +\def\chtitle#1{\gdef\@chtitle{#1}}\chtitle{\hbox to 3cm{\hrulefill}} +\def\chname#1{\gdef\@chname{#1}}\chname{\hbox to 3cm{\hrulefill}} +%\def\year#1{\gdef\@year{#1}} +\def\spectype#1{\gdef\@spectype{#1}} +\def\spectyperod#1{\gdef\@spectyperod{#1}} +\def\workform#1{\gdef\@workform{#1}} +\def\practtype#1{\gdef\@practtype{#1}}\practtype{\cyr\cyru\cyrch\cyre\cyrb% +\cyrn\cyra\cyrya} +\def\term#1{\gdef\@term{#1}}\term{2} +\def\duration#1{\gdef\@duration{#1}}\duration{2} +\def\protnum#1{\gdef\@protnum{#1}}\protnum{\hbox to 1cm{\hrulefill}} +\def\protdate#1{\gdef\@protdate{#1}}\protdate{\hbox to 3cm{\hrulefill}} +\def\practStart#1{\gdef\@practStart{#1}}\practStart{\hbox to 3cm{\hrulefill}} +\def\practFinish#1{\gdef\@practFinish{#1}}\practFinish{\hbox to 3cm{\hrulefill}} +\def\reviewtype#1{\gdef\@reviewtype{#1}}\reviewtype{\CYRO\CYRT% +\CYRZ\CYRERY\CYRV} + +\def\patitle#1{\gdef\@patitle{#1}}\patitle{\@satitle} +\def\paname#1{\gdef\@paname{#1}}\paname{\@saname} + +\def\napravlenie#1{\gdef\@napravlenie{#1}}\napravlenie{\hbox to 3cm{\hrulefill}} +\def\Napravlenie{\@napravlenie} + + +\def\studenttitle#1{\gdef\@studenttitle{#1}}\studenttitle{\cyr\cyrs\cyrt% +\cyru\cyrd\cyre\cyrn\cyrt\cyra} +\def\studentdone#1{\gdef\@studentdone{#1}}\studentdone{\cyrp\cyrr\cyro% +\cyrsh\cyre\cyrd\cyrsh\cyre\cyrg\cyro} +\def\studentfemale{\studenttitle{\cyrs\cyrt\cyru\cyrd\cyre\cyrn\cyrt% +\cyrk\cyri}\studentdone{\cyrp\cyrr\cyro\cyrsh\cyre\cyrd\cyrsh% +\cyre\cyrishrt}} + +%\newcommand{\MakeTitle}{} + +\def\workname#1{\gdef\@workname{#1}} + +%\hbox to 3cm{\hrulefill} + +% --------------------------------------------------------------------------% + + +\newcommand{\signature}[2]{ +\hbox to 7cm{#1\hfill} \hbox to 3cm{\hrulefill} \hbox to 6cm{\hfill #2}} + +\newcommand{\inlinesignature}[2]{% +#1\qquad \hbox to 3cm{\hrulefill}\quad #2} + + +\newcommand{\signatureline}{} + +% --------------------------------------------------------------------------% +\newcommand{\scaleUnivName}{0.97} + +\DeclareOption{times}{% + \renewcommand{\rmdefault}{ftm} + \renewcommand{\scaleUnivName}{1.0} +} + +\DeclareOption{spec}{% + \spectype{\cyr\cyrs\cyrp\cyre\cyrc\cyri\cyra\cyrl\cyrsftsn\cyrn\cyro% + \cyrs\cyrt\cyri} + \spectyperod{\cyrs\cyrp\cyre\cyrc\cyri\cyra\cyrl\cyrsftsn\cyrn\cyro% + \cyrs\cyrt\cyri} + \workform{\cyr\CYRS\CYRP\CYRE\CYRC\CYRI\CYRA\CYRL\CYRI\CYRS\CYRT\CYRA} + \disserform{\CYRD\CYRI\CYRP\CYRL\CYRO\CYRM\CYRN\CYRA\CYRYA\ \CYRR\CYRA% + \CYRB\CYRO\CYRT\CYRA} + \disserformP{\CYRD\CYRI\CYRP\CYRL\CYRO\CYRM\CYRN\CYRO\CYRISHRT\ \CYRR% + \CYRA\CYRB\CYRO\CYRT\CYRE} + \disserformR{\CYRD\CYRI\CYRP\CYRL\CYRO\CYRM\CYRN\CYRO\CYRISHRT\ \CYRR% + \CYRA\CYRB\CYRO\CYRT\CYRERY} + \disserformV{\CYRD\CYRI\CYRP\CYRL\CYRO\CYRM\CYRN\CYRU\CYRYU\ \CYRR\CYRA% + \CYRB\CYRO\CYRT\CYRU} +} + +\DeclareOption{bachelor}{% + \spectype{\cyr\cyrn\cyra\cyrp\cyrr\cyra\cyrv\cyrl\cyre\cyrn\cyri\cyrya} + \spectyperod{\cyr\cyrn\cyra\cyrp\cyrr\cyra\cyrv\cyrl\cyre\cyrn\cyri \cyryu} + \workform{\cyr\CYRB\CYRA\CYRK\CYRA\CYRL\CYRA\CYRV\CYRR\CYRA} + \disserform{\CYRB\CYRA\CYRK\CYRA\CYRL\CYRA\CYRV\CYRR\CYRS\CYRK\CYRA% + \CYRYA\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRA} + \disserformP{\CYRB\CYRA\CYRK\CYRA\CYRL\CYRA\CYRV\CYRR\CYRS\CYRK\CYRO% + \CYRISHRT\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRE} + \disserformR{\CYRB\CYRA\CYRK\CYRA\CYRL\CYRA\CYRV\CYRR\CYRS\CYRK\CYRO% + \CYRISHRT\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRERY} + \disserformV{\CYRB\CYRA\CYRK\CYRA\CYRL\CYRA\CYRV\CYRR\CYRS\CYRK\CYRU% + \CYRYU\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRU} +} + +\DeclareOption{master}{% + \spectype{\cyr\cyrn\cyra\cyrp\cyrr\cyra\cyrv\cyrl\cyre\cyrn\cyri\cyrya} + \spectyperod{\cyr\cyrn\cyra\cyrp\cyrr\cyra\cyrv\cyrl\cyre\cyrn\cyri \cyryu} + \workform{\cyr\CYRM\CYRA\CYRG\CYRI\CYRS\CYRT\CYRR\CYRA} + \disserform{\CYRM\CYRA\CYRG\CYRI\CYRS\CYRT\CYRE\CYRR\CYRS\CYRK\CYRA% + \CYRYA\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRA} + \disserformP{\CYRM\CYRA\CYRG\CYRI\CYRS\CYRT\CYRE\CYRR\CYRS\CYRK\CYRO% + \CYRISHRT\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRE} + \disserformR{\CYRM\CYRA\CYRG\CYRI\CYRS\CYRT\CYRE\CYRR\CYRS\CYRK\CYRO% + \CYRISHRT\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRERY} + \disserformV{\CYRM\CYRA\CYRG\CYRI\CYRS\CYRT\CYRE\CYRR\CYRS\CYRK\CYRU% + \CYRYU\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRU} +} + +\DeclareOption{coursework}{% + \worktype{\cyr\CYRK\cyru\cyrr\cyrs\cyro\cyrv\cyra\cyrya\ \cyrr\cyra\cyrb% + \cyro\cyrt\cyra} + \renewcommand{\maketitle}{\CDMakeTitle} + \workname{\MakeUppercase{\@worktype}} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn\cyra} +} + +\DeclareOption{diploma}{% + \worktype{\cyr\CYRV\cyrery\cyrp\cyru\cyrs\cyrk\cyrn\cyra\cyrya\ \cyrk\cyrv% + \cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri\cyro\cyrn\cyrn\cyra% + \cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra} + \worktype{\ \cyrr\cyra\cyrb\cyro\cyrt\cyra} + \renewcommand{\maketitle}{\CDMakeTitle} + \workname{\MakeUppercase{\@disserform}} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn\cyra} +} + +\DeclareOption{autoref}{% + \workname{\cyr\CYRA\CYRV\CYRT\CYRO\CYRR\CYRE\CYRF\CYRE\CYRR\CYRA\CYRT\ % + \MakeUppercase{\@disserformR}} + \worktype{\ \cyrr\cyra\cyrb\cyro\cyrt\cyra} + \renewcommand{\maketitle}{\CDMakeTitle} + %\workname{\MakeUppercase{\@disserform}} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn\cyra} +} + +\DeclareOption{nir}{% + \workname{\cyr\CYRO\CYRT\CYRCH\CYRE\CYRT\ \CYRO\ \CYRN\CYRA\CYRU\CYRCH% + \CYRN\CYRO-\CYRI\CYRS\CYRS\CYRL\CYRE\CYRD\CYRO\CYRV\CYRA\CYRT\CYRE\CYRL% + \CYRSFTSN\CYRS\CYRK\CYRO\CYRISHRT\ \CYRR\CYRA\CYRB\CYRO\CYRT\CYRE} + \worktype{\ \cyrr\cyra\cyrb\cyro\cyrt\cyra} + \renewcommand{\maketitle}{\CDMakeTitle} + %\workname{\MakeUppercase{\@disserform}} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn\cyra} +} + +\DeclareOption{pract}{% + \worktype{\cyr\CYRO\cyrt\cyrch\cyre\cyrt\ \cyro\ \cyrp\cyrr\cyra\cyrk\cyrt% + \cyri\cyrk\cyre} + \renewcommand{\maketitle}{\MakeTitlePr} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn} +} + +\DeclareOption{review}{% + \reviewtype{\CYRO\CYRT\CYRZ\CYRERY\CYRV} + \worktype{\cyrn\cyra\cyru\cyrch\cyrn\cyro\cyrg\cyro\ \cyrr\cyru\cyrk% + \cyro\cyrv\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrya\ \cyro\ \cyrv\cyrery% + \cyrp\cyru\cyrs\cyrk\cyrn\cyro\cyrishrt\ \cyrk\cyrv\cyra\cyrl\cyri\cyrf% + \cyri\cyrk\cyra\cyrc\cyri\cyro\cyrn\cyrn\cyro\cyrishrt\ \cyrr\cyra\cyrb% + \cyro\cyrt\cyre} + \workname{\cyr\cyrn\cyra\cyru\cyrch\cyrn\cyro\cyrg\cyro\ \cyrr\cyru\cyrk% + \cyro\cyrv\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrya\ \cyro\ \MakeLowercase{\@disserformP}} + %\workname{\@worktype\ \MakeLowercase{\@workform}} + \renewcommand{\maketitle}{\MakeTitleReview} + \renewcommand{\signatureline}{% + \par\noindent% + \CYRN\cyra\cyru\cyrch\cyrn\cyrery\cyrishrt\ \cyrr\cyru\cyrk\cyro\cyrv% + \cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrsftsn\\% + \signature{\@satitle}{\@saname}\\% + } +} + +\DeclareOption{assignment}{% + \reviewtype{\CYRZ\CYRA\CYRD\CYRA\CYRN\CYRI\CYRE} + \worktype{\cyrn\cyra\ \cyrv\cyrery\cyrp\cyru\cyrs\cyrk\cyrn\cyru% + \cyryu\ \cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri\cyro% + \cyrn\cyrn\cyru\cyryu\ \cyrr\cyra\cyrb\cyro\cyrt\cyru} + \workname{\cyr\cyrn\cyra\ \MakeLowercase{\@disserformV}} + %\workname{\@worktype\ \MakeLowercase{\@workform}} + \renewcommand{\maketitle}{\MakeTitleAssign} + \renewcommand{\signatureline}{% + + \vfill% + \noindent% + \textbf{\CYRS\cyrr\cyro\cyrk\ \cyrp\cyrr\cyre\cyrd\cyro\cyrs\cyrt\cyra% + \cyrv\cyrl\cyre\cyrn\cyri\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyrery:}\ \@practFinish + + \vspace{2em}\raggedright + \noindent \CYRR\cyra\cyrs\cyrs\cyrm\cyro\cyrt\cyrr\cyre\cyrn\cyro\ % + \cyrn\cyra\ \cyrz\cyra\cyrs\cyre\cyrd\cyra\cyrn\cyri\cyri\ \cyrk\cyra% + \cyrf\cyre\cyrd\cyrr\cyrery\ \@chair + + \vspace{1em} + \CYRP\cyrr\cyro\cyrt\cyro\cyrk\cyro\cyrl\ \textnumero\ \@protnum\ \cyro% + \cyrt\ \@protdate + + \vspace{1em} + \raggedright + \noindent + \inlinesignature{\CYRS\cyre\cyrk\cyrr\cyre\cyrt\cyra\cyrr\cyrsftsn}{\@secrname} + + \vspace{2em} + \noindent\raggedright + \CYRD\cyra\cyrt\cyra\ \cyrv\cyrery\cyrd\cyra\cyrch\cyri\ \cyrz\cyra% + \cyrd\cyra\cyrn\cyri\cyrya\ \@practStart + + \vspace{1em} + \noindent\raggedright + \inlinesignature{\CYRZ\cyra\cyrd\cyra\cyrn\cyri\cyre\ \cyrp\cyro\cyrl% + \cyru\cyrch\cyri\cyrl}{\hbox to 3cm{\hrulefill}} + + \vspace{1cm} + } +} + +\DeclareOption{critique}{% + \reviewtype{\CYRR\CYRE\CYRC\CYRE\CYRN\CYRZ\CYRI\CYRYA} + \worktype{\cyrn\cyra\ \cyrv\cyrery\cyrp\cyru\cyrs\cyrk\cyrn\cyru% + \cyryu\ \cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri\cyro% + \cyrn\cyrn\cyru\cyryu\ \cyrr\cyra\cyrb\cyro\cyrt\cyru} + \workname{\cyr\cyrn\cyra\ \MakeLowercase{\@disserformV}} + %\workname{\@worktype\ \MakeLowercase{\@workform}} + \renewcommand{\maketitle}{\MakeTitleReview} + \renewcommand{\signatureline}{% + \par\noindent% + \CYRR\cyre\cyrc\cyre\cyrn\cyrz\cyre\cyrn\cyrt\\% + \signature{\@critictitle}{\@criticname}\\% + } +} + + +\DeclareOption{referat}{% + \worktype{\cyr\CYRR\cyre\cyrf\cyre\cyrr\cyra\cyrt} + \workname{\MakeUppercase{\@worktype}} + \renewcommand{\maketitle}{\RefMakeTitle} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn} +} + +\DeclareOption{labwork}{% + \worktype{\cyr\CYRL\cyra\cyrb\cyro\cyrr\cyra\cyrt\cyro\cyrr\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra} + \workname{\MakeUppercase{\@worktype}} + \renewcommand{\maketitle}{\RefMakeTitle} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn} +} + +\DeclareOption{labwork2}{% + \worktype{\CYRO\cyrt\cyrch\cyryo\cyrt\ \cyrp\cyro\ \cyrd\cyri\cyrs\cyrc\cyri\cyrp\cyrl\cyri\cyrn\cyre} + \workname{\MakeUppercase{\@worktype}} + \renewcommand{\maketitle}{\LabTwoMakeTitle} + \typework{\cyr\cyrn\cyra\cyrp\cyri\cyrs\cyra\cyrn} +} + +\DeclareOption{och}{% + \otdelenie{\cyr\cyro\cyrch\cyrn\cyro\cyrishrt\ \cyrf\cyro\cyrr\cyrm% + \cyrery\ \cyro\cyrb\cyru\cyrch\cyre\cyrn\cyri\cyrya} +} + +\DeclareOption{zaoch}{% + \otdelenie{\cyr\cyrz\cyra\cyro\cyrch\cyrn\cyro\cyrishrt\ \cyrf\cyro\cyrr% + \cyrm\cyrery\ \cyro\cyrb\cyru\cyrch\cyre\cyrn\cyri\cyrya} +} + +\ExecuteOptions{coursework,och,bachelor} +\ProcessOptions + +% --------------------------------------------------------------------------% +\newcommand*{\hm}[1]{#1\nobreak\discretionary{}% +{\hbox{$\mathsurround=0pt #1$}}{}} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% + +\onehalfspacing +\parindent=1.25cm +\pagestyle{headings} +\renewcommand{\@oddhead}{} +\renewcommand{\@oddfoot}{\hfil \thepage} + +% --------------------------------------------------------------------------% +% Table and figure numbering by sections +% --------------------------------------------------------------------------% +\newif\if@secNumbering\@secNumberingfalse +\newcommand{\secNumbering}{ + \renewcommand{\thefigure}{\arabic{section}.\arabic{figure}} + \renewcommand{\thetable}{\arabic{section}.\arabic{table}} + \renewcommand{\theequation}{\arabic{section}.\arabic{equation}} + \@addtoreset{figure}{section} + \@addtoreset{table}{section} + \@addtoreset{equation}{section} + \@secNumberingtrue +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Table and figure captions +% --------------------------------------------------------------------------% +\def\CaptionName#1{\gdef\@captionname{#1}} +\newlength\tmp %10cm +\setlength{\tmp}{1ex} +\setlength{\belowcaptionskip}{1ex} +\setlength{\abovecaptionskip}{1ex} + +\captionsetup[figure]{name=\CYRR\cyri\cyrs\cyru\cyrn\cyro\cyrk, labelsep=endash, + justification=centering, font={small}, skip=\abovecaptionskip, position=below} +\captionsetup[table]{name=\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyra, labelsep=endash, format=plain, + justification=RaggedRight, singlelinecheck=false, font={small}, position=top} + +% --------------------------------------------------------------------------% +% Table of contents +% --------------------------------------------------------------------------% +\renewcommand{\tableofcontents}% +{\structformat\section*{\uppercase{\cyr\CYRS\CYRO\CYRD\CYRE\CYRR\CYRZH\CYRA% +\CYRN\CYRI\CYRE}}\secformat\@starttoc{toc} +\thispagestyle{empty}} + +\renewcommand{\@dotsep}{1.5} +\renewcommand{\@pnumwidth}{1.0em} + +\newcommand{\l@abcd}[2]{{\@dottedtocline{0}{0pt}{0pt}{#1}{#2}}} + +\renewcommand{\l@section}{\@dottedtocline{1}{0em}{1.5em}} +\renewcommand{\l@subsection}{\@dottedtocline{2}{1.5em}{2.3em}} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Sections, subsections +% --------------------------------------------------------------------------% +% Numbering +\renewcommand{\thesection}{\arabic{section}} +\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}} +\renewcommand{\thesubsubsection}{\arabic{section}.\arabic{subsection}.\arabic{subsubsection}} + +\newcommand{\sectionbreak}{\clearpage} + +% Contents, intro, conclusion +\newcommand{\structformat} +{ + \titlespacing{\section} + {0cm}{3ex plus 1ex minus .2ex}{1.4ex plus.2ex} + \titleformat{\section}[block] + {\centering\bfseries} + {\thesection}{0ex}{} +} + +% Sections, subsections +\newcommand{\secformat} +{ + \titlespacing{\section} + {0cm}{3ex plus 1ex minus .2ex}{0.4ex plus.2ex} + \titleformat{\section}[block] + {\hspace{1.25cm}\raggedright\bfseries} + {\thesection}{1ex}{} +} + +\newif\if@hyperrefloaded\@hyperrefloadedfalse +\AtBeginDocument{\@ifpackageloaded{hyperref}% + {\@hyperrefloadedtrue}{\@hyperrefloadedfalse}% +} + +%\RequirePackage{ifthen} +\newcommand{\starsection}[1]{ + \structformat + \section*{#1}% + \if@hyperrefloaded + \phantomsection + \fi + \addcontentsline{toc}{section}{#1} + \setcounter{section}{0} + \secformat +} + + +\setcounter{section}{0} +\secformat + + +\newcommand{\intro}{\starsection{\cyr\CYRV\CYRV\CYRE\CYRD\CYRE% +\CYRN\CYRI\CYRE}} +\newcommand{\abbreviations}{\starsection{\CYRO\CYRB\CYRO\CYRZ\CYRN\CYRA% +\CYRCH\CYRE\CYRN\CYRI\CYRYA\ \CYRI\ \CYRS\CYRO\CYRK\CYRR\CYRA\CYRSHCH% +\CYRE\CYRN\CYRI\CYRYA}} +\newcommand{\definitions}{\starsection{\CYRO\CYRP\CYRR\CYRE\CYRD\CYRE% +\CYRL\CYRE\CYRN\CYRI\CYRYA}} +\newcommand{\defabbr}{\starsection{\CYRO\CYRP\CYRR\CYRE\CYRD\CYRE\CYRL% +\CYRE\CYRN\CYRI\CYRYA, \CYRO\CYRB\CYRO\CYRZ\CYRN\CYRA\CYRCH\CYRE\CYRN% +\CYRI\CYRYA\ \CYRI\ \CYRS\CYRO\CYRK\CYRR\CYRA\CYRSHCH\CYRE\CYRN\CYRI\CYRYA}} +\newcommand{\conclusion}{\starsection{\cyr\CYRZ\CYRA\CYRK\CYRL\CYRYU% +\CYRCH\CYRE\CYRN\CYRI\CYRE}} + +% Section and subsection parameters +\titlespacing{\section} +{0cm}{3ex plus 1ex minus .2ex}{0.4ex plus.2ex} + +\titleformat{\subsection}[block] +{\hspace{1.25cm}\normalfont\bfseries} +{\thesubsection}{1ex}{} +\titlespacing{\subsection} +{0cm}{2ex plus 1ex minus .2ex}{.4ex plus.2ex} + +\titleformat{\subsubsection}[block] +{\hspace{1.25cm}\normalfont} +{\thesubsubsection}{1ex}{} +\titlespacing{\subsubsection} +{0cm}{2ex plus 1ex minus .2ex}{.4ex plus.2ex} + +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% + + +%\AddEnumerateCounter{\Asbuk}{\@Asbuk}{\CYRM} +%\AddEnumerateCounter{\asbuk}{\@asbuk}{\cyrm} + +\makeatletter +\def\redeflsection{\def\l@section{\@dottedtocline{1}{0em}{10em}}} +\renewcommand{\appendix}{\par% + + \renewcommand{\secNumbering}{ + \renewcommand{\thefigure}{\Asbuk{section}.\arabic{figure}} + \renewcommand{\thetable}{\Asbuk{section}.\arabic{table}} + \renewcommand{\theequation}{\Asbuk{section}.\arabic{equation}} + \@addtoreset{figure}{section} + \@addtoreset{table}{section} + \@addtoreset{equation}{section} + + } + \if@secNumbering + \secNumbering + \fi + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \renewcommand{\appendixname}{\cyr\CYRP\CYRR\CYRI\CYRL\CYRO\CYRZH\CYRE% + \CYRN\CYRI\CYRE}% + \def\sectionname{\appendixname}% + \addtocontents{toc}{\protect\redeflsection}% + \gdef\thesection{\Asbuk{section}}% + \titlespacing{\section} + %{0cm}{1ex plus 0.1ex minus .2ex}{1.1ex plus.1ex} + {0cm}{3ex plus 1ex minus .2ex}{0.4ex plus.2ex} + \titleformat{\section}[display] + {\centering\normalfont\bfseries} + {\appendixname\hspace{1ex}\thesection}{0ex}{} + + + \titlecontents{section} + [3ex] + {\hspace{-3ex}} + {\appendixname~\thecontentslabel\hspace{2ex}} + {\hspace{2.3em}} + {\titlerule*[0.98ex]{.}\contentspage} + +} + + + +% --------------------------------------------------------------------------% +% Title pages +% --------------------------------------------------------------------------% +%\newcommand{\shapka}{{\centering \CYRM\CYRI\CYRN\CYRO\CYRB\CYRR\CYRN\CYRA% +%\CYRU\CYRK\CYRI\ \CYRR\CYRO\CYRS\CYRS\CYRI\CYRI\\ % +%\CYRF\cyre\cyrd\cyre\cyrr\cyra\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyrg\cyro% +%\cyrs\cyru\cyrd\cyra\cyrr\cyrs\cyrt\cyrv\cyre\cyrn\cyrn\cyro\cyre\ % +%\cyrb\cyryu\cyrd\cyrzh\cyre\cyrt\cyrn\cyro\cyre\ \cyro\cyrb\cyrr\cyra% +%\cyrz\cyro\cyrv\cyra\cyrt\cyre\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyru% +%\cyrch\cyrr\cyre\cyrzh\cyrd\cyre\cyrn\cyri\cyre\ \cyrv\cyrery\cyrs% +%\cyrsh\cyre\cyrg\cyro\ \cyro\cyrb\cyrr\cyra\cyrz% +%\cyro\cyrv\cyra\cyrn\cyri\cyrya\\ +%\textbf{<<\CYRS\CYRA\CYRR\CYRA\CYRT\CYRO\CYRV\CYRS\CYRK\CYRI\CYRISHRT\ % +%\CYRN\CYRA\CYRC\CYRI\CYRO\CYRN\CYRA\CYRL\CYRSFTSN\CYRN\CYRERY% +%\CYRISHRT\ \CYRI\CYRS\CYRS\CYRL\CYRE\CYRD\CYRO\CYRV\CYRA\CYRT\CYRE\CYRL% +%\CYRSFTSN\CYRS\CYRK\CYRI\CYRISHRT\ % +%\CYRG\CYRO\CYRS\CYRU\CYRD\CYRA\CYRR\CYRS\CYRT\CYRV\CYRE\CYRN\CYRN\CYRERY% +%\CYRISHRT\ \CYRU\CYRN\CYRI\CYRV\CYRE\CYRR\CYRS\CYRI\CYRT\CYRE\CYRT\ % +%\CYRI\CYRM\CYRE\CYRN\CYRI~\CYRN.\,\CYRG.\,\CYRCH\CYRE\CYRR\CYRN\CYRERY% +%\CYRSH\CYRE\CYRV\CYRS\CYRK\CYRO\CYRG\CYRO>>}\\}} + +%\newcommand{\shapka}{{\centering \CYRM\CYRI\CYRN\CYRO\CYRB\CYRR\CYRN\CYRA% +%\CYRU\CYRK\CYRI\ \CYRR\CYRO\CYRS\CYRS\CYRI\CYRI\\ \hspace{-1em}% +%\CYRF\cyre\cyrd\cyre\cyrr\cyra\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyrg\cyro% +%\cyrs\cyru\cyrd\cyra\cyrr\cyrs\cyrt\cyrv\cyre\cyrn\cyrn\cyro\cyre\ % +%\cyrb\cyryu\cyrd\cyrzh\cyre\cyrt\cyrn\cyro\cyre\ \cyro\cyrb\cyrr\cyra% +%\cyrz\cyro\cyrv\cyra\cyrt\cyre\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyru% +%\cyrch\cyrr\cyre\cyrzh\cyrd\cyre\cyrn\cyri\cyre\ \\\cyrv\cyrery\cyrs% +%\cyrsh\cyre\cyrg\cyro\ \cyro\cyrb\cyrr\cyra\cyrz% +%\cyro\cyrv\cyra\cyrn\cyri\cyrya\\\hspace{-2em} +%{ +%\textbf{<<\CYRS\CYRA\CYRR\CYRA\CYRT\CYRO\CYRV\CYRS\CYRK\CYRI\CYRISHRT\ % +%\CYRN\CYRA\CYRC\CYRI\CYRO\CYRN\CYRA\CYRL\CYRSFTSN\CYRN\CYRERY% +%\CYRISHRT\ \CYRI\CYRS\CYRS\CYRL\CYRE\CYRD\CYRO\CYRV\CYRA\CYRT\CYRE\CYRL% +%\CYRSFTSN\CYRS\CYRK\CYRI\CYRISHRT}} \\% +%{\textbf{\CYRG\CYRO\CYRS\CYRU\CYRD\CYRA\CYRR\CYRS\CYRT\CYRV\CYRE\CYRN\CYRN\CYRERY% +%\CYRISHRT\ \CYRU\CYRN\CYRI\CYRV\CYRE\CYRR\CYRS\CYRI\CYRT\CYRE\CYRT}} \\% +%{\textbf{\CYRI\CYRM\CYRE\CYRN\CYRI~\CYRN.\,\CYRG.\,\CYRCH\CYRE\CYRR\CYRN\CYRERY% +%\CYRSH\CYRE\CYRV\CYRS\CYRK\CYRO\CYRG\CYRO>>}}\\}} + +% \newcommand{\shapka}{{\centering \CYRM\CYRI\CYRN\CYRO\CYRB\CYRR\CYRN\CYRA% +% \CYRU\CYRK\CYRI\ \CYRR\CYRO\CYRS\CYRS\CYRI\CYRI\\ % +% \CYRF\cyre\cyrd\cyre\cyrr\cyra\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyrg\cyro% +% \cyrs\cyru\cyrd\cyra\cyrr\cyrs\cyrt\cyrv\cyre\cyrn\cyrn\cyro\cyre\ % +% \cyrb\cyryu\cyrd\cyrzh\cyre\cyrt\cyrn\cyro\cyre\ \cyro\cyrb\cyrr\cyra% +% \cyrz\cyro\cyrv\cyra\cyrt\cyre\cyrl\cyrsftsn\cyrn\cyro\cyre\ \cyru% +% \cyrch\cyrr\cyre\cyrzh\cyrd\cyre\cyrn\cyri\cyre\ \\\cyrv\cyrery\cyrs% +% \cyrsh\cyre\cyrg\cyro\ \cyro\cyrb\cyrr\cyra\cyrz% +% \cyro\cyrv\cyra\cyrn\cyri\cyrya\\[0.2em] +\newcommand{\shapka}{{ +\centering +\centerline{\scalebox{\scaleUnivName}[1.0]{\parbox[t]{1.1\textwidth} +{\centering +\textbf{\CYRM\CYRI\CYRN\CYRO\CYRB\CYRR\CYRN\CYRA\CYRU\CYRK\CYRI\ +\CYRR\CYRO\CYRS\CYRS\CYRI\CYRI\\ +\CYRF\CYRG\CYRB\CYRO\CYRU\ \CYRV\CYRO\ +<<\CYRS\CYRG\CYRU\ +\CYRI\CYRM\CYRE\CYRN\CYRI~\CYRN.\,\CYRG.\,\CYRCH\CYRE\CYRR\CYRN\CYRERY% +\CYRSH\CYRE\CYRV\CYRS\CYRK\CYRO\CYRG\CYRO>>}}}}}} + +\newcommand{\shapkatwo}{{ +\centering +\centerline{\scalebox{\scaleUnivName}[1.0]{\parbox[t]{1.1\textwidth} +{\centering +\CYRM\CYRI\CYRN\CYRO\CYRB\CYRR\CYRN\CYRA\CYRU\CYRK\CYRI\ +\CYRR\CYRO\CYRS\CYRS\CYRI\CYRI\\ +Федеральное государственное бюджетное образовательное учреждение высшего образования\\ +\textbf{ +<<САРАТОВСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ\ +\CYRI\CYRM\CYRE\CYRN\CYRI~\CYRN.\,\CYRG.\,\CYRCH\CYRE\CYRR\CYRN\CYRERY% +\CYRSH\CYRE\CYRV\CYRS\CYRK\CYRO\CYRG\CYRO>>}}}}}} + +\newcommand{\CDMakeTitle} +{ +\thispagestyle{empty} +\shapka +%\vspace{0.5cm} +\begin{center} +%\parbox{8cm}{ +%\raggedright +\CYRK\cyra\cyrf\cyre\cyrd\cyrr\cyra\ \@chair +%} +\end{center} + +\vspace{14pt} +\vspace{1cm} +{\centering +\textbf{\MakeUppercase{\@title}} +\\[0.3cm] +{\@workname} + +} + +\vspace{1.5cm} +\begin{flushleft} +\@studenttitle\ \@course\ \cyrk\cyru\cyrr\cyrs\cyra\ \@group\ \cyrg% +\cyrr\cyru\cyrp\cyrp\cyrery\\ +\@spectype\ \@napravlenie\\ +\@department\\ +\@author +\end{flushleft} +\vfill + +\noindent +\CYRN\cyra\cyru\cyrch\cyrn\cyrery\cyrishrt\ \cyrr\cyru\cyrk\cyro\cyrv% +\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrsftsn\\ +\signature{\@satitle}{\@saname}\\[14pt] +\CYRZ\cyra\cyrv\cyre\cyrd\cyru\cyryu\cyrshch\cyri\cyrishrt\ \cyrk\cyra% +\cyrf\cyre\cyrd\cyrr\cyro\cyrishrt\\ +\signature{\@chtitle}{\@chname} + +\vfill +{\centering{\cyr\CYRS\cyra\cyrr\cyra\cyrt\cyro\cyrv\ \@date} + +} +\newpage +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Title page of internship +% --------------------------------------------------------------------------% +\newcommand{\MakeTitlePr} +{ +\thispagestyle{empty} +\begin{center} +\shapka +\end{center} +\vspace{0.5cm} + + +\begin{flushright} + \parbox{7cm}{ + \begin{flushleft} + \CYRU\CYRT\CYRV\CYRE\CYRR\CYRZH\CYRD\CYRA\CYRYU\\ + \CYRZ\cyra\cyrv\cyre\cyrd\cyru\cyryu\cyrshch\cyri\cyrishrt\ \cyrk\cyra\cyrf\cyre\cyrd\cyrr\cyro\cyrishrt\\ + \@chtitle\\ + \hbox to 7cm{\hrulefill\ \@chname} + \end{flushleft} + } +\end{flushright} + +\vspace{1cm} +\begin{center}\textbf{\MakeUppercase{\@worktype}}\end{center} +\begin{flushleft} + \vspace{12pt} + % TODO: ubrat nahui cifru 2 + \@studenttitle\ 2\ \cyrk\cyru\cyrr\cyrs\cyra\\ + \@department\\ + + { + \centering + \@author\\ + } + \vspace{0.5cm} + + { + \centering + \@practtype\ \cyrp\cyrr\cyra\cyrk\cyrt\cyri\cyrk\cyra\\ + (\CYRU\cyrch\cyre\cyrb\cyrn\cyra\cyrya\ \cyrp\cyrr\cyra\cyrk\cyrt\cyri\cyrk\cyra)\\ + } + \vspace{0.5cm} + + \cyrk\cyra\cyrf\cyre\cyrd\cyrr\cyra\ \@chair\\ + \cyrk\cyru\cyrr\cyrs\ \underline{\textit{\@course}}\\ + \cyrs\cyre\cyrm\cyre\cyrs\cyrt\cyrr\ \underline{\textit{\@term}}\\ + \cyrp\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyri\cyrt\cyre\cyrl\cyrsftsn\cyrn% + \cyro\cyrs\cyrt\cyrsftsn\ \underline{\textit{\@duration\ \cyrn\cyre\cyrd\cyre\cyrl\cyri, \cyrs\ \@practStart\ \cyrg. \cyrp\cyro\ \@practFinish\ \cyrg.}} +\end{flushleft} +%\parindent=-0.2cm +\vspace{1cm} + +\noindent +\CYRR\cyru\cyrk\cyro\cyrv\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrsftsn\ \cyrp% +\cyrr\cyra\cyrk\cyrt\cyri\cyrk\cyri\\% +\signature{\@satitle}{\@saname}\\[14pt] + +\vfill +{\centering{\cyr\CYRS\cyra\cyrr\cyra\cyrt\cyro\cyrv\\\@date} + +} +% \CYRR\cyru\cyrk\cyro\cyrv\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrsftsn\ \cyrp% +% \cyrr\cyra\cyrk\cyrt\cyri\cyrk\cyri\ \cyro\cyrt\ \cyro\cyrr\cyrg\cyra% +% \cyrn\cyri\cyrz\cyra\cyrc\cyri\cyri\ (\cyru\cyrch\cyrr\cyre\cyrzh\cyrd% +% \cyre\cyrn\cyri\cyrya, \cyrp\cyrr\cyre\cyrd\cyrp\cyrr\cyri\cyrya\cyrt% +% \cyri\cyrya),\\[12pt]% +% \signature{\@patitle}{\@paname} + +% \newpage +% \thispagestyle{empty} +% \vspace*{11cm} +% \CYRT\cyre\cyrm\cyra\ \cyrp\cyrr\cyra\cyrk\cyrt\cyri\cyrk\cyri:<<\@title>> +% \parindent=1.25cm +% \newpage +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Title page of review +% --------------------------------------------------------------------------% +\newcommand{\MakeTitleReview} +{ +\pagestyle{empty} +\begin{center} +\shapka +\end{center} + + +{ +\centering +\textbf{\MakeUppercase{\@reviewtype}}\\[-0.3em] +\textbf{\@workname}\\[0.3em] +<<{\MakeUppercase{\@title}}>> + +\@studenttitle\ \@course\ \cyrk\cyru\cyrr\cyrs\cyra\ % +\@department\\ + +\centering +{\@author}\\ + +\centering +\@studentdone\ \cyro\cyrb\cyru\cyrch\cyre\cyrn\cyri\cyre\ \cyrp% +\cyro\ \@spectyperod\ \@napravlenie + +} +\vspace{2em} +} +% --------------------------------------------------------------------------% + + +% --------------------------------------------------------------------------% +% Title page of assignment +% --------------------------------------------------------------------------% +\newcommand{\MakeTitleAssign} +{ +\pagestyle{empty} +\begin{center} +\shapka +\end{center} + +{ +\centering +\CYRK\cyra\cyrf\cyre\cyrd\cyrr\cyra\ \@chair + + +\vspace{6em} +\centering +\textbf{\MakeUppercase{\@reviewtype}\\%[-0.3em] +\@workname} + +\vspace{0.3em} +\raggedright +\cyrp\cyro\ \@spectyperod\ \@napravlenie\\ +\@studenttitle\ \@course\ \cyrk\cyru\cyrr\cyrs\cyra\ % +\@department\\ +\MakeUppercase{\@author}\\ +\textbf{\CYRT\cyre\cyrm\cyra\ \cyrr\cyra\cyrb\cyro\cyrt\cyrery:} <<{\MakeUppercase{\@title}}>> + +} + +\vfill + +\noindent +\CYRN\cyra\cyru\cyrch\cyrn\cyrery\cyrishrt\ \cyrr\cyru\cyrk\cyro\cyrv% +\cyro\cyrd\cyri\cyrt\cyre\cyrl\cyrsftsn\\ +\signature{\@satitle}{\@saname}\\[14pt] +\CYRZ\cyra\cyrv\cyre\cyrd\cyru\cyryu\cyrshch\cyri\cyrishrt\ \cyrk\cyra% +\cyrf\cyre\cyrd\cyrr\cyro\cyrishrt\\ +\signature{\@chtitle}{\@chname} + +\vfill +{\centering{\cyr\CYRS\cyra\cyrr\cyra\cyrt\cyro\cyrv\ \@date} + +} +\newpage +\begin{center}\bf +C\cyro\cyrd\cyre\cyrr\cyrzh\cyra\cyrn\cyri\cyre\ \cyrr\cyra\cyrb% +\cyro\cyrt\cyrery +\end{center} +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Referat title page +% --------------------------------------------------------------------------% +\newcommand{\RefMakeTitle} +{ +\thispagestyle{empty} +\shapka + +\vspace{3cm} +{\centering +\textbf{\MakeUppercase{\@title}} +\\[0.3cm] +{\@workname} + +} + +\vspace{1.5cm} +\begin{flushleft} +\@studenttitle\ \@course\ \cyrk\cyru\cyrr\cyrs\cyra\ \@group\ \cyrg% +\cyrr\cyru\cyrp\cyrp\cyrery\\ +\@spectype\ \@napravlenie\\ +\@department\\ +\@author +\end{flushleft} +\vfill + +\noindent +\CYRP\cyrr\cyro\cyrv\cyre\cyrr\cyri\cyrl\\ +\signature{\@satitle}{\@saname} + +\vfill +{\centering{\cyr\CYRS\cyra\cyrr\cyra\cyrt\cyro\cyrv\ \@date} + +} +\newpage +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% LabWork2 title page +% --------------------------------------------------------------------------% +\newcommand{\LabTwoMakeTitle} +{ +\thispagestyle{empty} +\shapkatwo + +\vspace{1cm} +\hfill\begin{minipage}{0.4\linewidth} + Кафедра {\@chair} +\end{minipage} + +\vspace{1cm} +{\centering +\textbf{\MakeUppercase{\@title}} +\\[0.3cm] +{\@workname}\\ +<<{\MakeUppercase{\@subject}}>> + +} + +\vspace{1.5cm} +\begin{flushleft} +\@studenttitle\ \@course\ \cyrk\cyru\cyrr\cyrs\cyra\ \@group\ \cyrg\cyrr\cyru\cyrp\cyrp\cyrery\\ +\@spectype\ \@napravlenie\\ +\@department\\ +\centering\@author +\end{flushleft} +\vfill + +\noindent +Преподаватель\\ +\signature{\@satitle}{\@saname} + +\vfill +{\centering{\cyr\CYRS\cyra\cyrr\cyra\cyrt\cyro\cyrv\ \@date} + +} +\newpage +} +% --------------------------------------------------------------------------% + +% --------------------------------------------------------------------------% +% Last page +% --------------------------------------------------------------------------% +\newcommand{\lastpage} +{ +\newpage +\thispagestyle{empty} +\vspace*{11cm} +\@worktype\ <<\@title>>\ \@typework\ \cyrm\cyrn\cyro\cyrishrt\ % +\cyrs\cyra\cyrm\cyro\cyrs\cyrt\cyro\cyrya\cyrt\cyre\cyrl\cyrsftsn\cyrn% +\cyro, \cyri\ \cyrn\cyra\ \cyrv\cyrs\cyre\ \cyri\cyrs\cyrt\cyro\cyrch% +\cyrn\cyri\cyrk\cyri, \cyri\cyrm\cyre\cyryu\cyrshch\cyri\cyre\cyrs% +\cyrya\ \cyrv\ \cyrr\cyra\cyrb\cyro\cyrt\cyre, \cyrd\cyra\cyrn\cyrery\ % +\cyrs\cyro\cyro\cyrt\cyrv\cyre\cyrs\cyrt\cyrv\cyru\cyryu\cyrshch\cyri% +\cyre\ \cyrs\cyrs\cyrery\cyrl\cyrk\cyri.\par +\parindent=9cm +\parbox{8cm}{ +\begin{flushleft} +\hbox to 6cm{\hbox to 3.5cm{\hrulefill}/\hbox to 3.5cm{\hrulefill}/} +\end{flushleft} +} +} + +\AddEnumerateCounter{\Asbuk}{\@Asbuk}{\CYRM} +\AddEnumerateCounter{\asbuk}{\@asbuk}{\cyrm} + +% --------------------------------------------------------------------------% +% enumerations +% --------------------------------------------------------------------------% +\setlist{noitemsep} +%\setlist[1]{labelindent=\parindent} % < Usually a good idea +\setlist[itemize]{ +%leftmargin=52pt, +rightmargin=0pt, +labelsep=7pt, +labelwidth=20pt, +itemindent=0pt, +listparindent=0pt, +topsep=0pt,%4pt plus 2pt minus 4pt, +partopsep=0pt,% plus 1pt minus 1pt, +parsep=0pt,% plus 1pt, +itemsep=0 pt%\parsep +} +\setlist[enumerate]{ +%leftmargin=52pt, +rightmargin=0pt, +labelsep=5pt, +labelwidth=20pt, +itemindent=0pt, +listparindent=0pt, +topsep=0pt,%4pt plus 2pt minus 4pt, +partopsep=0pt,% plus 1pt minus 1pt, +parsep=0pt,% plus 1pt, +itemsep=0pt%\parsep +} +\setlist[itemize,1]{label={\normalfont\bfseries\textemdash}} +%\setlist[enumerate]{labelsep=*, leftmargin=1.5pc} +\setlist[enumerate,1]{label=\arabic*., ref=\arabic*} +\setlist[enumerate,2]{label=\emph{\asbuk*}), ref=\theenumi.\emph{\asbuk*}} +\setlist[enumerate,3]{label=\roman*., ref=\theenumii.\roman*} +\setlist[enumerate,4]{label=\Asbuk*., ref=\theenumiii.\Asbuk*} +%\setlist[description]{font=\sffamily\bfseries} + +%%%\renewcommand{\@listI}{% +%%%\leftmargin=52pt +%%%\rightmargin=0pt +%%%\labelsep=7pt +%%%\labelwidth=20pt +%%%\itemindent=0pt +%%%\listparindent=0pt +%%%\topsep=4pt plus 2pt minus 4pt +%%%\partopsep=0pt plus 1pt minus 1pt +%%%\parsep=0pt plus 1pt +%%%\itemsep=\parsep} + +%%%\renewcommand\theenumi {\@arabic\c@enumi} +%%%\renewcommand\theenumii {\asbuk{enumii}} +%%%\renewcommand\theenumiii{\@roman\c@enumiii} +%%%\renewcommand\theenumiv {\Asbuk{enumiv}} +%%%\newcommand\atheenumi{\asbuk{enumi}} +%%%\newcommand\atheenumii{\asbuk{enumii}} +%%%\renewcommand\labelenumi {\theenumi.} +%%%\renewcommand\labelenumii {\theenumii.} +%%%\renewcommand\labelenumiii{\theenumiii.} +%%%\renewcommand\labelenumiv {\theenumiv.} +%%%\renewcommand\p@enumii {\theenumi} +%%%\renewcommand\p@enumiii {\theenumi.\theenumii} +%%%\renewcommand\p@enumiv {\p@enumiii.\theenumiii} +%%%\renewcommand\labelitemi {\normalfont\bfseries\textemdash} +%%%\renewcommand\labelitemii {\normalfont\bfseries\textendash} +%%%\renewcommand\labelitemiii{\textperiodcentered} +%%%\renewcommand\labelitemiv {\textasteriskcentered} +%%% +%%%\renewcommand{\@listI}{% +%%%\leftmargin=52pt +%%%\rightmargin=0pt +%%%\labelsep=7pt +%%%\labelwidth=20pt +%%%\itemindent=0pt +%%%\listparindent=0pt +%%%\topsep=4pt plus 2pt minus 4pt +%%%\partopsep=0pt plus 1pt minus 1pt +%%%\parsep=0pt plus 1pt +%%%\itemsep=\parsep} +% --------------------------------------------------------------------------% + + +% --------------------------------------------------------------------------% +% References +% --------------------------------------------------------------------------% +\makeatletter +\def\@biblabel#1{#1 } + +\renewenvironment{thebibliography}[1] +{ + \starsection{\cyr\CYRS\CYRP\CYRI\CYRS\CYRO\CYRK\ \CYRI\CYRS\CYRP\CYRO\CYRL% + \CYRSFTSN\CYRZ\CYRO\CYRV\CYRA\CYRN\CYRN\CYRERY\CYRH\ \CYRI\CYRS\CYRT% + \CYRO\CYRCH\CYRN\CYRI\CYRK\CYRO\CYRV} + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \setlength{\itemsep}{0pt} + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} +{\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + +\makeatother +% --------------------------------------------------------------------------% diff --git a/lab4/report/images/test1.png b/lab4/report/images/test1.png Binary files differnew file mode 100644 index 0000000..b7ea427 --- /dev/null +++ b/lab4/report/images/test1.png diff --git a/lab4/report/images/test2.png b/lab4/report/images/test2.png Binary files differnew file mode 100644 index 0000000..bf79b6d --- /dev/null +++ b/lab4/report/images/test2.png diff --git a/lab4/report/images/test3_1.png b/lab4/report/images/test3_1.png Binary files differnew file mode 100644 index 0000000..ae3a93e --- /dev/null +++ b/lab4/report/images/test3_1.png diff --git a/lab4/report/images/test3_2.png b/lab4/report/images/test3_2.png Binary files differnew file mode 100644 index 0000000..72b0c81 --- /dev/null +++ b/lab4/report/images/test3_2.png diff --git a/lab4/report/lab4.tex b/lab4/report/lab4.tex new file mode 100644 index 0000000..1790900 --- /dev/null +++ b/lab4/report/lab4.tex @@ -0,0 +1,472 @@ +\documentclass[spec, och, labwork2]{SCWorks} +\usepackage{preamble} + +\begin{document} +\include{titlepage.tex} +\tableofcontents + +\section{Постановка задачи} + +Цель работы "--- изучение основных понятий теории полугрупп. Порядок выполнения +работы: +\begin{enumerate} + \item + Рассмотреть понятия полугруппы, подполугруппы и порождающего множества. + Разработать алгоритм построения подполугрупп по таблице Кэли. + \item + Разработать алгоритм построения полугруппы бинарных отношений по заданному + порождающему множеству. + \item + Рассмотреть понятия подгруппы, порождающего множества и определяющих + соотношений. Разработать алгоритм построения полугруппы по порождающему + множеству и определяющим соотношениям. +\end{enumerate} + + +\section{Теоретические сведения} + +\begin{definition} + Полугруппа "--- это алгебра $S = (S, \cdot)$ с одной + ассоциативной бинарной операцией $\cdot$, т.е. выполняется $(x \cdot y) \cdot + z = x \cdot (y \cdot z)$ для $\forall x, y, z \in S$. Если полугрупповая + операция называется умножением (или сложением), то полугруппу называют + мультипликативной (или аддитивной). +\end{definition} +\begin{definition} + Подмножество $X$ полугруппы $S$ называется подполугруппой, если $X$ устойчиво + относительно операции умножения, т.е. $\forall x, y \in X$ выполняется + свойство: $x \cdot y \in X$. В этом случае множество $X$ с ограничением на нем + операции умножения исходной полугруппы $S$ образует полугруппу. +\end{definition} + +В силу общего свойства подалгебр пересечение любого семейства $X_i$ $(i \in I)$ +подполугрупп полугруппы $S$ является подполугруппой $S$ и, значит, множество +$Sub(S)$ всех подполугрупп полугруппы $S$ является системой замыканий. множество +$X$. Такая полугруппа обозначается символом $\langle X \rangle$ и называется +подполугруппой $S$, порождённой множеством $X$. При этом множество $X$ +называется также \textbf{порождающим множеством} подполугруппы $\langle X +\rangle$. В частности, если $\langle X \rangle = S$, то $X$ называется +порождающим множеством полугруппы $S$ и говорят, что множество $X$ порождает +полугруппу $S$. + +Для любой конечной полугруппы $S$ найдется такой конечный алфавит A, что для +некоторого отображения $\phi : A \rightarrow S$ выполняется равенство $\langle +\phi(A) \rangle =S$ и, значит, $S \cong A^+/ \ker \phi$ этом случае множество A +называется множеством порождающих символов полугруппы S (относительно +отображения $\phi : A \rightarrow S$ ). Если при этом для слов $w_1,w_2 \in A$ +выполняется равенство $\phi(w_1) = \phi(w_2)$, т.е. $w_1 \equiv w_2(\ker \phi)$ , +то говорят, что на S выполняется соотношение $w_1 = w_2$ (относительно +отображения $\phi : A \rightarrow S$). + +Очевидно, что в общем случае множество таких соотношений $w_1 = w_2$ для всех +пар $(w_1, w_2) \in \ker \phi$ будет бесконечным и не представляется возможности +эффективно описать полугруппу S в виде полугруппы классов конгруэнции $\ker \phi$ +. Однако в некоторых случаях можно выбрать такое сравнительно простое +подмножество $\rho \subset \ker \phi$ , которое однозначно определяет конгруэнцию +$\ker \phi$ как наименьшую конгруэнцию полугруппы $A^+$ , содержащую отношение +$\rho$, т.е. $\ker \phi = f_{con}(\rho) = f_{eq}(f_{reg}(\rho))$. + +Так как в случае $(w_1, w_2) \in \rho$ по-прежнему выполняется равенство +$\phi(w_1) = \phi(w_2)$, то будем писать $w_1 = w_2$ и называть такие выражения +\textbf{определяющими соотношениями}. Из таких соотношений конгруэнция $\ker \phi$ +строится с помощью применения следующих процедур к словам $u,v \in A^+$: + +\begin{enumerate} + \item + слово $v$ непосредственно выводится из слова $u$, если $v$ получается из $u$ + заменой некоторого подслова $w_1$ на слово $w_2$, удовлетворяющее + определяющему соотношению $w_1 = w_2$, т.е. $(u, v) = (xw_1y, xw_2y)$ для + некоторых $x, y \in A^*$; + \item + слово $v$ выводится из слова $u$, если $v$ получается из $u$ с помощью + конечного числа применения процедуры $1$. +\end{enumerate} + +Если все выполняющиеся на $S$ соотношения выводятся из определяющих соотношений +совокупности $\rho$, то конгруэнция $\ker \phi$ полностью определяется отношением +$\rho$ и выражение $<A: {w_1 = w_2 : (w_1, w_2) \in \rho}>$ называется +\textbf{копредставлением полугруппы $S$}. + + +\section{Алгоритмы} + +% +\subsection{Алгоритм построения построения подполугруппы по заданному порождающему множеству} + +\textit{Вход.} Полугруппа $S$ с таблицей Кэли $A = (a_{ij})$ размерности $N +\times N$ и подмножество $X \subset S$. + +\textit{Выход.} Подполугруппа $\langle X \rangle \subset S$. + +\begin{enumerate} + \item + Положим $i = 0$, $X_0 = X$; + \item + Для $X_i$ вычислим $\overline{X}_l = \{ x \cdot y ~ | ~ x \in X_i \land y + \in X \}$ и положим $X_{i + 1} = X_i \cup \overline{X}_l$ ($x \cdot y = + a_{xy}$); + \item + Вычислим \[ \langle X \rangle = \bigcup^\infty_{i = 0} X_i \] +\end{enumerate} + +Трудоёмкость алгоритма "--- $O(N^3)$. + + +% +\subsection{Алгоритм построения полугруппы бинарных отношений по заданному порождающему множеству} + +\textit{Вход.} Конечное множество $X$ бинарных отношений, заданное булевыми +матрицами размерности $N \times N$. + +\textit{Выход.} Полугруппа $\langle X \rangle$. + +\begin{enumerate} + \item + Пусть каждому бинарному отношению $x_i \in X$ ($0 \leq i < N$) соответствует + матрица $A_i$. Зададим список $L$ так, что $L_i = A_i \, (0 \leq i < N)$. + Полученный список $L$ является полугруппой $\langle X \rangle$. + \item + Создать список $C$, элементы которого будут $c_k \in C$, где $0 \leq k < + (N^1 + N^2 + \dots + N^N)$. То есть этот список является суммой размещений с + повторениями. Каждая комбинация $c_k$ будет определять некоторую + совокупность матрицы, которые будут обрабатываться на следующем шаге. + \item + Возьмём матрицу $A_i$ ($0 \leq i < N$) и поэлементно умножим её на матрицы + $B_0, \dots, B_l$ согласно текущей комбинации $c_k$ ($0 \leq k < (N^1 + N^2 + + \dots + N^N)$), где матрицы $B_1, \dots, B_l$ составляют текущую комбинацию + $c_k$ ($l$ -- количество элементов в $c_k$). Таким образом, получим матрицу + $H = A_i \odot B_1 \odot \dots \odot B_l$, где $\odot$ -- операция + поэлементного умножения. Добавим $H$ в список $L$ в качестве нового + элемента полугруппы $\langle X \rangle$. + \item + Шаг 3 необходимо повторить $k$ раз ($0 \leq k < (N^1 + N^2 + \dots + N^N)$). +\end{enumerate} + +Трудоёмкость алгоритма "--- $O((N^1 + N^2 + \dots + N^N) \cdot l)$, где $l$ "--- +количество элементов в $c_k \in C$. + + +% +\subsection{Алгоритм построения полугруппы по порождающему множеству и определяющим соотношениям} + +\textit{Вход.} Конечное множество символов $A$ мощности $N$ и конечное множество +$R$ определяющих соотношений мощности $M$. + +\textit{Выход.} Полугруппа $\langle A | R \rangle$. + +\begin{enumerate} + \item + Каждому преобразованию $r_i \in R$ ($0 \leq i \leq M - 1$) соответствует + список элементов множества $A$, то есть $a_j \in A$ ($0 \leq j < N$) "--- + элементы, в которые осуществляется переход из исходных элементов множества + $A$. Определим список $T$ как $T_i = \{ a_j \in A \}$ ($0 \leq i \leq N - + 1$), где $a_j$ соответствует некоторому $a'_j \in A$ (из исходного множества + символов). + \item + Создать список $C$, элементы которого будут $c_k \in C$, где $0 \leq k \leq + (M^1 + M^2 + \dots + M^N - 1)$. Этот список "--- сумма размещений с + повторениями, каждая такая комбинация определяет некоторую упорядоченную + совокупность соотношений, которые применяются к исходным элементам множества + $A$. + \item + Инициализировать пустой словарь $D$, где ключом будет являться комбинация + $c_k \in C$ ($0 \leq k \leq (M^1 + M^2 + \dots + M^N) - 1$), а значением + список из элементов $b_j$, где $0 \leq j \leq N - 1$. Этот словарь будет + определять полугруппу $\langle A | R \rangle$ (копредставление). Каждый + элемент $b_j$ находится по списку $T$: $b_j = T_{ij}$, где $i$ -- индекс + элемента $r_i \in R$ ($0 \leq i < M$), $j$ -- индекс элемента $a_j \in A$ + ($0 \leq j \leq N - 1$) (Например, последовательность определяющих + соотношений $abc$ по сути определяет элемент, который задан как $T_{ip}$, + где $p = T_{iv}$, где $v = T_{ij}$ при некоторых $0 \leq i, j, v, p \leq N - + 1$). Далее добавить в словарь по ключу $c_k$ список из элементов $b_j$ при + $0 \leq j \leq N - 1$, т.е. $D[c_k] = [b_0, \dots, b_j, \dots, b_{N - 1}]$ + (где каждый элемент $b_j$ соответствует результату преобразований после + применения определяющих соотношений к исходному элементу $a_j$ множества + $A$), где $0 \leq j \leq N - 1$, $0 \leq k \leq (M^1 + M^2 + \dots + M^N) - + 1$. +\end{enumerate} + +Трудоёмкость алгоритма "--- $O((M^1 + M^2 + \dots + M^n) \cdot n^2 \cdot M)$. + + +\section{Программная реализация} + +\inputminted[fontsize=\small, breaklines=true, style=bw, linenos]{c}{../lab4.py} + + +\section{Результаты тестирования} + +\begin{figure}[H] + \centering + \includegraphics[width=0.7\textwidth]{test1.png} + \caption{Проверка построения подполугруппы по таблице Кэли} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{test2.png} + \caption{Проверка построения полугруппы бинарных отношений порождающему множеству} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.75\textwidth]{test3_1.png} + \caption{Проверка построения полугруппы по порождающему множеству и определяющим соотношениям (часть 1)} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.75\textwidth]{test3_2.png} + \caption{Проверка построения полугруппы по порождающему множеству и определяющим соотношениям (часть 2)} +\end{figure} + + +\section{Решение задач} + +\subsection*{Задание 1} + +Найдите полугруппу S = $\langle f, g \rangle$ преобразований множества $X = {1, +2, 3}$, порожденную следующими преобразованиями $f, g$ в симметрической +полугруппе $T(X)$ преобразований множества $X$: + +\begin{equation*} + f = \begin{pmatrix} + 1 & 2 & 3 \\ + 1 & 1 & 1 + \end{pmatrix}, + g = \begin{pmatrix} + 1 & 2 & 3 \\ + 2 & 3 & 2 + \end{pmatrix} +\end{equation*} + +Известно, что множество преобразований $f, g$ порождает полугруппу S = $\langle +f, g \rangle$ преобразований множества X, которая состоит из элементов $f, g, +f^2, f g, gf, g^2, \dots$ и является подполугруппой конечной полугруппы $T(X)$. + +$f^2 = +\begin{pmatrix} + 1 & 2 & 3 \\ + 1 & 1 & 1 +\end{pmatrix} \cdot +\begin{pmatrix} + 1 & 2 & 3 \\ + 1 & 1 & 1 +\end{pmatrix} = +\begin{tabular}{c c c c} +& 1 & 2 & 3 \\ +f & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ +& 1 & 1 & 1 \\ +f & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ +& 1 & 1 & 1 \\ +\end{tabular} = +\begin{pmatrix} +1 & 2 & 3 \\ +1 & 1 & 1 +\end{pmatrix}$ + +$fg = +\begin{pmatrix} + 1 & 2 & 3 \\ + 1 & 1 & 1 +\end{pmatrix} \cdot +\begin{pmatrix} + 1 & 2 & 3 \\ + 2 & 3 & 2 +\end{pmatrix} = +\begin{tabular}{c c c c} +& 1 & 2 & 3 \\ +f & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ +& 1 & 1 & 1 \\ +g & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ +& 2 & 2 & 2 \\ +\end{tabular} = +\begin{pmatrix} +1 & 2 & 3 \\ +2 & 2 & 2 +\end{pmatrix}$ + +$gf = +\begin{pmatrix} + 1 & 2 & 3 \\ + 2 & 3 & 2 +\end{pmatrix} \cdot +\begin{pmatrix} + 1 & 2 & 3 \\ + 1 & 1 & 1 +\end{pmatrix} = +\begin{tabular}{c c c c} +& 1 & 2 & 3 \\ +g & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ +& 2 & 3 & 2 \\ +f & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ +& 1 & 1 & 1 \\ +\end{tabular} = +\begin{pmatrix} +1 & 2 & 3 \\ +1 & 1 & 1 +\end{pmatrix}$ + +$g^2 = +\begin{pmatrix} + 1 & 2 & 3 \\ + 2 & 3 & 2 +\end{pmatrix} \cdot +\begin{pmatrix} + 1 & 2 & 3 \\ + 2 & 3 & 2 +\end{pmatrix} = +\begin{tabular}{c c c c} +& 1 & 2 & 3 \\ +g & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ +& 2 & 3 & 2 \\ +g & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ +& 3 & 2 & 3 \\ +\end{tabular} = +\begin{pmatrix} +1 & 2 & 3 \\ +3 & 2 & 3 +\end{pmatrix}$ + + +\subsection*{Задание 2} + +Найдите индекс и период следующих элементов $a$ полугруппы преобразований +множества $X = \{ 1, 2, 3, 4, 5 \}$: + +\begin{equation*} + a = \begin{pmatrix} + 1 & 2 & 3 & 4 & 5 \\ + 2 & 4 & 1 & 2 & 1 + \end{pmatrix} +\end{equation*} + +Вычислим $aa$: + +\begin{equation*} + aa = + \begin{tabular}{c c c c c c} + & 1 & 2 & 3 & 4 & 5\\ + a & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ + & 2 & 4 & 1 & 2 & 1\\ + a & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ + & 4 & 2 & 2 & 4 & 2\\ + \end{tabular} = + \begin{pmatrix} + 1 & 2 & 3 & 4 & 5\\ + 4 & 2 & 2 & 4 & 2 + \end{pmatrix} +\end{equation*} + +Вычислим $aaa$: + +\begin{equation*} + aaa = + \begin{tabular}{c c c c c c} + & 1 & 2 & 3 & 4 & 5\\ + a & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ + & 2 & 4 & 1 & 2 & 1\\ + a & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ + & 4 & 2 & 2 & 4 & 2\\ + a & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ + & 2 & 4 & 4 & 2 & 4\\ + \end{tabular} = + \begin{pmatrix} + 1 & 2 & 3 & 4 & 5\\ + 2 & 4 & 4 & 2 & 4 + \end{pmatrix} +\end{equation*} + + Вычислим $aaaa$: +\begin{equation*} + aaaa = + \begin{tabular}{c c c c c c} + & 1 & 2 & 3 & 4 & 5\\ + a & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ + & 2 & 4 & 1 & 2 & 1\\ + a & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ + & 4 & 2 & 2 & 4 & 2\\ + a & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ + & 2 & 4 & 4 & 2 & 4\\ + a & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\ + & 4 & 2 & 2 & 4 & 2\\ + \end{tabular} = + \begin{pmatrix} + 1 & 2 & 3 & 4 & 5\\ + 4 & 2 & 2 & 4 & 2\\ + \end{pmatrix} +\end{equation*} + +Можно заметить, что $aaaa \to aa$. Получаем, что каждый $2k$"=й элемент ($k \in +\mathbb{N}$) полугруппы будет иметь преобразование + +\begin{equation*} + \begin{pmatrix} + 1 & 2 & 3 & 4 & 5 \\ + 2 & 3 & 1 & 1 & 2 + \end{pmatrix} +\end{equation*} + +Таким образом, период равен 2. + + +\subsection*{Задание 3} + +Найдите полугруппу $S$ по следующему её копредставлению: +\begin{equation*} + S = \langle x,y : xy = yx, x^2 = y, y^3 = x \rangle +\end{equation*} + +Выделим полную систему представителей классов конгруэнции $\epsilon$, которая +определяется соотношениями данного копредставления. Для этого последовательно +рассмотрим слова фиксированной длины и выделим те, которые не будут эквивалентны +между собой относительно конгруэнции $\epsilon$. + +Рассмотрим слова длины 1: $x$, $y$ –- эти слова не эквивалентны между собой +относительно конгруэнции $\epsilon$. + +Рассмотрим слова длины 2, которые получаются из слов длины 1 путем +последовательного умножения их справа на буквы $x$ и $y$: $x^2 = y, xy, yx = xy, +y^2$ -- из этих слов только слова $xy$, $y^2$ не эквивалентны относительно +конгруэнции $\epsilon$ другим ранее выделенным словам. + +Теперь рассмотрим слова длины $3$, которые получаются из выделенных слов длины +$2$ путем последовательного умножения их справа на буквы $x$ и $y$: $xyx = y^2$, +$xy^2$, $y^2x = x^2y$, $y^3 = x$ –- из этих слов только слово $xy^2$ не +эквивалентно относительно конгруэнции $\varepsilon$ другим ранее выделенным +словам. + +Наконец рассмотрим слова длины $4$, которые получаются из выделенного слова +длины $3$ путем последовательного умножения его справа на буквы $x$ и $y$: +$xy^2x = x^2y^2 = y^3 = x$, $xy^3 = x^2 = y$ - все эти слова эквивалентны +относительно конгруэнции $\varepsilon$ ранее выделенным словам. + +Значит, $S = \{x, y, xy, y^2, xy^2 \}$ "--- полная система представителей +классов конгруэнции $\varepsilon$. Операция умножения $\cdot$ таких слов +определяется с точностью до конгруэнции $\varepsilon$ по следующей таблице Кэли: + +\begin{table}[H] + \centering + \begin{tabular}{c|c|c|c|c|c} + & $x$ & $y$ & $xy$ & $y^2$ & $xy^2$ \\ \hline + $x$ & $x$ & $xy$ & $xy$ & $xy^2$ & $xy^2$ \\ \hline + $y$ & $xy$ & $y^2$ & $xy^2$ & $y$ & $xy$ \\ \hline + $xy$ & $xy$ & $xy^2$ & $xy^2$ & $xy$ & $xy$ \\ \hline + $y^2$ & $xy^2$ & $y$ & $xy$ & $y^2$ & $xy^2$ \\ \hline + $xy^2$ & $xy^2$ & $xy$ & $xy$ & $xy^2$ & $xy^2$ \\ + \end{tabular} +\end{table} + + +\conclusion + +В ходе выполнения данной лабораторной работы были рассмотрены понятия +полугруппы, подполугруппы, порождающего множества, подгруппы и определяющих +соотношений. С использованием данных определений были разработаны алгоритмы +построения подполугрупп по таблице Кэли, построения полугруппы бинарных +отношений по заданному порождающему множеству, построения полугруппы по +порождающему множеству и определяющим соотношениям, а также была произведена +оценка сложности данных алгоритмов. Программная реализация на языке Python с +библиотекой numpy успешно прошла тестирование. + +\end{document} diff --git a/lab4/report/preamble.sty b/lab4/report/preamble.sty new file mode 100644 index 0000000..835aef8 --- /dev/null +++ b/lab4/report/preamble.sty @@ -0,0 +1,52 @@ +\usepackage{subfigure} +\usepackage{tikz,pgfplots} +\pgfplotsset{compat=1.5} +\usepackage{float} +\setcounter{secnumdepth}{4} +\titleformat{\paragraph}[block] +{\hspace{1.25cm}\normalfont} +{\theparagraph}{1ex}{} +\titlespacing{\paragraph} +{0cm}{2ex plus 1ex minus .2ex}{.4ex plus.2ex} + +% --------------------------------------------------------------------------% + + +\usepackage[T2A]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{graphicx} +\graphicspath{ {./images/} } +\usepackage{tempora} +\usepackage{minted} + +% \usepackage[sort,compress]{cite} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{amsthm} +\usepackage{fancyvrb} +\usepackage{listings} +\usepackage{listingsutf8} +\usepackage{longtable} +\usepackage{array} +\usepackage[english,russian]{babel} +% \usepackage[colorlinks=false]{hyperref} +\usepackage{url} + +\usepackage[parentracker=true, + backend=biber, + hyperref=false, + language=russian, + autolang=other, + citestyle=gost-numeric, + defernumbers=true, + bibstyle=gost-numeric, +]{biblatex} +\addbibresource{sources.bib} +\usepackage{csquotes} + + +\newcommand{\eqdef}{\stackrel {\rm def}{=}} +\renewcommand\theFancyVerbLine{\small\arabic{FancyVerbLine}} +\newtheorem{lemma}{Лемма} +\newtheorem*{lemma*}{Лемма} +\newtheorem{definition}{Определение}
\ No newline at end of file diff --git a/lab4/report/titlepage.tex b/lab4/report/titlepage.tex new file mode 100644 index 0000000..3d1f370 --- /dev/null +++ b/lab4/report/titlepage.tex @@ -0,0 +1,54 @@ +\selectlanguage{russian} +\chair{теоретических основ компьютерной безопасности и криптографии} +\title{Комбинаторная теория полугрупп} +\course{3} +\group{331} +\department{факультета компьютерных наук и информационных технологий} +\napravlenie{10.05.01 "--- Компьютерная безопасность} +\subject{Прикладная универсальная алгебра} + +% Для студентки. Для работы студента следующая команда не нужна. +% \studenttitle{Студентки} + +% Фамилия, имя, отчество в родительном падеже +\author{Гущина Андрея Юрьевича} + +% Заведующий кафедрой +\chtitle{д.ф.-м.н.} % степень, звание +\chname{М. Б. Абросимов} + +%Научный руководитель (для реферата преподаватель проверяющий работу) +\satitle{аспирант} %должность, степень, звание +\saname{В. Н. Кутин} + +% Руководитель практики от организации (только для практики, +% для остальных типов работ не используется) +% \patitle{к.ф.-м.н.} +% \paname{С.~В.~Миронов} + +% Семестр (только для практики, для остальных +% типов работ не используется) +%\term{8} + +% Наименование практики (только для практики, для остальных +% типов работ не используется) +%\practtype{преддипломная} + +% Продолжительность практики (количество недель) (только для практики, +% для остальных типов работ не используется) +%\duration{4} + +% Даты начала и окончания практики (только для практики, для остальных +% типов работ не используется) +%\practStart{30.04.2019} +%\practFinish{27.05.2019} + +% Год выполнения отчета +\date{2022} + +\maketitle + +% Включение нумерации рисунков, формул и таблиц по разделам +% (по умолчанию - нумерация сквозная) +% (допускается оба вида нумерации) +% \secNumbering
\ No newline at end of file |