In the below article, we are going to find the number of Boolean Functions possible from the given sets of binary number.
Statement-1:
Suppose two sets are set ‘A’ = {1, 2, 3, 4, …….., n} where each number will be either ‘0’ or ‘1’ and hence the total number of boolean variable possible will be and set ‘B’ = {0, 1}. Now the number of possible boolean function when counting is done from set ‘A’ to ‘B’ will be
.
Explanation:
As we know that boolean variable is either ‘0’ or ‘1’ and in the set ‘A’ there are ‘n’ numbers and each number will be either ‘0’ or ‘1’ and hence the total number of possible boolean variable are . Now set ‘A’ contain
boolean variable and set ‘B’ contain 2 boolean variable.
This can be understood with help of below diagram:
Each element of set ‘A’ makes a function with each element of set ‘B’ hence one element of set ‘A’ makes two function with set ‘B’ and hence total number of possible boolean functions are where
is the number of element in set ‘A’.
Statement-2:
Suppose two sets of ternary variable are set ‘A’ = {1, 2, 3, 4, …….., n} where each number will be either ‘0’ or ‘1’ or ‘2’ and hence the total number of ternary variable possible will be and set ‘B’ = {0, 1}. Now the number of possible boolean function when counting is done from set ‘A’ to ‘B’ will be
.
Explanation:
As we know that ternary variables are ‘0’ or ‘1’ or ‘2’ and in the set ‘A’ there are ‘n’ numbers and each number will be either ‘0’ or ‘1’ or ‘2’ and hence the total number of possible ternary variables are . Now set ‘A’ contain
ternary numbers and set ‘B’ contain 2 boolean variable.
This can be understood with help of below diagram:
Each element of set ‘A’ makes a function with each element of set ‘B’ hence one element of set ‘A’ makes two functions with set ‘B’ and hence the total number of possible boolean functions are where
is the number of elements in set ‘A’.
Note:
Similarly for a set ‘A’ of ‘n’ numbers of k-ary variable and set ‘B’ of p-ary variable then the total number of p-ary possible function will be
.
Last Updated :
25 Nov, 2019
Like Article
Save Article
В предыдущей лекции мы уже говорили о булевых функциях от одного и от двух аргументов. Введем понятие булевой функции от произвольного конечного числа аргументов.
Определение 10.1. Булевой функцией от n аргументов называется функция , заданная на множестве
и принимающая значения в двухэлементном множестве
. Другими словами, булева функция от
аргументов сопоставляет каждому упорядоченному набору длины
, составленному из элементов 0 и 1, либо 0, либо 1.
Булева функция от
аргументов
обозначается так:
.
Две булевы функции от аргументов
и
называются равными, если любым одинаковым наборам значений аргументов
обе эти функции сопоставляют одинаковые элементы из множества
, т.е.
для любых элементов
.
Ранее уже встречались булевы функции от трех аргументов, например
В частности, было показано, что и
. Перечисленные функции построены с помощью суперпозиций (или последовательного применения) более простых функций.
Суперпозиция булевых функций
Определение 10.2. Суперпозицией булевых функций в булеву функцию
называется новая булева функция, получающаяся из функции
подстановкой вместо (всех или некоторых) аргументов
функций
соответственно
. Полученная функция
зависит от
аргументов.
Например, если и
, то
Или если и
, то имеем
Опишем еще одну процедуру, которую можно проделывать с булевыми функциями. Зафиксировав один из аргументов булевой функции от
аргументов, т.е. придав этому аргументу какое-нибудь конкретное постоянное значение (из двухэлементного множества
), получим функцию от
аргументов. Так, фиксируя в функции
k-й аргумент
, можем получить две новые булевы функции от
аргументов:
и
.
Например, из функции от трех аргументов фиксированием первого аргумента получаем следующие функции от двух аргументов:
Предлагаем посмотреть самостоятельно, какие получатся функции из функции при последовательном фиксировании остальных ее аргументов
.
Число булевых функций
Перечислив ранее все булевы функции от одного аргумента и от двух аргументов, мы видели, что первых имеется всего четыре, а вторых — шестнадцать. Возникает вопрос, сколько будет разных булевых функций от трех аргументов, от четырех аргументов и т.д. Нельзя ли указать формулу, по которой вычислялось бы число булевых функций от аргументов? Ответ на поставленный вопрос дает следующая теорема.
Теорема 10.3 (о числе булевых функций от аргументов). Число различных булевых функций от
аргументов равно
.
Доказательство. Чтобы задать булеву функцию от
аргументов, нужно перечислить все наборы
из нулей и единиц значений, которые могут принимать ее аргументы
, и для каждого такого набора указать значение функции
, которое она принимает на этом наборе.
Выясним сначала, сколько существует различных наборов , составленных из нулей и единиц, значений для
аргументов
. Покажем, что это число равно
. Доказательство будем вести методом математической индукции по числу
. В самом деле, для
имеется всего два набора значений переменного
. Это 0 и 1. Так что для
число наборов равно
. Предположим, что для
аргументов имеется точно
различных наборов
, составленных из 0 и 1, значений для к аргументов. Тогда среди всевозможных различных наборов
значений для
аргумента имеется, согласно предположению индукции, точно
наборов вида
и точно
наборов вида
. Следовательно, всего будет
различных наборов. Тем самым доказано с помощью индукции утверждение о числе различных наборов.
Таким образом, для задания функции от
аргументов нужно указать ее значение для каждого из
различных наборов значений ее аргументов. Если каждое значение функции равно нулю, то такая функция постоянна. Она называется константа 0. Если каждое значение функции равно единице, то это вторая постоянная функция, называемая константа 1. Мы указали лишь две различные функции от
аргументов. Сколько же их существует всего? Ровно столько, сколько имеется разных наборов длины
, составленных из нулей и единиц (см. таблицу).
Разных наборов длины , составленных из нулей и единиц, как показано в начале доказательства теоремы, имеется
, где
— длина набора. Таким образом, число
разных булевых функций от
аргументов равно точно
. Теорема доказана.
Выражение булевых функций через конъюнкцию, дизъюнкцию и отрицание
У нас уже возникали вопросы относительно выражения одних булевых функций через другие, и на некоторые из них мы уже дали ответ. Как будет показано ниже, существуют такие булевы функции (уже хорошо известные нам), через которые выражаются все (вообще все, от любого числа аргументов!) булевы функции. Этим замечательным свойством обладают взятые вместе конъюнкция, дизъюнкция и отрицание. Прежде чем сформулировать и доказать основную теорему этого пункта, обратимся к следующей важной лемме.
Лемма 10.4 (о разложении функции по переменной). Для произвольной булевой функции справедливы следующие формулы, называемые формулами разложения этой функции по переменной
Доказательство. Докажем справедливость первой формулы. Нужно проверить, что функции, стоящие в обеих частях равенства, при одинаковых значениях их аргументов принимают равные значения. Рассмотрим сначала всевозможные наборы значений аргументов следующего вида , т.е. будем придавать аргументам
значения:
. При этом безразлично, каковы именно значения
. Вычислив, какое значение принимает на наборах такого вида функция, стоящая в правой части доказываемого равенства, убедимся, что оно совпадает со значением, принимаемым функцией, стоящей в левой части этого равенства, на том же наборе значений аргументов. В самом деле,
Теперь рассмотрим всевозможные наборы значений аргументов вида , т.е. будем придавать аргументам
значения:
. Аналогично вычисляем значение, принимаемое функцией, стоящей в правой части доказываемого равенства, на наборах такого вида:
Итак, функции из обеих частей равенства принимают одинаковые значения при одинаковых значениях их аргументов. Следовательно, эти функции равны и доказываемая формула справедлива.
Совершенно аналогично доказывается вторая формула.
Заметим, что подобным образом могут быть записаны формулы разложения булевой функции по любой ее переменной. Запишите, например, такие разложения по последней переменной.
Представление булевых функций через конъюнкцию, дизъюнкцию и отрицание
Теорема 10.5 (о представлении булевых функций через конъюнкцию, дизъюнкцию и отрицание). Всякая булева функция может быть представлена в виде суперпозиции конъюнкции, дизъюнкции и отрицания; причем знак отрицания стоит только непосредственно около переменной и не стоит ни перед одной из внутренних скобок.
Доказательство будем вести методом математической индукции по числу аргументов функции
.
В предыдущем параграфе перечислены все булевы функции от одного аргумента. Их всего четыре. Напомним их (используя равенства теоремы 9.3, пункт и):
Отсюда видно, что все функции от одного аргумента выражаются через конъюнкцию, дизъюнкцию и отрицание; причем знак отрицания стоит только непосредственно около переменных. Это означает, что утверждение теоремы справедливо при .
Предположим, что теорема верна для всех функций от аргументов. Докажем ее для функций от
аргумента. Пусть
— произвольная булева функция от
аргумента. На основании предыдущей леммы запишем разложение данной функции по последней переменной:
Как отмечалось в начале настоящего параграфа, фиксирование в булевой функции одного аргумента приводит к булевой функции с числом аргументов на единицу меньшим, нежели число аргументов исходной функции. Так что каждая из функций и
есть булева функция от
аргументов. Но согласно предположению индукции, все такие функции выражаются через конъюнкцию, дизъюнкцию и отрицание, причем знак отрицания стоит только непосредственно около переменных и не стоит ни перед одной из внутренних скобок. Принимая это во внимание, видим, что правая часть последнего равенства представляет собой суперпозицию лишь трех функций — конъюнкции, дизъюнкции и отрицания. Причем отрицание стоит около переменной
. Это и доказывает окончательно теорему.
Булевы функции и формулы алгебры высказываний
Установим сначала соответствие между формулами алгебры высказываний и булевыми функциями. Это делается следующим образом. Во-первых, определяется взаимно-однозначное соответствие между пропозициональными переменными и булевыми переменными, при котором прописная буква, обозначающая пропозициональную переменную, соответствует той же самой строчной букве, обозначающей булеву переменную:
Во-вторых, устанавливается соответствие между знаками логических связок и одноименных булевых функций:
Наконец скобкам ставятся в соответствие те же скобки. Тогда каждой формуле алгебры высказываний соответствует единственная булева функция, а каждой булевой функции соответствует формула алгебры высказываний. Чтобы найти для данной формулы алгебры высказываний соответствующую ей булеву функцию, достаточно каждую прописную букву формулы заменить на такую же строчную букву, а каждый символ логической операции — на символ одноименной булевой функции.
Например, формуле соответствует булева функция
.
Если булева функция задана с помощью формулы, то для того чтобы найти соответствующую этой функции формулу алгебры высказываний, нужно в выражении для булевой функции заменить строчные буквы такими же прописными буквами, а каждый символ булевой функции заменить соответственно символом одноименной логической операции
. Здесь возникает неоднозначность такого обратного соответствия, поскольку булева функция может иметь множество различных формульных выражений. Например, функция, рассмотренная в предыдущем абзаце, имеет также следующие формульные выражения:
Этим выражениям сопоставляются соответственно следующие формулы алгебры высказываний:
Следовательно, все перечисленные формулы соответствуют одной и той же булевой функции.
Возникает вопрос, всякой ли булевой функции соответствует некоторая формула алгебры высказываний. Другими словами, всякая ли булева функция может быть выражена (представлена) некоторой формулой алгебры высказываний. Если булева функция задана с помощью формулы, то соответствующая этой функции формула алгебры высказываний отыскивается так, как описано в предыдущем абзаце. Если же булева функция задана не в виде формулы, то, в силу теоремы 10.5, формульное выражение для нее тем не менее существует, и, следовательно, представляющая ее формула алгебры высказываний может быть найдена по правилу, описанному выше.
Итак, отметим еще раз, что каждой формуле алгебры высказываний соответствует единственная определяемая этой формулой булева функция, что будет для нас важным в дальнейшем.
Нормальные формы булевых функций
На основе теоремы 10.5 всякая булева функция может быть представлена некоторой формулой алгебры высказываний. Нетрудно понять, что всякая формула алгебры высказываний, равносильная формуле, представляющей некоторую булеву функцию ; будет представлять функцию, равную
. В частности, одной из таких представляющих формул будет совершенная дизъюнктивная нормальная форма (если данная булева функция не равна тождественно 0, т.е. представляющая формула не тождественно ложна) или совершенная конъюнктивная нормальная форма (если данная булева функция не равна тождественно 1, т.е. представляющая формула не является тавтологией). Отыскав совершенную нормальную форму для формулы алгебры высказываний, представляющей данную булеву функцию (применяя правила, полученные в теоремах 5.2 и 5.4), можно перейти от этой формы к формульному выражению для данной булевой функции. Его будем называть совершенной (дизъюнктивной или конъюнктивной) нормальной формой булевой функции, сокращенно СДН-формой или соответственно СКН-формой. Каждая из них для данной булевой функции, если она существует, единственна.
Приобретя опыт работы с булевыми функциями, можно отыскивать их нормальные формы, не переходя к символике алгебры высказываний. При этом, если функция задана каким-то формульным выражением, то для его тождественного преобразования следует пользоваться свойствами булевых функций, установленными в теоремах 9.3–9.5, а если функция задана своими значениями на всех наборах значений аргументов (т.е. если она задана таблично), то следует применять правила, полученные в теоремах 5.2 и 5.4, переведя их предварительно на язык булевых функций.
Математический форум (помощь с решением задач, обсуждение вопросов по математике).
Если заметили ошибку, опечатку или есть предложения, напишите в комментариях.
В математике булевой функцией называют функцию типа , где
— булево множество, а
— неотрицательное целое число, которое называют арностью. Элементы 1 (единица) и 0 (ноль) стандартно интерпретируют как истину и ложь, хотя в общем случае их смысл может быть любым. Элементы
называют булевыми векторами. В случае
булева функция превращается в булеву константу.
Основные сведения
Каждая булева функция арности полностью определяется заданием своих значений на своей области определения, то есть на всех булевых векторах длины
. Число таких векторов равно
. Поскольку на каждом векторе функция может принимать значение либо 0, либо 1, количество всех n-арных булевых функций равно
. То, что каждая булева функция задаётся конечным массивом данных, позволяет представлять их в виде таблиц. Такие таблицы носят название таблиц истинности и в общем случае имеют вид:
| 0 | 0 | 0 | ||
| 1 | 0 | 0 | ||
| 0 | 1 | 0 | ||
| 1 | 1 | 0 | ||
| 0 | 1 | 1 | ||
| 1 | 1 | 1 |
Практически все булевы функции малых арностей (0, 1 и 2) сложились исторически и имеют конкретные имена.
Нульарные функции
При количество булевых функций сводится к двум, первая из них тождественно равна 0, а вторая 1. Их называют булевыми константами.
Унарные функции
При число булевых функций равно
. Им соответствуют следующие таблицы истинности.
| x | g1 ( |
g2 (=) | g3 (1) | g4 (0) |
|---|---|---|---|---|
| 0 | 1 | 0 | 1 | 0 |
| 1 | 0 | 1 | 1 | 0 |
Здесь:
- g1(x) — отрицание (обозначения:
),
- g2(x) — тождественная функция,
- g3(x) и g4(x) — соответственно, тождественная истина и тождественная ложь.
Бинарные функции
При число булевых функций равно
. Им соответствуют следующие таблицы истинности.
| x | y | f1 ( |
f2 ( |
f3 ( |
f4 ( |
f5 ( |
f6 ( |
f7 ( |
f8 ( |
|
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | |
| 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | |
| 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | |
| x | y | f9 | f10 | f11 | f12 | f13 | f14 | f15 | f16 | |
| 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | |
| 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | |
| 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
Здесь:
- f1(x, y) — конъюнкция (обозначения: x&y,
),
- f2(x, y) — дизъюнкция (обозначение:
),
- f3(x, y) — эквивалентность (обозначения:
),
- f4(x, y) — исключающее «или» (сложение по модулю 2; обозначения:
),
- f5(x, y) — импликация от y к x (обозначения:
),
- f6(x, y) — импликация от x к y (обозначения:
),
- f7(x, y) — стрелка Пи́рса(функция Да́ггера, функция Ве́бба, антидизъюнкция; обозначение:
),
- f8(x, y) — штрих Ше́ффера (антиконъюнкция; обозначение:
),
- f9(x, y) — отрицание импликации f6(x, y),
- f10(x, y) — отрицание импликации f5(x, y),
- f11(x, y) = g1(x),
- f12(x, y) = g1(y),
- f13(x, y) = g2(x),
- f14(x, y) = g1(y),
- f15(x, y), f16(x, y) — тождественная истина и тождественная ложь.
Полные системы булевых функций
Суперпозиция и замкнутые классы функций
Результат вычисления булевой функции может быть использован в качестве одного из агрументов другой функции. Результат такой операции суперпозиции можно рассматривать как новую булеву функцию со своей таблицей истинности. Например, функции (суперпозиция конъюнкции, дизъюнкции и двух отрицаний) будет соответствовать следующая таблица:
| 0 | 0 | 0 | 1 | |
| 0 | 0 | 1 | 1 | |
| 0 | 1 | 0 | 1 | |
| 0 | 1 | 1 | 1 | |
| 1 | 0 | 0 | 0 | |
| 1 | 0 | 1 | 0 | |
| 1 | 1 | 0 | 1 | |
| 1 | 1 | 1 | 0 |
Говорят, что множество функций замкнуто относительно операции суперпозиции, если любая суперпозиция функций из данного множества тоже входит в это же множество. Замкнутые множества функций называют также замкнутыми классами.
В качестве простейших примеров замкнутых классов булевых функций можно назвать множество , состоящее из одной тождественной функции, или множество
, все функции из которого тождественно равны нулю вне зависимости от своих аргументов. Замкнуты также множество функций
и множество всех унарных функций. А вот объединение замкнутых классов может таковым уже не являться. Например, объединив классы
и
, мы с помощью суперпозиции
сможем получить константу 1, которая в исходных классах отсутствовала.
Разумеется, множество всех возможных булевых функций тоже является замкнутым.
Тождественность и двойственность
Две булевы функции тождественны друг другу, если на любых одинаковых наборах аргументов они принимают равные значения. Тождественность функций f и g можно записать, например, так:
)
Просмотрев таблицы истинности булевых функций, легко получить такие тождества:
А проверка таблиц, построенных для некоторых суперпозиций, даст следующие результаты:
(дистрибутивность конъюнкции и дизъюнкции)
Функция называется двойственной функции
, если
. Легко показать, что в этом равенстве f и g можно поменять местами, то есть функции f и g двойственны друг другу. Из простейших функций двойственны друг другу константы 0 и 1, а из законов де Моргана следует двойственность конъюнкции и дизъюнкции. Тождественная функция, как и функция отрицания, двойственна сама себе.
Если в булевом тождестве заменить каждую функцию на двойственную ей, снова получится верное тождество. В приведённых выше формулах легко найти двойственные друг другу пары.
Полнота системы, критерий Поста
Система булевых функций называется полной, если можно построить их суперпозицию, тождественную любой другой заранее заданной функции. Говорят ещё, что замыкание данной системы совпадает с множеством .
Американский математик Эмиль Пост ввёл в рассмотрение следующие замкнутые классы булевых функций:
Им было доказано, что любой замкнутый класс булевых функций, не совпадающий с , целиком содержится в одном из этих пяти так называемых предполных классов, но при этом ни один из пяти не содержится целиком в объединении четырёх других. Таким образом критерий Поста для полноты системы сводится к выяснению, не содержится ли вся эта система целиком в одном из предполных классов. Если для каждого класса в системе найдётся функция, не входящая в него, то такая система будет полной, и с помощью входящих в неё функций можно будет получить любую другую булеву функцию.
Заметим, что существуют функции, не входящие ни в один из классов Поста. Любая такая функция сама по себе образует полную систему. В качестве примеров можно назвать функцию Шеффера или стрелку Пирса.
Представление булевых функций
Теорема Поста открывает путь к представлению булевых функций, синтаксическим способом, который в ряде случаев оказывается намного удобнее чем таблицами истинности. Отправной точкой здесь служит нахождение некоторой полной системы функций . Тогда каждая булева функция сможет быть представлена некоторым термом в сигнатуре
, который в данном случае называют также формулой. Относительно выбраной системы функций полезно знать ответы на следующие вопросы:
- Как построить по данной функции представляющую её формулу?
- Как проверить, что две разные формулы эквивалентны, то есть задают одну и ту же функцию?
- В частности: существует ли способ приведения произвольной формулы к эквивалентной её канонической форме, такой что, две формулы эквивалентны тогда и только тогда, когда их канонические формы совпадают?
- Как по данной функции построить представляющую её формулу с теми или иными заданными свойствами (например наименьшего размера), и возможно ли это?
Положительные ответы на эти и другие вопросы существенно увеличивают прикладное значение выбранной системы функций.
Дизъюнктивная нормальная форма (ДНФ)
Простой конъюнкцией, или конъюнктом, называется конъюнкция некоторого конечного набора переменных, или их отрицаний, причём каждая переменная встречается не более одного раза. Дизъюнктивной нормальной формой или ДНФ называется дизъюнкция простых конъюнкций. Например — является ДНФ.
Совершенной дизъюнктивной нормальной формой, или СДНФ относительно некоторого заданного конечного набора переменных называется такая ДНФ, у которой в каждую конъюнкцию входят все переменные данного набора, причём в одном и том же порядке. Например: .
Легко убедится, что каждой булевой функции соответствует некоторая ДНФ, и даже СДНФ. Для этого достаточно взять таблицу истинности этой функции и найти все булевы векторы, на которых её значение равно 1. Для каждого такого вектора строится конъюнкция
, где
. Если взять дизъюнкцию этих конъюнкций, то результатом очевидно будет СДНФ. Поскольку на всех булевых векторах её значения совпадают со значениями исходной функции, она будет СДНФ этой функции. Например, для импликации
, результатом будет
, что можно упростить до
.
Шаблон:Section-stub
Конъюнктивная нормальная форма (КНФ)
Конъюнктивная нормальная форма (КНФ) определяется двойственно к ДНФ. Простой дизъюнкцией или дизъюнктом называется дизъюнкция одной или нескольких переменных или их отрицаний, причём каждая переменная входит в неё не более одного раза. КНФ — это конъюнкция простых дизъюнкций.
Совершенной конъюнктивной нормальной формой (СКНФ), относительно некоторого заданного конечного набора переменных, называется такая КНФ, у которой в каждую дизъюнкцию входят все переменные данного набора, причём в одном и том же порядке. Поскольку (С)КНФ и (С)ДНФ взаимодвойственны, свойства (С)КНФ повторяют все свойства (С)ДНФ, грубо говоря, «с точностью до наоборот».
КНФ может быть преобразована к эквивалентной ей ДНФ, путём раскрытия скобок по правилу:
которое выражает дистрибутивность конъюнкции относительно дизъюнкции. После этого, необходимо в каждой конъюнкции удалить повторяющиеся переменные или их отрицания, а также выбросить из дизъюнкции все конъюнкции, в которых встречается переменная вместе со своим отрицанием. При этом, результатом не обязательно будет СДНФ, даже если исходная КНФ была СКНФ. Точно также, можно всегда перейти от ДНФ к КНФ. Для этого следует использовать правило
выражающее дистрибутивность дизъюнкции относительно конъюнкции. Результат нужно преобразовать способом, описанным выше, заменив слово «конъюнкция» на «дизъюнкция» и наоборот.
Шаблон:Section-stub
Полиномы Жегалкина
Шаблон:Planned
BDD
Шаблон:Planned
См. также
- Булева алгебра
- Исчисление высказываний
- Битовые операции
Литература
- Яблонский С.В. Введение в дискретную математику. — М.: Наука. — 1986
- Гаврилов Г.П., Сапоженко А.А. Сборник задач по дискретной математике. — М.: Наука. — 1969
- Алексеев В.Б. Дискретная математика (курс лекций, II семестр). Сост. А.Д. Поспелов
Ссылки
- Быкова С.В., Буркатовская Ю.Б., Булевы функции, учебно-методический комплекс, Томск, 2006
- http://olddesign.isu.ru/~slava/do/disc/fr_bools.htm
- http://psi-logic.narod.ru/bool/bool.htm
- Учебные пособия кафедры математической кибернетики ВМиК МГУ
Шаблон:Computer-sci-stub


