Свойства конъюнкции, дизъюнкции и отрицания 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Свойства конъюнкции, дизъюнкции и отрицания



Особая роль двух функций (из этих трех) определяется тем обстоятельством, что определение этих функций легко может быть перенесено на любое число переменных:

Конъюнкцией n переменных f (x 1, x 2,…, xn) = x 1 x 2 …xn называется функция, которая принимает значение1, если и только если все переменные равны1(и, значит, равна 0, если хотя бы одна из этих переменных равна 0).

Дизъюнкцией n переменных f (x 1, x 2, , xn) = x x … Ú xn называется такая функция, которая равна 0 если и только если все переменные равны 0 (и, значит, равна 1 тогда и только тогда, когда хотя бы одна переменная равна 1).

Из этих определений видно, что конъюнкция и дизъюнкция коммутативны, т. е. обе функции не зависят от порядка переменных.

Будем обозначать через (x 1, x 2, , xn)новую функцию, которая на наборе переменных x 1, x 2, …, xn принимает значение, противоположное f (x 1, x 2, …, xn).

Заметим, что в перечисленных далее свойствах в роли x, y, z может выступать любая логическая функция. Все свойства легко могут быть доказаны из приведенных выше определений этих функций.

1. Универсальные границы:

xÚ1 = 1; xÚ0 = х; х 1 = х; х 0 = 0.

2. Ассоциативность конъюнкции и дизъюнкции:

x (yz) = (xy) z; x Ú(y Ú z) = (x Ú yz.

Это свойство означает, что в конъюнкции или дизъюнкции нескольких переменных можно как угодно расставлять скобки (а значит, можно вообще их не ставить).

3. Поглощение (“целое поглощает часть”):

х Ú ху = х (1Ú у) = х.

4. Два распределительных закона:

х (y Ú z) = x y Ú x z; х Ú(y z) = (x Ú y)(x Ú z),

оба свойства могут быть доказаны простым рассуждением (например, если х = 0, тогда по свойству 1 справа выражение равно 0 и слева тоже 0, если х = 1, то справа стоит y Ú z и слева будет то же самое).

5. Правила де Моргана:

оба эти правила обобщаются на любое число переменных:

6. Правило Блейка:

Пусть К 1 и К 2 – какие-то логические функции, тогда

что легко доказывается справа налево:

Следствием правила Блейка являются два правила обобщенного поглощения:

Заметим, что правила Блейка и следствия из него часто используются для упрощения дизъюнкции (см. разд. 5)

Замечание. Конъюнкция, дизъюнкция, отрицание были определены для объектов, принимающих лишь два значения 0 и 1. Однако бывают случаи, когда можно ввести такие операции для некоторых других объектов (эти операции также называют иногда конъюнкцией, дизъюнкцией и отрицанием), для которых также выполнены свойства 1–6. В этом случае говорят, что на этих объектах введена булева алгебра.

Например, пусть W – некоторое множество точек (или элементарных событий в теории вероятности), Â – множество подмножеств из W. Если A, B принадлежат Â, то можно ввести сумму множеств (дизъюнкцию) A + B = A Ú B (равную объединению точек из А и В), произведение множеств (конъюнкцию) АВ = А Ù В (равное набору точек, входящих и в А, и в B одновременно) и дополнение (отрицание А), т. е. – множество точек из W, не входящих в А. Тогда для этих операций (и это легко проверить) будут выполнены свойства 1–6. Таким образом, множество всех подмножеств из W является булевой алгеброй.

ДНФ, СДНФ, КНФ, СКНФ

Простой конъюнкцией называется конъюнкция одной или нескольких переменных, при этом каждая переменная встречается не более одного раза (либо сама, либо ее отрицание).

Например, является простой конъюнкцией,

Дизъюнктивной нормальной формой (ДНФ) называется дизъюнкция простых конъюнкций.

Например, выражение является ДНФ.

Совершенной дизъюнктивной нормальной формой (СДНФ) называется такая дизъюнктивная нормальная форма, у которой в каждую конъюнкцию входят все переменные данного списка (либосами, либо их отрицания), причем в одном и том же порядке.

Например, выражение является ДНФ, но не СДНФ. Выражение является СДНФ.

Аналогичные определения (с заменой конъюнкции на дизъюнкцию и наоборот) верны для КНФ и СКНФ. Приведем точные формулировки.

Простой дизъюнкцией называется дизъюнкция одной или нескольких переменных, при этом каждая переменная входит не более одного раза (либо сама, либо ее отрицание).Например, выражение – простая дизъюнкция,

Конъюнктивной нормальной формой (КНФ) называется конъюнкция простых дизъюнкций (например выражение – КНФ).

Совершенной конъюнктивной нормальной формой (СКНФ) называется такая КНФ, у которой в каждую простую дизъюнкцию входят все переменные данного списка (либо сами, либо их отрицания), причем в одинаковом порядке.

Например, выражение является СКНФ.

Приведем алгоритмы переходов от одной формы к другой. Естественно, что в конкретных случаях (при определенном творческом подходе) применение алгоритмов бывает более трудоемким, чем простые преобразования, использующие конкретный вид данной формы:

а) переход от ДНФ к КНФ

