From c304e43ba9129815447c2b256fe967f856561330 Mon Sep 17 00:00:00 2001 From: Aleksey Lobanov Date: Sun, 27 May 2018 19:43:49 +0300 Subject: [PATCH] Second version of text --- text.tex | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/text.tex b/text.tex index bab80f8..93c36d5 100644 --- a/text.tex +++ b/text.tex @@ -2,6 +2,7 @@ \usepackage[affil-it]{authblk} % для указания ВУЗа \usepackage{fontspec} \usepackage{minted} % для включения исходников +\usemintedstyle{tango} \defaultfontfeatures{Mapping=tex-text} \usepackage{xunicode} \usepackage{xltxtra} @@ -29,7 +30,7 @@ \author{Алексей Лобанов, 318 группа% \thanks{E-mail: \texttt{i@likemath.ru}}} -\affil{МГУ им. М.В.Ломоносова} +\affil{факультет ВМК МГУ им. М.В.Ломоносова} \author{Научный руководитель \\ доцент, д.ф.-м.н. С.Н.Селезнёва% \thanks{E-mail: \texttt{selezn@cs.msu.ru}}} @@ -45,11 +46,11 @@ \newpage \section{Введение} -По данной теме, для случая трёхзначной логики уже есть результаты \cite{csakany} и \cite{machida}. Для случаё четырёхзначной логики есть работа \cite{scholzel}, однако в данной курсовой работе проверяются только два условия: +По данной теме, для случая трёхзначной логики уже есть результаты \cite{csakany} и \cite{machida}. Для случая четырёхзначной логики есть работа \cite{scholzel}, однако в данной курсовой работе проверяются только два условия: отсутствие функции большинства и полупроекции. \section{Постановка задачи} -В рамках данной курсовой работы рассмотриваются следующие задачи: +В рамках данной курсовой работы рассматриваются следующие задачи: \begin{enumerate} \item Написать программу, которая строит все минимальные клоны, @@ -68,7 +69,10 @@ $f$ четырехзначной логики, не содержащие фун \end{enumerate} \section{Основная часть} -Введём некоторые обозначения: $I_k^2$ -- все идемпотентные функции k-значной логики, $f_k^x$, $f_k^y$ -- функции k-значной логики, тождественно равные своему первому и второму аргументу соответсвенно +Введём некоторые обозначения: +$I_k^2$ -- все идемпотентные функции k-значной логики, +$f_k^x$, $f_k^y$ -- функции k-значной логики, тождественно равные своему первому и второму аргументу соответственно. +Назовём "плохими" функции $f\left( x, y\right)$ из $I_k^2$, которые точно не смогут породить минимальные классы. Простейшая реализация алгоритма решения данной задачи может не приветси к успеху: для $k=4$ количество функций в $I_4^2 = 4^{4\cdot4 - 4} = 4^{12} = 16777216$. Построение класса по каждой из них слишком трудоёмко, если знать, что некоторая часть этих классов по размеру сопоставимы с самим $I_4^2$. Таким образом, уже для $k=4$ необходим более быстрый алгоритм. @@ -147,15 +151,41 @@ $f$ четырехзначной логики, не содержащие фун \end{algorithmic} \end{algorithm} -Также важной функцией является обработка новых \ref{alg:queue} +Также важной функцией является обработка новых множеств \ref{alg:queue}. + \begin{algorithm} \caption{Обработка расширенных множеств}\label{alg:queue} \begin{algorithmic} -\Function{ProcessSets}{class, max} -\State заглушка - -\Return (42) -\EndFunction +\Procedure{ProcessSets}{d, bad\_functions} +\While{Не все функции закончены} + \State local\_d $\gets$ d + \State d.clear() + \State local\_d сортируем по размеру множества + \State cur\_size $\gets \lambda^n$ + \ForAll{task $\in$ local\_d} + \If {size(task) $>$ cur\_size} + \State \textbf{break} + \Comment{Текущие множетсва слишком большие, могут быть незаконченные} + \EndIf + \If {task не закончен} + \If {в нём есть хотя бы одна "плохая" функция} + \State completed $\gets$ completed + 1 + \Comment{Текущий класс точно не минимальный} + \Else + \State d.add(task) + \Comment{Класс надо ещё расширить} + \EndIf + \Else + \State completed $\gets$ completed + 1 + \If {в нём нет "плохих" функций} + \State положим класс в список минимальных классов + \EndIf + \State все функции task сделаем "плохими" + \Comment Ни одна из этих функций уже не сможем породить минимальный класс + \EndIf + \EndFor +\EndWhile +\EndProcedure \end{algorithmic} \end{algorithm} Для реализации полученных алгоритмов для выполнения на ЭВМ был выбран язык программирования C++14.