Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[УЧЕБНИК] Гиндикин Алгебра логики и задачи.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
2.82 Mб
Скачать
  1. Реализация линейных функций контактными схемами.

В этом пункте на примере линейных функций мы покажем, что для некоторых специальных классов функций общие оценки можно значительно улучшить [5]. Итак, для каждого п рассматриваются две функции:

Рп (*i хп) = хл + + ... + х„;

Qn(X 1> ■■■» Хп)~Х 1 + *2+ ■ • • +*п+ 1-

Первую из этих функций иногда называют «счетчиком нечетности», а вторую — «счетчиком четности». Эти назва­ния связаны с тем, что Рп равна 1 тогда и только тогда, когда нечетное число переменных равно 1, a Qn равна 1, когда четное число переменных равно 1. Нам предстоит построить контактные схемы для Рп и Qn.

Отступление о переключательных схемах.

Рассмотрение контактных схем эквивалентно рассмотрению так называемых переключательных схем. Каждый контакт можно при этом интерпретировать как переключатель, который может находиться в двух состояниях: например, если он замкнут, то ток по цепи в этом месте может проходить, если разомкнут, то нет. Каждому переключателю ставится в соответствие переменная х или ее отрицание х; в зависимости от этого значениям х= 1 и х=0 соответствует то или иное состояние переключателя. К входу схемы всегда подается ток; на выходе будет ток, если функция проводимости равна единице. В осветительной цепи, как правило, мы имеем дело с одним переключателем (точнее, каждый переключатель управляет своей частью цепи). Но иногда приходится прибегать к переключательным схемам. Например, пусть имеется несколько переключателей (в разных концах комнаты), и мы хотим, чтобы изменение положения любого из них меняло проводимость в цепи (свет должен зажигаться, если ранее он не горел, или гаснуть, если он горел). Ясно, что соответствующая схема будет реализовывать Рп или Qn (в зависимости от состояния схемы при выключенных переклю­чателях), так как именно у этих функций изменение значения любой одной переменной на противоположное меняет значение функции (см. задачу 4.9). Читатель без труда придумает другие ситуации, когда естественно прибегнуть к переключательным схемам. Можно разобрать, например, случай, когда свет должен гореть, если включено большин­ство переключателей («машина голосования»); когда должно быть включено, по крайней мере, два переключателя и т. д. Переключение лампочек в люстре по секциям происходит благодаря тому, что они разбиты на две группы, каждая из которых связана с одним переключа­телем; вместо двух переключателей иногда используется секционный переключатель, четыре возможных положения которого отвечают воз­можным состояниям пары переключателей. (Знаете ли вы, как он уст­роен? Обратите внимание на то, что к нему подходят три привода.)

Возвратимся вновь к реализации Рп и Qn.

  1. Найти минимальные схемы, реализующие Р2 и Qs- ^

Схемы для Рп и Q мы будем строить по индукции.

  1. Построить контактные схемы для Рп и Qn. Полу­чить верхние оценки для L(Pn) и L(Qn). Оценить их снизу. ▲

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

Рассмотрим вопрос о реализации линейных функций II-схемами. Прежде всего убедимся, что пока мы такими реализациями не обладаем.

  1. Показать, что схемы, построенные при решении задачи 9.28, не являются П-схемами при п>2. ▲

Итак, мы умеем -строить П-схемы лишь для Рг и Q.z.

  1. Реализовать П-схемами функции /V и Q^-. Оце­нить число контактов.

  2. Реализовать 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.

  1. Найти функции st(xh уи /?,-) и pi+1(xt, yit pt). А

  2. Построить схему «-разрядного сумматора. Оце­нить необходимое число элементов. А

  1. Схемы из функциональных элементов для арифмети­ческих операций. Для схем из функциональных элементов можно получить близкими методами 14], [7] 1) оценки,