Алгоритм этого перехода следующий: ставим над ДНФ два отрицания и с помощью правил де Моргана (не трогая верхнее отрицание) приводим отрицание ДНФ снова к ДНФ. При этом приходится раскрывать скобки с использованием правила поглощения (или правила Блейка). Отрицание (верхнее) полученной ДНФ (снова по правилу де Моргана) сразу дает нам КНФ:

Заметим, что КНФ можно получить и из первоначального выражения, если вынести у за скобки;

б) переход от КНФ к ДНФ

Этот переход осуществляется простым раскрытием скобок (при этом опять-таки используется правило поглощения)

Таким образом, получили ДНФ.

Обратный переход (от СДНФ к ДНФ) связан с проблемой минимизации ДНФ. Подробнее об этом будет рассказано в разд. 5, здесь же мы покажем, как упростить ДНФ (или СДНФ) по правилу Блейка. Такая ДНФ называется сокращенной ДНФ;

в) сокращение ДНФ (или СДНФ) по правилу Блейка

Применение этого правила состоит из двух частей:

- если среди дизъюнктных слагаемых в ДНФ имеются слагаемые , то ко всей дизъюнкции добавляем слагаемое К 1 К 2. Проделываем эту операцию несколько раз (можно последовательно, можно одновременно) для всех возможных пар слагаемых, а затем, применяем обычное поглощение;

- если добавляемое слагаемое уже содержалось в ДНФ, то его можно отбросить совсем, например,

или

Разумеется, сокращенная ДНФ не определяется единственным образом, но все они содержат одинаковое число букв (например, имеется ДНФ , после применения к ней правила Блейка можно прийти к ДНФ, равносильной данной):

в) переход от ДНФ к СДНФ

Если в какой-то простой конъюнкции недостает переменной, например, z, вставляем в нее выражение ,после чего раскрываем скобки (при этом повторяющиеся дизъюнктные слагаемые не пишем). Например:

г) переход от КНФ к СКНФ

Этот переход осуществляется способом, аналогичным предыдущему: если в простой дизъюнкции не хватает какой-то переменной (например, z, то добавляем в нее выражение (это не меняет самой дизъюнкции), после чего раскрываем скобки с использованием распределительного закона):

Таким образом, из КНФ получена СКНФ.

Заметим, что минимальную или сокращенную КНФ обычно получают из соответствующей ДНФ.

4. Представление логических функций
в виде СДНФ (СКНФ)

Будем использовать логическую функцию “эквивалентность”, записанную в виде ху. Напомним, что 00= 1; 01=0; 10= 0; 11= 1.Таким образом, ху = 1 тогда и только тогда, когда х = у.

Лемма. Любая логическая функция f (x 1, x 2, , xn) может быть представлена в виде дизъюнкции 2 п дизъюнктных слагаемых, причем дизъюнкция берется по всевозможным наборам из En. Этот факт будем записывать следующим образом:

(*)

где дизъюнкция проводится по всевозможным наборам (s1, s2, …, s п) из Еп.

Доказательство леммы.

