Польская нотация

Польская нотация
Prefix-dia.svg
Префиксная нотация

Инфиксная нотация

Постфиксная нотация

Польская нотация (запись), также известна как префиксная нотация (запись), это форма записи логических, арифметических и алгебраических выражений. Характерная черта такой записи — оператор располагается слева от операндов. Если оператор имеет фиксированную арность, то в такой записи будут отсутствовать круглые скобки и она может быть интерпретирована без неоднозначности. Польский логик Ян Лукасевич изобрел эту запись примерно в 1920, чтобы упростить пропозициональную логику.

Алонзо Чёрч упоминал эту нотацию в своей классической книге по математической логике, как достойную внимания систему нотации и даже противопоставлял экспозиции логических нотаций Альфреда Уайтхеда и Бертрана Рассела в Principia Mathematica.[1]

Несмотря на то, что польская запись не используется в математике, она широко применяется в информатике.

Содержание

Арифметика

В префиксной нотации сложение чисел 1 и 2 будет записано «+ 1 2» вместо записи «1 + 2». В более сложных выражениях операторы предшествуют операндам, но операнды сами могу быть нетривиальными выражениями, содержащими свои собственные операторы. Например, выражение, которое в традиционной инфиксной нотации записывается

(5 − 6) * 7

в префиксной может быть записано как

*(− 5 6) 7

или просто

* − 5 6 7

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

5 − (6 * 7)

или просто удалим

5 − 6 * 7

это изменит смысл и результат вычисления всего выражения. Соответствующая префиксная запись такого выражения будет выглядеть следующим образом:

− 5 * 6 7

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

Префиксная запись в простой арифметике представляет в значительной степени академический интерес. Как и постфиксная запись, префиксная нотация была использована для некоторых коммерческих вычислительных машин (HP-11С). Изучение префиксной записи часто является первым шагом в области конструирования компиляторов.

Программирование

Префиксная запись широко применяется в s-выражениях в языке программирования Лисп, где скобки необходимы, поскольку арифметические операторы обладают различной арностью. Язык программирования Ambi использует польскую запись для арифметических операций и структуры программы. Постфиксная запись используется во многих стековых языках, таких как PostScript, и является основой для многих вычислительных машин (калькуляторов), особенно для вычислительных машин Hewlett-Packard.

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

Порядок операций

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

/ 10 5 = 2 (префиксная запись)

нужно прочесть, как «деление 10 на 5». Поэтому результатом вычисления будет 2, а не ½, что было бы результатом неправильного анализа выражения.

Префиксная запись особенно популярна в стековых языках благодаря свойственной им возможности легко различать порядок операций без использования скобок. Для выявления порядка вычисления операторов в префиксной нотации даже нет необходимости запоминать всю операционную иерархию, как при инфиксной нотации. Вместо того, чтобы анализировать выражение для обнаружения оператора, который нужно вычислить первым, нужно считывать выражение слева направо, рассматривая оператор и ближайшие к нему два операнда. Если среди этих операндов находится еще один оператор, то вычисление первого оператора откладывается, до тех пор, пока не будет вычислен новый оператор. Итерации этого процесса повторяются до тех пор, пока оператор не будет вычислен, что должно в конечном счете произойти, если в выражении количество операндов на один больше, чем количество операций. Как только оператор вычислен, он и его два операнда заменяются полученным значением (операндом). Поскольку оператор и два операнда заменяются на вычисленный операнд, то становится на один оператор и один операнд меньше. После этого в выражении также остается N операторов и N+1 операнд, что позволяет итеративно продолжать процесс.

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

 - * / 15 - 7 + 1 1 3 + 2 + 1 1 = 15 / (7 - (1 + 1)) * 3 - (2 + (1 + 1))
 - * / 15 - 7   2   3 + 2 + 1 1 = 15 / (7 - 2) * 3 - (2 + (1 + 1))
 - * / 15     5     3 + 2 + 1 1 = 15 / 5 * 3 - (2 + (1 + 1))
 - *        3       3 + 2 + 1 1 = 3 * 3 - (2 + (1 + 1))
 -          9         + 2 + 1 1 = 9 - (2 + (1 + 1))
 -          9         + 2   2   = 9 - (2 + 2)
 -          9         4         = 9 - 4
                5               = 5