аналогичные полученным в этом параграфе оценкам для контактных схем. При этом порядок роста L(n) — тот же самый (2"'7i); от базиса зависит только константа. Мы не будем останавливаться на этих вопросах, а лишь построим схемы из функциональных элементов, реализующие ариф­метические операции: сложение и умножение. При этом процедура построения таких схем из функциональных элементов в некотором смысле более естественна, чем для аналогичных контактных схем (это особенно видно при сравнении схем для умножения).

Заметим, что не известно никакой эффективной после­довательности функций, требующих для своей реализации схем из функциональных элементов с нелинейно растущей сложностью (ср. замечание на стр. 167).

Мы будем рассматривать схемы из нультактных функ­циональных элементов. При оценке числа элементов будем интересоваться лишь порядком и не будем стремиться к нахождению точных констант. Как мы увидим, при этом порядок роста числа элементов часто не зависит от исполь­зуемого базиса функциональных элементов (от базиса за­висит лишь константа).

  1. Построить схему из функциональных элементов для n-разрядного двоичного сумматора. Оценить сверху число необходимых элементов. А

  2. Построить схему из функциональных элементов для л-разрядного вычитания. Оценить число элементов. А

Построим теперь схему для умножения «-разрядных двоичных чисел. Вначале мы, как и в предыдущих случаях, будем исходить из обычного способа умножения двоичных чисел. Напомним, что для умножения чисел х=(хпхп_1...х1), у=(УпУп-1- ■ -yi) нужно умножить х на каждое у( (ху{), сдвинуть ху-, на i—I единиц влево (или приписать справа столько нулей) и полученные числа сложить. Поскольку в двоичной системе у, = 0 или 1, достаточно для всех yt 1 приписать i—1 нулей к х справа (т. е. взять 2‘~гх) и эти числа сложить.

  1. Построить схему из функциональных элементов для «-разрядного умножения. А

Сейчас мы получим [8] более экономный (при больших л) способ умножения. Способ построения в некотором смысле аналогичен способу, которым мы строили П-схемы для ли­нейных функций.

Заметим, что задача о построении схемы для произ­ведения сводится к построению схемы для возведения в квадрат.

  1. Доказать, что если для возведения в квадрат л-значных чисел можно построить схему, содержащую не более f(ri) элементов, то для умножения л-значных чисел можно построить схему из менее чем af(n-{-\)-\-cn элементов (а и с не зависят от л).

В частности, если /(л) растет быстрее л при ti-^оз (на­пример, f(n)—cna, оС>1), то для числа элементов в схеме для умножения получается та же (по порядку) оценка (но с другой константой).

В связи с этим мы начнем со схемы для возведения двоич­ных чисел в квадрат.

  1. Построить схему для возведения в квадрат 2*-значного двоичного числа, содержащую не более с-Зк элементов не зависит от /г). ▲

  2. Исходя из задачи 9.38, построить схему для воз­ведения в квадрат л-значного двоичного числа (для лю­бого л). Оценить число элементов. Сделать вывод относи­тельно схемы для умножения. ▲

Мы построили схему для умножения, содержащую не более спх 4 элементов. Оказывается, этот результат можно усилить 19]: для любого а > 1 существует схема для умно­жения, содержащая не более спа элементов (с не зависит от п). Таким образом, существуют способы для умножения чисел в позиционной системе счисления, содержащие не сп- элементарных актов (сложений и умножений однознач­ных чисел, как при обычном способе), а спа (1 < « < 2). Однако не следует забывать, что в этих оценках константы с различны, а потому эти новые способы могут оказаться более экономичными лишь при больших п.

ОТВЕТЫ И УКАЗАНИЯ К ЗАДАЧАМ § 9

9.1. 1) Доказать по индукции, воспользовавшись полнотой системы функций [ху, х} и элементами задержки.

  1. Нельзя реализовать, например, ху (и вообще R; см. указание к задаче 8.11). Аналогично решению задачи 8.10.

  1. Схемы а) и в), приведенные при решении задачи 9.2, являются контактными.

  2. Для каждой цепи рассмотреть последовательность вершин, через которые она проходит, и доказать конечность числа таких по­ел едовател ьностей.

  3. Показать, что если в какой-то цепи все контакты замкнуты, то найдется существенная цепь, в которой также все контакты замкнуты.

  1. Алгоритм преобразования формулы к ДНФ см. в п. 6 § 2. По­лученную ДНФ можно упростить при помощи формул (2.20) — (2.25).

  2. Воспользоваться формулами (2.20), (2.22) и (2.23).

  3. Построить вначале схемы, реализующие элементарные дизъ­юнкции.

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

    2. Показать, что схему нельзя разбить ни на две схемы, соеди­ненные последовательно, ни на две схемы, соединенные параллельно.

    3. Учесть, что все переменные в функции проводимости су­щественны.

    4. Показать, что во всякой схеме, реализующей данную функ­цию, каждой переменной должен соответствовать, по крайней мере, один положительный и один отрицательный контакты.

    5. Схема на рис. 40 соответствует СДНФ. Искомую схему можно получить, исходя из некоторой КНФ.

    6. Показать, что рассматриваемую функцию нельзя представить формулой при помощи конъюнкций и дизъюнкций, в которой каждая из переменных встречается по одному разу. Точнее ее нельзя предста­вить в виде конъюнкции или дизъюнкции функций, не имеющих общих переменных.

    7. а), б) Цп)*^п‘2"; в) L(rtX«2n~1.

    8. L(n) ss; 3- 2n_1—2; показать, что если —число контактов, которое может потребоваться при указанном способе реализации функ­ций от k переменных, то cft + i < 2с&+2.

    9. Универсальность (1, 2п)-псшюсника можно доказать по ин­дукции. Для реализации функции достаточно отождествить выходы