а) Пусть f (x 1, x 2, , xn)= 1. Тогда слева в формуле (*) стоит 1. Докажем, что и справа в этом случае стоит 1, для чего достаточно указать одно дизъюнктное слагаемое, равное 1. Но среди всех наборов (s1, s2, , s п) имеется набор s1 = х 1, s2 = х 2, , s п = хп. Очевидно, что для этого набора слагаемое равно 1 (так как и .

б) Пусть f (x 1, x 2, , xn) = 0. Предположим, что справа стоит не ноль, а единица, тогда какое-то слагаемое тоже должно равняться 1, т. е. для некоторого набора

Это означает (по свойствам конъюнкции), что , откуда следует, что х 1=s1, х 2=s2 , , хп =sn, но в этом случае f (s1, s2,..., sn) f (x 1, x 2, , xn) = 0 и, значит, справа нет слагаемого, равного 1, т. е. в этом случае и справа и слева в формуле (*) стоит 0. Лемма доказана.

Теорема. Если булева функция не равна тождественному нулю, то ее можно представить в виде СДНФ по ее таблице истинности следующим образом: берем только те наборы переменных (х 1, х 2, , хn ), для которых f (х 1, х 2, , хn) =1, и составляем простую конъюнкцию для этого набора так: если хi = 0, то берем в этой конъюнкции , если хi = 1, то берем хi . Составляядизъюнкцию этих простых конъюнкций, придем к СДНФ.

Доказательство. Пусть f (x 1, x 2, , xn) не равна тождественному нулю, тогда в дизъюнкции можно не записывать слагаемые, равные нулю, а из формулы (*) следует следующее представление для данной функции

Запись означает, что дизъюнкция берется по всем наборам (s1, s2,..., sn), для которых f (s1, s2,..., sn) = 1. Так как (если s1=0), из формулы (**) следует утверждение теоремы.

Следствие. Любую логическую (булеву) функцию можно выразить через три логические функции: конъюнкцию, дизъюнкцию и отрицание.

Из предыдущей теоремы видно, что следствие верно для любой функции, не равной тождественному нулю. Однако если f (x 1, x 2, , xn ) =0, то ее также можно выразить через конъюнкцию, дизъюнкцию и отрицание, например, так: f (x 1, x 2, , xn ) = x1 ,и, несмотря на то, что последнее выражение не является простой конъюнкцией (и, значит, не является СДНФ), тем не менее тождественный ноль также выражен через нужные три функции.

Набор функций, через которые можно выразить любые другие функции, называется полным набором (более точные формулировки даны в разд. 7). Таким образом, конъюнкция, дизъюнкция иотрицание являются полным набором.

По аналогии с представлением любой функции (не равной тождественному нулю) в виде СДНФ можно функцию (не равную тождественной 1) представить в виде СКНФ: простая дизъюнкциясоставляется для тех наборов переменных (х 1, х 2, , хп), для которых f (x 1, x 2, , xn) = 0, причем если хi = 1, то в этой дизъюнкции берем , если же хi = 0, то берем хi.

Пример. Составить для импликации и сложения по модулю 2 СДНФ и СКНФ.

 

х   у   х ® у х + у
       
       
       
       

Тогда СДНФ для этих функций:

СКНФ для этих функций:

5. Нахождение сокращенной ДНФ
по таблице истинности (карты Карно)

Доказано, что любую функцию (кроме тождественного нуля) можно представить в виде СДНФ. На практике часто бывает удобно получить (вместо СДНФ) как можно более “короткую” ДНФ. Словам “короткая ДНФ” можно придать разный смысл, а именно:

ДНФ называется минимальной, если она содержит наименьшее число букв (разумеется, среди всех ДНФ ей равносильных); ДНФ называется кратчайшей, если она содержит минимальное число знаков дизъюнкции Ú; тупиковой, если уничтожение одной или нескольких букв в ней приводит к неравной ДНФ и сокращенной ДНФ, если ее упрощение проведено с помощью правила Блейка.

На практике наиболее важной представляется нахождение минимальной ДНФ, но алгоритм ее нахождения по существу является вариантом перебора всех равносильных ДНФ. Алгоритмически проще всего находить сокращенную ДНФ (эти алгоритмы были даны в разд. 3). Заметим, что если функция п переменныхзаданасвоейтаблицей истинности, топравило Блейка имеет простой геометрический смысл. Именно, если все возможные наборы переменных представить себе как вершины п -мерного куба со стороной равной 1 (всего вершин будет 2 п) в декартовой системе координат, то надо отметить те вершины, на которых значение функции равно 1, и если какие-то из этих единиц лежат на “прямой”, “плоскости” или “гиперплоскости” в п -мерном пространстве, то в сокращенную ДНФ будут входить “уравнения” этих прямых или гиперплоскостей по известному правилу: если в это уравнение входило составной частью х = 0,то в сокращенную ДНФ входит , если х = 1, то просто х. Разумеется, геометрически все это изобразить можно только при п = 2, 3.

