Учётная запись Microsoft
- 1 year ago
- 0
- 0
По́льская нота́ция ( за́пись ), также известна как пре́фиксная нота́ция (запись), это форма записи логических , арифметических и алгебраических выражений. Характерная черта такой записи — оператор располагается слева от операндов . Если оператор имеет фиксированную арность , то в такой записи будут отсутствовать круглые скобки и она может быть интерпретирована без неоднозначности. Польский логик Ян Лукасевич изобрёл эту запись примерно в 1920 , чтобы упростить пропозициональную логику .
Алонзо Чёрч упоминал эту нотацию в своей классической книге по математической логике как достойную внимания систему нотации и даже противопоставлял экспозиции логических нотаций Альфреда Уайтхеда и Бертрана Рассела в Principia Mathematica .
Несмотря на то, что польская запись не используется в математике , она широко применяется в информатике .
В префиксной нотации сложение чисел 1 и 2 будет записано « » вместо записи « ». В более сложных выражениях операторы предшествуют операндам, но операнды сами могут быть нетривиальными выражениями, содержащими свои собственные операторы. Например, выражение, которое в традиционной инфиксной нотации записывается так:
в префиксной может быть записано как:
(или просто)
Так как любая простая арифметическая операция является бинарной, то её префиксное представление не может быть интерпретировано двояко, поэтому нет необходимости использовать скобки. В предыдущем примере в традиционной, инфиксной записи круглые скобки были необходимы, а теперь переместим их:
или вовсе удалим:
Это изменило смысл и результат вычисления всего выражения. Соответствующая префиксная запись такого выражения будет выглядеть следующим образом:
Вычисление вычитания задерживается до тех пор пока не будут считаны оба операнда (5 и результат перемножения 6 и 7). Как и в любой другой нотации, выражения находящиеся в глубине вычисляются первыми, но в польской записи глубина выражения определяется порядком, а не скобками.
Префиксная запись в простой арифметике представляет в значительной степени академический интерес. Как и постфиксная запись , префиксная нотация была использована для некоторых коммерческих вычислительных машин (HP-11С). Изучение префиксной записи часто является первым шагом в области конструирования компиляторов.
Префиксная запись широко применяется в s-выражениях в языке программирования Лисп , где скобки необходимы, поскольку арифметические операторы обладают различной арностью . Язык программирования использует польскую запись для арифметических операций и структуры программы. Постфиксная запись используется во многих стековых языках , таких как PostScript , и является основой для многих вычислительных машин (калькуляторов), особенно для вычислительных машин Hewlett-Packard .
Также важно отметить, что количество операндов в выражении должно быть на один больше чем количество операций, иначе выражение не имеет смысла (учитывая, что в выражении используются только бинарные операции ). Этому можно легко не придавать значения при работе с длинными, сложными выражениями, что повлечёт за собой ошибки. Поэтому необходимо обращать внимание на количество операций и операндов при использовании префиксной нотации.
Порядок операций определяется структурой префиксной нотации и может быть легко определён. Главное, нужно помнить, что при вычислении выражения порядок операндов нужно сохранять. Это не важно для операций, которые обладают свойством коммутативности , но для некоммутативных операций, таких как вычитание и деление , этот факт является ключевым для анализа выражения. Например, следующее выражение:
нужно прочесть, как «деление 10 на 5». Поэтому результатом вычисления будет 2, а не 0,5, что было бы результатом неправильного анализа выражения.
Префиксная запись особенно популярна в стековых языках благодаря свойственной им возможности легко различать порядок операций без использования скобок. Для выявления порядка вычисления операторов в префиксной нотации даже нет необходимости запоминать всю операционную иерархию, как при инфиксной нотации . Вместо того, чтобы анализировать выражение для обнаружения оператора, который нужно вычислить первым, нужно считывать выражение слева направо, рассматривая оператор и ближайшие к нему два операнда. Если среди этих операндов находится ещё один оператор, то вычисление первого оператора откладывается , до тех пор, пока не будет вычислен новый оператор. Итерации этого процесса повторяются до тех пор, пока оператор не будет вычислен, что должно в конечном счёте произойти, если в выражении количество операндов на один больше, чем количество операций (в случае бинарных операций). Как только оператор вычислен, он и его два операнда заменяются полученным значением (операндом). Поскольку оператор и два операнда заменяются на вычисленный операнд, то становится на один оператор и один операнд меньше. После этого в выражении также остаётся операторов и операнд, что позволяет итеративно продолжать процесс.
В приведённом ниже примере можно увидеть, что сложное на первый взгляд выражение в префиксной нотации, на самом деле оказывается не таким уж сложным для понимания (справа от знака равенства соответствующее выражение в инфиксной записи):
- * / 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
Таблица, приведённая ниже, демонстрирует ядро записи предложенной Яном Лукасевичем для пропозициональной логики . Некоторые буквы Польской записи означают конкретные слова на польском языке :
Понятие |
Условная
нотация |
Польская
нотация |
Польское
слово |
---|---|---|---|
Отрицание | φ | Nφ | negacja |
Конъюнкция | φ ψ | Kφψ | koniunkcja |
Дизъюнкция | φ ψ | Aφψ | alternatywa |
Импликация | φ ψ | Cφψ | |
Эквиваленция | φ ψ | Eφψ | ekwiwalencja |
Штрих Шеффера | Dφψ | dysjunkcja | |
Возможность | φ | Mφ | możliwość |
Необходимость | φ | Lφ | |
Квантор всеобщности | φ | Πφ | |
Квантор существования | φ | Σφ |
Заметим, что в работе Лукасевича о многозначной логике кванторы упорядочены по пропозициональной ценности.