многополюсника, сопоставленные соответствующим элементарным конъ­юнкциям. Получается оценка:

L (п) <2" + 1 — 2.

    1. В любой цепи, соединяющей выходы, для некоторой пере­менной имеется один положительный и один отрицательный контакты. Доказательство удобно проводить по индукции.

    2. Для доказательства того, что нет лишних цепей с ненулегэй проводимостью, воспользоваться разделительностью универсального многополюсника Мх

Имеем для любого к < п

L(n)«r„ а = 2-2"-А + 2-2*-22*.

    1. Нужно выбрать k(n) так, чтобы второй член в Тп к (см. ука­зание к задаче 9.21) рос медленнее первого. При этом первый член нужно сделать возможно меньшим. Чтобы удовлетворить этим двум требованиям, достаточно для любого р > 0 выбрать в качестве к(п), наибольшее целое число, не превосходящее log2 п—р.

В результате получается, что для любого е>0 при достаточно больших п

Цп) <(4+е)^.

    1. Воспользоваться результатом задачи 9.14.

    2. Оценить сверху число вершин в графе с k ребрами; перену­меровать вершины в графе и заметить, что граф определяется указа­нием того, каким числом ребер соединена каждая пара вершин.

    3. Найти число схем для п переменных, имеющих один и тот же граф с k контактами. После этого воспользоваться оценкой предыдущей задачи.

    4. а(л)> 1; L (п) > ^ .

    5. Воспользоваться СДНФ или СКНФ. См. задачу 9.14.

    6. Имеем:

Р» + 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.

    1. Рассмотреть для простоты, например, схему для Р3(х, у, г). Показать, что схема непредставима в виде параллельного или последо­вательного соединения двух (непустых) схем. Этот факт доказывается аналогично решению задачи 9.12. Соответствующее свойство схем для Рп и Q1} можно доказать по индукции.

    2. Имеем:

^*2m (*1» - - ■» хт-> ^1» - - -» Ут) ^*2 m - - -» Рm (Vi* • • •» Ут)^< Qzm (*1» • • •» xm\ У1* ■ • • i Ут) Qi mxm)* ^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' па-

  1. siixi, yh Pi)— xt-\ yi+Pi, pi+i(xit yt, Pi^XtyiVxtPiVyiPi.

  2. Построение проводить по индукции. При этом строить (1, Н-2)-полюсник ТI, на выходах которого реализуются разряды

суммы Si Sj, перенос на (»+1)-й разряд Pj+i и i7i+1=pi+1. Число

контактов в сумматоре растет линейно.

  1. Для каждого разряда построить схемы, реализующие s( и Pi+i, и соединить эти схемы соответствующим образом. Число элементов в этой схеме меньше сп для некоторой константы с (не зависящей от п).

  2. Пусть нам нужно вычесть из двоичного 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 п

  1. Произведение двух и-значных чисел содержит не более 2п разрядов (зс < 2», у < 2й ху < 2). Обозначим произведение ху через р = (рг„р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.

  1. Воспользоваться формулой (a-\-b)2=a2-\-b2-\-2ab и задачей 9.35.

  2. Показать, что если для возведения в квадрат т-значного числа достаточно d(m) элементов, то для возведения в квадрат 2т-знач- ного числа достаточно

  1. d (т) ст.

элементов, где с не зависит от т. Для доказательства представить 2т- значнсе число в виде х-2т \ у, гд- хну — m-значные числа. Нужная формула доказывается индукцией по к.

  1. Воспользоваться схемой для возведения в квадрат 2*-значного числа, где п ес 2*. Для числа элементов получится оценка:

d (n)<cnlog'3.