Карты Карно позволяют эти геометрические идеи использовать при п = 3, 4, 5, для функций, заданных своей таблицей истинности. При больших п картыКарнопрактическинеиспользуются. Рассмотрим отдельно (и более подробно) случаи п = 3, 4.

Составляем таблицу истинности для данной конкретной функции п = 3 в виде таблицы, приведенной в примере 5.1. (Заметим, что для х 1и х 2естественный порядок набора переменных здесь нарушен. Это сделано для того, чтобы при переходе от данного к следующему набору переменных в этом наборе менялась только одна цифра). Прямая содержит 2 вершины, плоскость – 4, гиперплоскости – 8, 16 и т. д. вершин, поэтому объединять можно 2 рядом стоящие единицы или 4, 8, 16 и т. д. Карты Карно соединяются “по кругу”, т. е. наборы (10) и (00) считаются рядом стоящими.

Пример 5.1. Пусть задана функция:

 

Видно, ее СДНФ содержит (по числу 1) 6 дизъюнктных слагаемых, но ее сокращенная ДНФ содержит (после объединения единиц) всего 2 буквы

f = x 1Úx2

Пример 5.2. Следующий пример показывает, “как соединять единицы по кругу”.

 

 

Здесь сокращенная ДНФ содержит 2 слагаемых (СДНФ содержала бы 5):

Пример 5.3. Пример показывает использование карт Карно при п = 4.

 

 

 

Здесь сокращенная ДНФ содержит 4 слагаемых (СДНФ содержит 8):

При п = 5 использование карт Карно является несколько более сложным и здесь не приводится.

Полиномы Жегалкина

Полиномом (многочленом) Жегалкина от п переменных называется функция

P = a0 + a1x1 +a2x2 +...anxn +an +1x1x2 +...+an +C2nxn-1xn +...+a2n-1x1x2..xn

Всего здесь 2 п слагаемых. Напомним, что + сейчас означает сложение по модулю 2, коэффициенты a0, a1,..., a2n-1 являются константами (равными нулю или единице).

Теорема. Любая функция п переменных может быть представлена полиномом Жегалкина и это представление единственно.

Доказательство. Любая функция f(x 1, x 2, , xn) имеет свою таблицу истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределенными коэффициентами. Затем по очереди подставляем всевозможные наборы переменных и находим коэффициенты. Легко видеть, что за каждую подстановку находим только один коэффициент. Так как число наборов равно числу коэффициентов (и равно 2 п), отсюда следует утверждение теоремы.

Доказательство этой теоремы показывает, как по таблице истинности построить полином Жегалкина.

Имеется 2-й способ нахождения полинома Жегалкина для функций, заданных в виде ДНФ. Этот способ основан на том, что х +1 = . Если функция задана в виде ДНФ, то сначала убираем дизъюнкцию, используя при этом правило де Моргана, а все отрицания заменяем прибавлением единицы. После этого раскрываем скобки по обычным правилам, при этом учитываем, что четное число одинаковых слагаемых равно нулю (так как х+ х = 0), а нечетное число одинаковых слагаемых равно одному такому слагаемому.

Пример.

(xy + 1)((x + 1)(y + 1) + 1)((y + 1)z + 1) + 1 = (xy + 1)(xy + x + y)(yz + z + 1) + 1 = (x + y)(yz + z + 1) + 1= xyz + yz + xz +yz + x + y + 1 = xyz + xz + x +y + 1.

Последнее выражение и есть полином Жегалкина данной функции.

Функция f (x 1, x 2, , xn) называется линейной, если ее полином Жегалкина содержит только первые степени слагаемых. Более точно функция называется линейной, если ее можно представить в виде

f(x 1, x 2, , xn) = a0 + a1 x 1 + a2 x 2 +…+ a n xn.

