Опубликован: 03.06.2019 | Уровень: для всех | Доступ: платный
Лекция 14:

Азы (nuts and bolts) классических вычислении

< Лекция 13 || Лекция 14: 12 || Лекция 15 >

Выполнение компьютерной программы сводится к последовательности выполнения команд - базисных операций, выполняемых процессором компьютера. Сегодняшние процессоры компьютера мощные и могут выполнять достаточно сложные команды. Для нашего анализа разумно вернуться к корням компьютерных вычислений и обсудить простейшие базисные операции, достаточные для построения компьютера. Таких операций три: АND, ОR, NОТ. Первые две - бинарные операции над двумя аргументами, операция NОТ - унарная, у нее один аргумент.

Логика является источником этих операций. Значения бита интерпретируются как True/Fa1se, где х = 1 интерпретируется как "х истинно" (Тrue), а х = 0 означает "х - ложно" (Fa1se). Тогда х АND у означает "х и у оба истинны", х ОR у означает "или х - истинно, или у - истинно, или х и у оба истинны". Эти операции называются булевыми операциями, названными так в честь Джорджа нуля - математика 19-го столетия, положившего начало оснований символической логики.

Приведем следующие истинностные таблицы этих логических операций:


Далее будем использовать более короткую нотацию "х \bigwedge y " для " х AND у", " х \bigvee y " для "х ОR у" и "\bar x" для "NОТ х". Функция АND называется также конъюнкцией, ОR - дизъюнкцией.

Утверждение. Операции Булевой логики удовлетворяют следующим свойствам - законам логики:

(1) \overline{x \bigwedge y}=\bar x \bigvee \bar y,

(2) \overline{x \bigvee y}=\bar x \bigwedge \bar y,

(З) \bar \bar x=x,

(4) x \bigwedge (y \bigvee z)=(x \bigwedge y) \bigvee (x\bigwedge z),

(5) x \bigvee (y \bigwedge z)=(x \bigvee y) \bigwedge (x \bigvee z).

Доказательство этих свойств оставляем в качестве упражнения.

При вычисления логических выражений важен порядок выполнения операций. Полагается, что AND выполняется раньше, чем OR, также как в арифметических выражениях умножение имеет более высокий приоритет чем сложение. Так что выражение x \bigwedge y \bigvee z \bigwedge w понимается как (x \bigwedge y) \bigvee (z \bigwedge w), а выражение x \bigvee y \bigwedge z \bigvee w эквивалентно x \bigvee (y \bigwedge z) \bigvee w.

Пример. Давайте выразим функцию х = у через функции базиса. По определению эквивалентности (равенства), либо оба х и у имеют значение Тruе, либо оба - Fa1se. Это можно выразить так:

x \bigwedge y \bigvee \bar x  \bigwedge\bar y

Пример. Давайте выразим функциями базиса отношение между числами: 2-битное целое х_1х_0 больше чем 2-битное целое у_1у_0. Построенная логическая функция должна давать 1, если х_1х_0 > у_1у_0 и 0 в противном случае. Неравенство выполняется, если х_1 > у_1 либо х_1 = у_1 и х_0 > у_0 Неравенство "х_1 > у_1" означает, что х_1 = 1 и у_1 = 0. Выражение для равенства было приведено в предыдущем примере. Комбинируя, получим формулу булевой алгебры, вычисляющую эту функцию:

x_1 \bigwedge \bar y_1 \bigvee (x_1 \bigwedge y_1 \bigvee \bar x_1 \bigwedge \bar y_1) \bigwedge x_0 \bigwedge \bar y_0

Как ранее отмечалось, любое классическое вычисление может рассматриваться как функция f : В_n \to В_k . Такая функция может быть заменена k функциями f_1,f_2, \dots, f_k , где каждая функция f_i определена на В_n и производит вывод в В_1 = \{0,1\}. Функция f_1 вычисляет первый бит функции f, функция f_2 вычисляет второй бит функции f , и так далее. По этой причине сосредоточим наше внимание на вычисления функция

f:D_n \to D_1

Мы утверждаем, что любую булеву функцию можно выразить через элементарные функции {АND, OR, NOT}. В электронике булевы функции реализуются электрическими схемами, где присутствие напряжения в проводе представляет 1, а отсутствие - О. Представьте себе, что у нас есть набор ящичков, реализующих элементарные функции {АND, OR, NОТ}. Ящичек для АND имеет два провода на входе и один на выходе. Следствием нашего утверждения является то, что, используя элементарные ящички - стандартные схемные элементы (gates - "стандартный элемент"), можно построить процессор компьютера. Фактически так и строятся компьютеры сегодня за тем исключением, что вместо использования отдельных стандартных элементов для каждой элементарной булл

Покажем теперь на примере, как можно, используя элементарные функции {АND, OR, NОТ} выразить функцию f : В_3 \to В_1, заданную следующей таблицей истинности:


Рассмотрим вторую строку таблицы, которая говорит, что функция имеет значение 1, когда х = 0, у = 0, z = 1. Если построить конъюнкцию: \bar x \bigwedge \bar y \bigwedge z, то она также будет иметь значение 1 на этом наборе переменных и будет иметь значение 0 на всех остальных наборах значений х, у, z. Рассмотрим и все другие строки таблицы, где функция f имеет значение 1. Это происходит, когда (х = 0, у = 1, z = 1) и (х = 1, у = 0, z = 0). Конъюнкции, которые генерируют 1 для этих наборов переменных, имеют вид: \bar x \bigwedge y \bigwedge z и x \bigwedge \bar y \bigwedge \bar z

< Лекция 13 || Лекция 14: 12 || Лекция 15 >
Мадина Музиева
Мадина Музиева
Россия, Сургут, Сургутский Государственный Университет, 2017
Алла Рыжкова
Алла Рыжкова
Россия, Нижний Новгород, Нижегородский Государственный Университет им. Н. И. Лобачевского, 2000