Польская нотация в логике

Таблица, приведенная ниже, демонстрирует ядро записи предложенной Яном Лукасевичем для пропозициональной логики. Некоторые буквы Польской записи означают конкретные слова на польском языке:

Понятие Условная
нотация
Польская
нотация
Польское
слово
Отрицание \negφ negacja
Конъюнкция φ\wedgeψ Kφψ koniunkcja
Дизъюнкция φ\orψ Aφψ alternatywa
Импликация φ\rightarrowψ Cφψ
Эквиваленция φ\leftrightarrowψ Eφψ ekwiwalencja
Штрих Шеффера \phi |\psi Dφψ dysjunkcja
Возможность \Diamondφ możliwość
Необходимость \Boxφ
Квантор всеобщности \forallφ Πφ
Квантор существования \existsφ Σφ

Заметим, что в работе Лукасевича о многозначной логике кванторы упорядочены по пропозициональной ценности.

См. также

Примечания

  1. Church Alonzo Introduction to Mathematical Logic. — Princeton, New Jersey: Princeton University Press, 1944. — p.38: «Worthy of remark is the parenthesis-free notation of Jan Łukasiewicz. In this the letters N, A, C, E, K are used in the roles of negation, disjunction, implication, equivalence, conjunction respectively. …»

Литература

  • Łukasiewicz Jan Aristotle’s Syllogistic from the Standpoint of Modern Formal Logic. — Oxford University Press, 1957.
  • Łukasiewicz, Jan, «Philosophische Bemerkungen zu mehrwertigen Systemen des Aussagenkalküls», Comptes rendus des séances de la Société des Sciences et des Lettres de Varsovie, 23:51-77 (1930). Translated by H. Weber as «Philosophical Remarks on Many-Valued Systems of Propositional Logics», in Storrs McCall, Polish Logic 1920—1939, Clarendon Press: Oxford (1967).

Ссылки

  • Ambi — расширяемый браузерный калькулятор ОПЗ Дэвида Праттена.

Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "Польская нотация" в других словарях:

  • Обратная польская нотация — (ОПН) (Обратная польская запись, Обратная бесскобочная запись (ОБЗ), Постфиксная нотация, Бесскобочная символика Лукашевича, Польская инверсная запись, Полиз) форма записи математических выражений, в которой операнды расположены перед знаками… …   Википедия

  • Обратная польская запись — Префиксная нотация Инфиксная нотация Постфиксная нотация …   Википедия

  • Калькулятор — У этого термина существуют и другие значения, см. Калькулятор (значения). Современный инженерный калькулятор Калькулятор …   Википедия

  • Микрокалькулятор — Современный инженерный калькулятор Калькулятор (лат. calculator): Электронное вычислительное устройство для выполнения операций над числами или алгебраическими формулами; Компьютерная программа, эмулирующая функции калькулятора.… …   Википедия

  • Стековый язык — программирования (англ. stack oriented programming language)  это язык программирования, в котором для передачи параметров используется машинная модель стека. Этому описанию соответствует несколько языков, в первую очередь Forth и… …   Википедия

  • S-выражение — Термин S выражение или sexp (для символического выражения) относится к соглашению о способе записи полуструктурированных данных (англ.) в доступной для человеческого понимания текстовой форме. Символические выражения создаются, в основном,… …   Википедия

  • Список статей по логике —   Это служебный список статей, созданный для координации работ по развитию темы.   Данное предупреждение не ус …   Википедия

  • ОПН — острая почечная недостаточность Словарь: С. Фадеев. Словарь сокращений современного русского языка. С. Пб.: Политехника, 1997. 527 с. ОПН острая печёночная недостаточность мед. Словарь: С. Фадеев. Словарь сокращений современного русского языка. С …   Словарь сокращений и аббревиатур

  • Операция (программирование) — У этого термина существуют и другие значения, см. операция. Операция конструкция в языках программирования, аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий. Наиболее часто применяются… …   Википедия

  • ГРЕЦИЯ ЧАСТЬ II — Архитектура Рассмотрение процесса развития греч. церковного зодчества по территориальному признаку достаточно условно и не учитывает целого ряда не только периферийных, но и центральных явлений. Для Г., с ее богатой античной и средневек.… …   Православная энциклопедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»