Класс линейных функций часто обозначают через L. (Заметим, что число линейных функций п переменных равно 2 п+ 1 ).

Замечание. Если п ³2 то линейная функция в таблице истинности может содержать только четное число единиц. Действительно, если f(x 1, x 2, , xn) = x 1 + x 2 +…+xn , то легко видеть что такая функция в таблице истинности содержит одинаковое число нулей и единиц а именно 2 п / 2 единиц и нулей, т. е. число это четно при п ³2. Столько же нулей и единиц имеет функция .Добавлениежефиктивнойпеременной приводитк увеличению числа единиц (и нулей) в два раза. Разумеется, нелинейная функция может иметь в таблице истинности как четное, так и нечетное число единиц.

7. Суперпозиция функций. Замыкание набора функций.
Замкнутые классы функций. Полные наборы. Базисы

Пусть имеется некоторый набор K, состоящий из конечного числа булевых функций. Суперпозицией функций из этого набора называются новые функции, полученные с помощью конечного числа применения двух операций;

можно переименовать любую переменную, входящую в функцию из K;

вместо любой переменной можно поставить функцию из набора K или уже образованную ранее суперпозицию.

Суперпозицию еще иначе называют сложной функцией.

Пример 7. 1. Если дана одна функция х | y (штрих Шеффера), то ее суперпозициями, в частности, будут следующие функции x|x, x| (x|y), x| (y|z)и т. д.

Замыканием набора функций из K называется множество всех суперпозиций. Класс функций K называется замкнутым, если его замыкание совпадает с ним самим.

Набор функций называется полным, если его замыкание совпадает со всеми логическими функциями. Иначе говоря, полный набор – это множество таких функций, через которые можно выразить все остальные булевы функции.

Неизбыточный полный набор функций называется базисом (“неизбыточный” означает, что если какую-то функцию удалить из набора, то этот набор перестанет быть полным).

Пример 7.2. Конъюнкция, дизъюнкция и отрицание являются полным набором (в этом убедились в разд. 5), но не являются базисом, так как это набор избыточен, поскольку с помощью правил де Моргана можно удалить конъюнкцию или дизъюнкцию. Любую функцию можно представить в виде полинома Жегалкина (разд. 6). Ясно, что функции конъюнкция, сложение по модулю 2 и константы 0 и 1 являются полным набором, но эти четыре функции также не являются базисом, поскольку 1+1=0, и поэтому константу 0 можно исключить из полного набора (для построения полиномов Жегалкина константа 0 необходима, поскольку выражение “1+1” не является полиномом Жегалкина).

