- •Алгебра логики в задачах
- •Издательство «наука» главная редакция физико-математической литературы
- •17071, Москва, в-71, Ленинский проспект, 15
- •Оглавление
- •Предисловие
- •Путеводитель и указания к пользованию книгой
- •§ 1. Операции над высказываниями
- •Ответы и указания к задачам § 1
- •Нужио лишь вспомнить определения необходимых и достаточ ных условий, после чего утверждение превращается в тавтологию.
- •16 Операций; каждая операция задается своей истинностной таблицей, так что задача заключается в том, чтобы найти число всех различных таблиц.
- •Решение непосредственно следует из определения фиктивного вхождения (задача 1.10) и определения равносильности формул.
- •Достаточно выразить конъюнкцию и отрицание или дизъюнкцию ц отрицание.
- •§ 2. Функции алгебры логики; нормальные формы
- •Функции алгебры логики; равносильность функций.
- •Булевы алгебры.
- •, (2 9) Для перенесения отрицаний (ср. Задачу 2.8).
- •Ответы и указания к задачам § 2
- •2.36. Элементарная дизъюнкция (правильная) X°‘V. . .V*”" равна
- •Можно выбирать произвольно значения функции на всех наборах, кроме нулевого, т. Е. На (2"—1) наборах. Такой выбор осуществляется 22"-1 способами.
- •Рассмотрим для примера равносильности (2.3) и (2.7).
- •Решение аналогично решению задачи 2.6, с той лишь разницей, что вместо распределительного закона ,(2-6) используется закон (2.7).
- •Решение мальчика не выполнено, если он не закончил чтение книги или не сходил ни в музей, ни в кино, и, хотя была хорошая погода, он не купался.
- •Простые высказывания:
- •В примере 3) рассмотрим подалгебру из трех элементов:
- •Вновь применяем преобразование 3).
- •§3. Закон двойственности в алгебре логики
- •§ 4. Арифметические операции в алгебре логики
- •Ответы и указания к задачам § 4
- •Ответы и решения к задачам § 4
- •Общий вид нелинейной функции от двух переменных:
- •§5. Монотонные функции алгебры логики
- •Ответы и решения к задачам § 5
- •§ 6. Функционально замкнутые классы и теорема поста
- •§7. Общая теория функционально
- •§8. Схемы из функциональных элементов
- •§ 9. Релейно-контактные схемы. Оценки сложности схем
- •Реализация линейных функций контактными схемами.
- •Ответы и решения к задачам § 9
- •§ 10. Элементы вероятностной логики
- •Ответы и указания к задачам § 10
- •§ II. Многозначные логики
- •10, Если хфЬ.
- •§ 12. Логика предикатов
- •Последовательность {ап} имеет конечный предел, если
Реализация линейных функций контактными схемами.
В этом пункте на примере линейных функций мы покажем, что для некоторых специальных классов функций общие оценки можно значительно улучшить [5]. Итак, для каждого п рассматриваются две функции:
Рп (*i хп) = хл + + ... + х„;
Qn(X 1> ■■■» Хп)~Х 1 + *2+ ■ • • +*п+ 1-
Первую из этих функций иногда называют «счетчиком нечетности», а вторую — «счетчиком четности». Эти названия связаны с тем, что Рп равна 1 тогда и только тогда, когда нечетное число переменных равно 1, a Qn равна 1, когда четное число переменных равно 1. Нам предстоит построить контактные схемы для Рп и Qn.
Отступление о переключательных схемах.
Рассмотрение контактных схем эквивалентно рассмотрению так называемых переключательных схем. Каждый контакт можно при этом интерпретировать как переключатель, который может находиться в двух состояниях: например, если он замкнут, то ток по цепи в этом месте может проходить, если разомкнут, то нет. Каждому переключателю ставится в соответствие переменная х или ее отрицание х; в зависимости от этого значениям х= 1 и х=0 соответствует то или иное состояние переключателя. К входу схемы всегда подается ток; на выходе будет ток, если функция проводимости равна единице. В осветительной цепи, как правило, мы имеем дело с одним переключателем (точнее, каждый переключатель управляет своей частью цепи). Но иногда приходится прибегать к переключательным схемам. Например, пусть имеется несколько переключателей (в разных концах комнаты), и мы хотим, чтобы изменение положения любого из них меняло проводимость в цепи (свет должен зажигаться, если ранее он не горел, или гаснуть, если он горел). Ясно, что соответствующая схема будет реализовывать Рп или Qn (в зависимости от состояния схемы при выключенных переключателях), так как именно у этих функций изменение значения любой одной переменной на противоположное меняет значение функции (см. задачу 4.9). Читатель без труда придумает другие ситуации, когда естественно прибегнуть к переключательным схемам. Можно разобрать, например, случай, когда свет должен гореть, если включено большинство переключателей («машина голосования»); когда должно быть включено, по крайней мере, два переключателя и т. д. Переключение лампочек в люстре по секциям происходит благодаря тому, что они разбиты на две группы, каждая из которых связана с одним переключателем; вместо двух переключателей иногда используется секционный переключатель, четыре возможных положения которого отвечают возможным состояниям пары переключателей. (Знаете ли вы, как он устроен? Обратите внимание на то, что к нему подходят три привода.)
Возвратимся вновь к реализации Рп и Qn.
Найти минимальные схемы, реализующие Р2 и Qs- ^
Схемы для Рп и Q„ мы будем строить по индукции.
Построить контактные схемы для Рп и Qn. Получить верхние оценки для L(Pn) и L(Qn). Оценить их снизу. ▲
Итак, мы получили, что линейные функции можно реализовать контактными схемами, имеющими линейную сложность (т. е. число необходимых контактов линейно зависит от числа переменных).
Рассмотрим вопрос о реализации линейных функций II-схемами. Прежде всего убедимся, что пока мы такими реализациями не обладаем.
Показать, что схемы, построенные при решении задачи 9.28, не являются П-схемами при п>2. ▲
Итак, мы умеем -строить П-схемы лишь для Рг и Q.z.
Реализовать П-схемами функции /V и Q^-. Оценить число контактов.
Реализовать II-схемами Рп и Qn для любых п. Оценить сверху L(Pn) и L(Qn). ▲
Итак, в классе П-схем нам удалось реализовать линейные функции лишь схемами, сложность которых растет как п1. Известно I6J, что Ln(P„) растет нелинейно; именно, для некоторого £>0
Ln{PJ7&cn'f'-,
однако неизвестно, каков именно порядок Ln(Pn)-
Мы построим теперь схему для арифметического сложения двоичных чисел. Если заданы два я-значных двоичных числа, то их сумма является не более чем (п+ 1)-значным числом. Назовем п-значным сумматором (I, /?+^-полюс- ник, в который входят контакты, связанные с переменными (а,, . . ., хп; (/ь . . уп), причем выходы упорядочены так, что на г-м выходе реализуется i-й справа знак st(x, у) суммы двоичных чисел (xnxn_i. . .хг) и (у„уп-1- ■ //i)-
Схему будем строить индуктивно в соответствии с обычным' способом сложения чисел в позиционной (в частности, в двоичной) системе счисления. Разряды мы считаем справа налево. Для того чтобы провести сложение в t-м разряде, нужно знать i-e разряды слагаемых xt и yt и перенос pi на этот разряд. При этом нужно вычислить не только г'-й знак суммы sit но и перенос на следующий разряд pi+1. Поскольку мы имеем дело со знаками 0 и 1, речь идет об определении двух функций алгебры логики, задающих Si и pi+1.
Найти функции st(xh уи /?,-) и pi+1(xt, yit pt). А
Построить схему «-разрядного сумматора. Оценить необходимое число элементов. А
Схемы из функциональных элементов для арифметических операций. Для схем из функциональных элементов можно получить близкими методами 14], [7] 1) оценки,
аналогичные полученным в этом параграфе оценкам для контактных схем. При этом порядок роста L(n) — тот же самый (2"'7i); от базиса зависит только константа. Мы не будем останавливаться на этих вопросах, а лишь построим схемы из функциональных элементов, реализующие арифметические операции: сложение и умножение. При этом процедура построения таких схем из функциональных элементов в некотором смысле более естественна, чем для аналогичных контактных схем (это особенно видно при сравнении схем для умножения).
Заметим, что не известно никакой эффективной последовательности функций, требующих для своей реализации схем из функциональных элементов с нелинейно растущей сложностью (ср. замечание на стр. 167).
Мы будем рассматривать схемы из нультактных функциональных элементов. При оценке числа элементов будем интересоваться лишь порядком и не будем стремиться к нахождению точных констант. Как мы увидим, при этом порядок роста числа элементов часто не зависит от используемого базиса функциональных элементов (от базиса зависит лишь константа).
Построить схему из функциональных элементов для n-разрядного двоичного сумматора. Оценить сверху число необходимых элементов. А
Построить схему из функциональных элементов для л-разрядного вычитания. Оценить число элементов. А
Построим теперь схему для умножения «-разрядных двоичных чисел. Вначале мы, как и в предыдущих случаях, будем исходить из обычного способа умножения двоичных чисел. Напомним, что для умножения чисел х=(хпхп_1...х1), у=(УпУп-1- ■ -yi) нужно умножить х на каждое у( (ху{), сдвинуть ху-, на i—I единиц влево (или приписать справа столько нулей) и полученные числа сложить. Поскольку в двоичной системе у, = 0 или 1, достаточно для всех yt 1 приписать i—1 нулей к х справа (т. е. взять 2‘~гх) и эти числа сложить.
Построить схему из функциональных элементов для «-разрядного умножения. А
Сейчас мы получим [8] более экономный (при больших л) способ умножения. Способ построения в некотором смысле аналогичен способу, которым мы строили П-схемы для линейных функций.
Заметим, что задача о построении схемы для произведения сводится к построению схемы для возведения в квадрат.
Доказать, что если для возведения в квадрат л-значных чисел можно построить схему, содержащую не более f(ri) элементов, то для умножения л-значных чисел можно построить схему из менее чем af(n-{-\)-\-cn элементов (а и с не зависят от л).
В частности, если /(л) растет быстрее л при ti-^оз (например, f(n)—cna, оС>1), то для числа элементов в схеме для умножения получается та же (по порядку) оценка (но с другой константой).
В связи с этим мы начнем со схемы для возведения двоичных чисел в квадрат.
Построить схему для возведения в квадрат 2*-значного двоичного числа, содержащую не более с-Зк элементов (с не зависит от /г). ▲
Исходя из задачи 9.38, построить схему для возведения в квадрат л-значного двоичного числа (для любого л). Оценить число элементов. Сделать вывод относительно схемы для умножения. ▲
Мы построили схему для умножения, содержащую не более спх 4 элементов. Оказывается, этот результат можно усилить 19]: для любого а > 1 существует схема для умножения, содержащая не более спа элементов (с не зависит от п). Таким образом, существуют способы для умножения чисел в позиционной системе счисления, содержащие не сп- элементарных актов (сложений и умножений однозначных чисел, как при обычном способе), а спа (1 < « < 2). Однако не следует забывать, что в этих оценках константы с различны, а потому эти новые способы могут оказаться более экономичными лишь при больших п.
ОТВЕТЫ И УКАЗАНИЯ К ЗАДАЧАМ § 9
9.1. 1) Доказать по индукции, воспользовавшись полнотой системы функций [ху, х} и элементами задержки.
Нельзя реализовать, например, ху (и вообще R; см. указание к задаче 8.11). Аналогично решению задачи 8.10.
Схемы а) и в), приведенные при решении задачи 9.2, являются контактными.
Для каждой цепи рассмотреть последовательность вершин, через которые она проходит, и доказать конечность числа таких поел едовател ьностей.
Показать, что если в какой-то цепи все контакты замкнуты, то найдется существенная цепь, в которой также все контакты замкнуты.
Алгоритм преобразования формулы к ДНФ см. в п. 6 § 2. Полученную ДНФ можно упростить при помощи формул (2.20) — (2.25).
Воспользоваться формулами (2.20), (2.22) и (2.23).
Построить вначале схемы, реализующие элементарные дизъюнкции.
Формула указывает некоторый способ построения функции из переменных и их отрицаний при помощи конъюнкций и дизъюнкций. Схему следует строить индуктивно, исходя из этой конструкции.
Показать, что схему нельзя разбить ни на две схемы, соединенные последовательно, ни на две схемы, соединенные параллельно.
Учесть, что все переменные в функции проводимости существенны.
Показать, что во всякой схеме, реализующей данную функцию, каждой переменной должен соответствовать, по крайней мере, один положительный и один отрицательный контакты.
Схема на рис. 40 соответствует СДНФ. Искомую схему можно получить, исходя из некоторой КНФ.
Показать, что рассматриваемую функцию нельзя представить формулой при помощи конъюнкций и дизъюнкций, в которой каждая из переменных встречается по одному разу. Точнее ее нельзя представить в виде конъюнкции или дизъюнкции функций, не имеющих общих переменных.
а), б) Цп)*^п‘2"; в) L(rtX«2n~1.
L(n) ss; 3- 2n_1—2; показать, что если —число контактов, которое может потребоваться при указанном способе реализации функций от k переменных, то cft + i < 2с&+2.
Универсальность (1, 2п)-псшюсника можно доказать по индукции. Для реализации функции достаточно отождествить выходы
многополюсника, сопоставленные соответствующим элементарным конъюнкциям. Получается оценка:
L (п) <2" + 1 — 2.
В любой цепи, соединяющей выходы, для некоторой переменной имеется один положительный и один отрицательный контакты. Доказательство удобно проводить по индукции.
Для доказательства того, что нет лишних цепей с ненулегэй проводимостью, воспользоваться разделительностью универсального многополюсника Мх
Имеем для любого к < п
L(n)«r„ а = 2-2"-А + 2-2*-22*.
Нужно выбрать k(n) так, чтобы второй член в Тп к (см. указание к задаче 9.21) рос медленнее первого. При этом первый член нужно сделать возможно меньшим. Чтобы удовлетворить этим двум требованиям, достаточно для любого р > 0 выбрать в качестве к(п), наибольшее целое число, не превосходящее log2 п—р.
В результате получается, что для любого е>0 при достаточно больших п
Цп) <(4+е)^.
Воспользоваться результатом задачи 9.14.
Оценить сверху число вершин в графе с k ребрами; перенумеровать вершины в графе и заметить, что граф определяется указанием того, каким числом ребер соединена каждая пара вершин.
Найти число схем для п переменных, имеющих один и тот же граф с k контактами. После этого воспользоваться оценкой предыдущей задачи.
а(л)> 1; L (п) > ^ .
Воспользоваться СДНФ или СКНФ. См. задачу 9.14.
Имеем:
Р» + 1 (Х.1» • ■ •» Хп* ХП + l) ~ ^2 (^И (*lf ••■»
Qn + l(x 1» *71» -^n + l) = Qa (Рп (Xl< хгд' xn + l)'
Далее, Рп Qnr
Построить (по индукции) (1, 2)-полюсник, реализующий Рп и Qn; воспользоваться схемами предыдущей задачи. Имеем при п> 1:
2«<1(Р„)<4(я-1);
'2n^L (Q„) < 4 (п — 1).
Для получения нижней оценки воспользоваться задачей 9.14.
Рассмотреть для простоты, например, схему для Р3(х, у, г). Показать, что схема непредставима в виде параллельного или последовательного соединения двух (непустых) схем. Этот факт доказывается аналогично решению задачи 9.12. Соответствующее свойство схем для Рп и Q1} можно доказать по индукции.
Имеем:
^*2m (*1» - - ■» хт-> ^1» - - -» Ут) ^*2 m - - -» Рm (Vi* • • •» Ут)^< Qzm (*1» • • •» xm\ У1* ■ • • i Ут) Qi m ■ xm)* ^tn (^1» Ут))•
При помощи этих формул можно реализовать П-схемами Р2,п и QSm, если Рт и Q,n уже реализованы.
Исходя из этого, для реализации Р^и и Q2;< достаточно 41 контактов.
9.3!. Пусть 2к < п < 2ft+1 (случай и — 2к уже разобран); п—2к^т.
Первый способ. Построить схему для и преобразо
вать ее, исходя из того, что хр = 0 при р > п. Получается очевидная оценка:
Ln(Pn)^W
или более точная оценка:
Ln (Рп)^2пК
Второй способ. Имеем:
Рп (^1* • * * х2к * У^' ' ' * Ут) ~
Р 2к (^*2 (-^1* У l)» ••■у Р-г(хт, Ут)» %т +1» »
Найти число контактов в такой схеме k(n) и оценить сверху
к (п) — л2 ~п*
При этом можно заменить п непрерывной переменной и искать наибольшее значение возникающей функции средствами дифференциального исчисления.
Окончательный ответ:
(Рп) < 'g' па-
siixi, yh Pi)— xt-\ yi+Pi, pi+i(xit yt, Pi^XtyiVxtPiVyiPi.
Построение проводить по индукции. При этом строить (1, Н-2)-полюсник ТI, на выходах которого реализуются разряды
суммы Si Sj, перенос на (»+1)-й разряд Pj+i и i7i+1=pi+1. Число
контактов в сумматоре растет линейно.
Для каждого разряда построить схемы, реализующие s( и Pi+i, и соединить эти схемы соответствующим образом. Число элементов в этой схеме меньше сп для некоторой константы с (не зависящей от п).
Пусть нам нужно вычесть из двоичного 4Haias=(sns„_x, ...,Si) двоичное число х=(х„хп-1 ... Xj); будем считать, что sn= 1. Схему будем строить, исходя из обычного способа поразрядного вычитания (справа налево). Напомним, что в двоичной системе «десяток» — это число два; поэтому если мы занимаем при вычитании единицу в (i+l)-M разряде, то к t-му разряду прибавляются две единицы. При этом ясно, что ие может возникнуть необходимости занимать более одной единицы *). (Конечно, это замечание относится лишь к случаю, когда мы вычитаем одно число, а не несколько.) При построении схемы технически удобнее (в отличие от обычного способа вычитания), если требуется занять единицу в (t+l)-M разряде, запомнить это, выполнить действие в i-м разряде независимо от значения si+1 (т. е. можно ли отнять от si+1 единицу или нужно двигаться дальше налево, пока не дойдем до разряда, от которого действительно можно отнять единицу), далее перейти к рассмотрению (Н 1 )-го разряда, опять-таки не рассматривая более левых разрядов. Итак, когда мы рассматриваем i-й разряд, то
нам известны s,, xit а также то, нужно ли отнять от i-го разряда единицу для предыдущих разрядов. Введем величину qt, равную единице, если единицу нужно занимать, и равную нулю, если не нужно.
Из si надо вычесть х; и qt. Если то мы занимаем единицу
в (i \-1 )-м разряде; тогда st увеличивается на 2 и вычитание можно произвести, причем получится величина yt, равная 1 или 0. Таким образом, нам нужно определить две функции: xh qt) и хь qf), т. е.
i-fi знак разности 1/; и величину qt+1, заимствуемую из (/'■--1)-го разряда. Имеем:
у, (S/, Х(, qi) = s,- -\-xi~\-qf,
Qi + i (s< xi, Qi) = Qixi V S/(*; V <?,).
Построение схемы аналогично построению схемы сумматора. Число контактов не превосходит сп. Если qn+1= 1, то s<x.
Можно также свести вычитание к сложению, используя следующее свойство двоичных чисел Пусть х = (хп х„~1.. .xt); тогда х-' Х = (1 1 ... 1)=10»+1—1 п
Произведение двух и-значных чисел содержит не более 2п разрядов (зс < 2», у < 2й ху < 22и). Обозначим произведение ху через р = (рг„р2п_1...р2р1). Итак,
P = ViX+y2x-2-\ + </,*• 2'| . .. -f упх-2"-i.
Напомним, что 2* в двоичной системе записывается как единица с k нулями. Обозначим через р(,) сумму первых j слагаемых в выражении для р. Поскольку число разрядов в каждом последующем слагаемом не более чем на единицу превосходит число разрядов в предыдущих слагаемых, то содержит не более n-\-j разрядов. Все последующие слагаемые в сумме для р имеют нули в последних разрядах, поэтому последние / разрядов у р^ совпадают с этими же разрядами у р, т. е. р^;) имеет вид р^ = (<</>.. •^,')Р/-Ру_1 • • -Pi)- Имеем:
р(Я-« = р<Л + у/+1х.2/=( *</+1>... tli + l)P/+lP/.. ,Pl).
Сопоставляя эти формулы, мы видим, что
t<J>+y/+1x=(t}l+l\.. tii+uPj+1)
(здесь мы положили /(/1 = ( t\P ill-i- ■ ■ t[n)). В результате мы получи, ли возможность для индуктивного построения схемы: на (/+1)-м шаге мы, исходя из п-значных чисел /<-,), х и однозначного числа уу+1, находим (/-)-1)-й разряд произведения pj , , и число iu+1).
Число элементов в схеме не превосходит сп2.
Воспользоваться формулой (a-\-b)2=a2-\-b2-\-2ab и задачей 9.35.
Показать, что если для возведения в квадрат т-значного числа достаточно d(m) элементов, то для возведения в квадрат 2т-знач- ного числа достаточно
d (т) ст.
элементов, где с не зависит от т. Для доказательства представить 2т- значнсе число в виде х-2т \ у, гд- хну — m-значные числа. Нужная формула доказывается индукцией по к.
Воспользоваться схемой для возведения в квадрат 2*-значного числа, где п ес 2*. Для числа элементов получится оценка:
d (n)<cnlog'3.
