Штрих Шеффера и стрелка Пирса: NAND и NOR в логике
В классической булевой алгебре три основные операции - конъюнкция (), дизъюнкция () и отрицание () - образуют полный базис: любую булеву функцию можно записать через них. Но можно ли обойтись одной-единственной операцией? Оказывается, да. Именно это и делают штрих Шеффера (NAND) и стрелка Пирса (NOR): каждый из них в отдельности уже функционально полон. Ниже разберём, что означают эти операции, как устроены их таблицы истинности и как через один базовый элемент воспроизвести весь арсенал классической логики. Покрутите калькулятор - он сразу покажет значения NAND и NOR для любой пары входов и формулы разложения основных операций.
Определения и таблицы истинности
Штрих Шеффера (обозначение или , читается «A штрих B» или «NAND») определяется как отрицание конъюнкции:
Операция принимает значение 0 только тогда, когда оба аргумента равны 1; во всех остальных случаях результат равен 1. Название дано в честь Генри Моуриса Шеффера, который в 1913 году доказал, что эта единственная операция порождает всю классическую логику высказываний.
Стрелка Пирса (обозначение , читается «A стрелка B» или «NOR») - это отрицание дизъюнкции:
Результат равен 1 только тогда, когда оба аргумента равны 0. Назвать операцию в честь логика Чарльза Сандерса Пирса предложил Бертран Рассел - сам Пирс использовал этот символ ещё в 1880-х, хотя в его рукописях он не получил широкого распространения сразу.
Совместная таблица истинности штриха Шеффера и стрелки Пирса:
| (NAND) | (NOR) | ||
|---|---|---|---|
| 0 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
Характерная черта NAND - он выдаёт 0 только при входах 1,1; характерная черта NOR - он выдаёт 1 только при входах 0,0. Именно этим «крайним» поведением обе операции и отличаются от привычных AND и OR.
Функциональная полнота: что это и почему важно
Говорят, что набор операций функционально полон (образует полный базис), если любую булеву функцию от любого числа переменных можно выразить через операции из этого набора. Классический полный базис - или . Добавление избыточных операций не нарушает полноты, но делает формулы короче.
Штрих Шеффера и стрелка Пирса замечательны тем, что каждый из них образует одноэлементный полный базис - более экономный, чем любой из классических. Это не просто математическое любопытство: в цифровой электронике NAND-вентиль и NOR-вентиль являются «строительными кирпичиками» логических схем именно потому, что из одного типа вентилей можно собрать любую схему.

Доказательство полноты строится по шагам: сначала показывают, что через данную операцию можно получить отрицание, затем - конъюнкцию или дизъюнкцию, а поскольку уже полный базис, задача решена.
Как выразить NOT, AND и OR через NAND
Все три классические операции получаются из штриха Шеффера за 1-3 шага:
Отрицание (): подаём один и тот же вход на оба входа NAND:
Это логично: . Один вентиль NAND заменяет инвертор.
Конъюнкция (): применяем NAND дважды - сначала к и , затем инвертируем результат:
Нужно два вентиля NAND. По сути, второй вентиль работает как инвертор из предыдущего пункта.
Дизъюнкция (): по закону де Моргана , откуда:
Три вентиля NAND: два инвертора для и , один NAND для итога.
Импликация (): поскольку , получаем:
Два вентиля NAND: сначала , затем .
Как выразить NOT, OR и AND через NOR
Симметричная картина для стрелки Пирса:
Отрицание (): так же, как у NAND - дублируем вход:
потому что .
Дизъюнкция (): применяем NOR дважды:
Второй NOR снова работает как инвертор. Два вентиля NOR.
Конъюнкция (): по де Моргану , откуда:
Три вентиля NOR, аналогично OR через NAND.
Импликация (): чуть длиннее из-за ассиметрии - :
Четыре вентиля NOR. В этом единственном пункте NOR «дороже» NAND на два вентиля.
Применение в цифровой электронике
В реальных интегральных схемах NAND и NOR - не просто удобные абстракции. Вентиль NAND реализуется через транзисторы TTL или CMOS проще и компактнее, чем AND, потому что AND фактически содержит внутри NAND плюс инвертор. Поэтому серия 74xx (стандарт TTL) содержит микросхемы «четыре двухвходовых NAND» (7400) и «четыре двухвходовых NOR» (7402) как базовые строительные блоки.
Именно из набора 7400 можно собрать любой цифровой узел: регистр, счётчик, сумматор. Аналогично в CMOS-технологии NAND и NOR реализуются через комплементарные пары транзисторов и потребляют меньше тока, чем более сложные вентили. В программируемых схемах (FPGA) базовый элемент LUT (lookup table) по смыслу близок к многовходовому NAND.
Частые ошибки
- Путаница NAND и NOR с AND и OR. NAND - это НЕ «И», а «НЕ-И»: результат инвертирован. При A=1, B=1 результат NAND равен 0, а не 1.
- Забывают перевести в через де Моргана. При выводе OR через NOR нужна не прямая подстановка, а закон де Моргана: - лучше пользоваться готовой формулой .
- Смешивают нотации. в булевой алгебре (штрих Шеффера) и в языках программирования (побитовое ИЛИ) - разные операции. В логике вертикальная черта обозначает NAND.
- Неправильно считают вентили. Для AND через NAND нужно два вентиля (NAND + инвертор-NAND), а не один. Один NAND даёт «НЕ-И», а не «И».
- Игнорируют ассоциативность. Импликация через NAND () не равна - порядок скобок меняет результат.
FAQ
Чем штрих Шеффера отличается от стрелки Пирса? NAND () равен 0 только при и ; NOR () равен 1 только при и . По сути это дуальные операции: NOR - это NAND с инвертированными входами и выходом (принцип двойственности де Моргана).
Почему их называют «функционально полными»? Потому что через каждый из них можно выразить отрицание и хотя бы одну из двух операций - конъюнкцию или дизъюнкцию. Поскольку - полный базис, любая булева функция выразима и через NAND, и через NOR в отдельности.
Существуют ли другие одноэлементные полные базисы? Из всех 16 бинарных булевых функций от двух переменных одноэлементный полный базис образуют только NAND и NOR. Остальные 14 операций либо не полны сами по себе, либо требуют дополнения хотя бы одной константой или ещё одной операцией.
Коротко
Штрих Шеффера (, NAND) и стрелка Пирса (, NOR) - единственные бинарные булевы операции, каждая из которых образует самостоятельный функционально полный базис. Через NAND выводятся NOT (один вентиль), AND (два вентиля) и OR (три вентиля); через NOR - NOT (один), OR (два) и AND (три). Именно поэтому в цифровой схемотехнике NAND и NOR служат универсальными строительными блоками: из одного типа вентилей можно собрать любую логическую схему.
Читайте также

Абстрактный класс и интерфейс: в чём отличие
Абстрактный класс и интерфейс: чем отличаются в ООП, когда наследовать поведение, а когда задавать контракт, как выбрать на примерах Java, C# и Python.

Алгоритм AdaBoost: как слабые классификаторы дают сильный
Алгоритм AdaBoost простыми словами: адаптивный бустинг, перевзвешивание объектов, формула веса классификатора, итоговый ансамбль и разбор шага на примере с формулами.

Алгоритм CatBoost: бустинг с обработкой категорий
Алгоритм CatBoost простыми словами: упорядоченный бустинг против сдвига прогноза, кодирование категориальных признаков через ordered target statistics, симметричные деревья и разбор типовых задач.