Легко видеть, что одним из способов проверки полноты какого-то набора К является проверка того, что через функции из этого набора выражаются функции другого полного набора (можно проверить, что через функции из К можно выразить конъюнкцию и отрицание или дизъюнкцию и отрицание.

Существуют такие функции, что одна такая функция сама является базисом (здесь достаточно проверить только полноту, неизбыточность очевидна). Такие функции называются шефферовскими функциями. Это название связано с тем, что штрих Шеффера является базисом. Напомним, что штрих Шеффера определяется следующей таблицей истинности:

Так как очевидно , т. е. отрицание является суперпозицией штриха Шеффера, а дизъюнкция тогда , штрих Шеффера сам является базисом. Аналогично, стрелка Пирса является шефферовской функцией (студенты могут проверить это сами). Для функций 3-х или более переменных шефферовских функций очень много (конечно, выражение других булевых функций через шефферовскую функцию большого числа переменных сложно, поэтому в технике они редко используются).

Заметим, что вычислительное устройство чаще всего базируется на полном наборе функций (часто на базисах). Если в основе устройства лежат конъюнкция, дизъюнкция и отрицание, то для этих устройств важна проблема минимизации ДНФ; если в основе устройства лежат другие функции, то полезно уметь алгоритмически минимизировать выражения через эти функции.

Перейдем теперь к выяснению полноты конкретных наборов функций. Для этого перечислим 5 важнейших классов функций:

  • Т 0 – это набор всех тех логических функций, которые на нулевом наборе принимают значение 0 (Т 0 – это класс функций, сохраняющих 0);
  • Т 1 – это набор всех логических функций, которые на единичном наборе принимают значение 1 (Т 1 – это класс функций, сохраняющих единицу) (заметим, что число функций от п переменных принадлежащих классам Т0 и Т1 равно 22n-1);
  • L – класс линейных функций т. е. функций, для которых полином Жегалкина содержит только первые степени переменных;
  • М – класс монотонных функций. Опишем класс этих функций более подробно. Пусть имеются 2 набора из п переменных: s1 = (x1, x2,..., xn)

s1= (х 1, х 2, , хп)и s 2= (y 1, y 2, , yп). Будем говорить, что набор s 1 меньше набора s 2 (s 1 £ s 2), если все хi £ yi. Очевидно, что не все наборы из п переменных сравнимы между собой (например, при п = 2наборы (0,1) и (1,0) не сравнимы между собой). Функция от п переменных называется монотонной,если на меньшем наборе она принимает меньшее или равное значение. Разумеется, эти неравенства должны проверяться только на сравнимых наборах. Понятно, что несравнимые наборы – это те, в которых есть некоторые координаты типа (0,1) в одном наборе и (1,0) в другом на соответствующих местах (в дискретной математике монотонные функции это только как бы “монотонно возрастающие функции”, “монотонно убывающие” функции здесь не рассматриваются).

Пример. В нижеследующей таблице функции f 1, f 2 являются монотонными функциями, а функции f 3, f 4– нет.

 

 

x y f 1 f 2 f 3 f 4
           
           
           
           

Естественный порядок переменных обеспечивает тот факт, что если какой-то набор меньше другого набора, то он обязательно расположен в таблице истинности выше “большего” набора. Поэтому если в таблице истинности (при естественном порядке набора переменных) вверху стоят нули, а затем единицы, то эта функция точно является монотонной. Однако возможны инверсии, т. е. единица стоит до каких-то нулей, но функция является все равно монотонной (в этом случае наборы, соответствующие “верхней” единице и “нижнему” нулю должны быть несравнимы;можно проверить, что функция, задаваемая таблицей истинности при естественном порядке набора переменных (00010101), является монотонной);

  • Класс S – класс самодвойственных функций. Функция п переменных называется самодвойственной, если на противоположных наборах она принимает противоположные значения, т. е. самодвойственная функция f (x 1, x 2,…, xn)удовлетворяет условию f (x1,x2,..., xn) =. Например, функции f 1, f 2 - являются самодвойственными, а функции f 3, f 4 – не являются.Нетрудно устанавливается следующий факт.

Теорема. Классы функций Т 0, Т 1, L, M, S замкнуты.

Это утверждение следует непосредственно из определения самих этих классов, а также из определения замкнутости.

В теории булевых функций очень большое значение имеет следующая теорема Поста.

Теорема Поста. Для того чтобы некоторый набор функций K был полным, необходимо и достаточно, чтобы в него входили функции, не принадлежащие каждому из классов T 0, T 1, L, M, S.

Заметим,чтонеобходимостьэтогоутвержденияочевидна,таккакеслибы всефункцииизнабора К входиливодинизперечисленныхклассов,тоивсесуперпозиции,азначит,изамыканиенаборавходилобывэтотклассикласс К немогбытьполным.

Достаточностьэтогоутверждениядоказываетсядовольносложно,поэтомуздесь не приводится.

Из этой теоремы следует довольно простой способ выяснения полноты некоторого набора функций. Для каждой из этих функций выясняется принадлежность к перечисленным выше классам. Результаты заносятся в так называемую таблицу Поста (в нашем примере эта таблица составлена для 4-х функций, причем знаком “+” отмечается принадлежность функции соответствующему классу, знак “–” означает, что функция в него не входит).

 

f T 0 T 1 L M S
f 1 + +
f 2 + +
f 3 +
f 4 + + +

В соответствии с теоремой Поста набор функций будет полным тогда и только тогда, когда в каждом столбце таблицы Поста имеется хотя бы один минус. Таким образом, из приведенной таблицы следует, что данные 4 функции образуют полный набор, но эти функции не являются базисом. Из этих функций можно образовать 2 базиса: f 3, f 1и f 3, f 2. Полными наборами будут любые наборы содержащие, какой-либо базис.

Непосредственно из таблицы Поста следует, что число базисных функций не может быть больше 5. Нетрудно доказать, что на самом деле это число меньше или равно 4.



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 356; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.132.194 (0.105 с.)