폴란드 표기법
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
폴란드 표기법은 1924년 얀 우카시에비치가 괄호 없는 표기법을 고안하여 1929년부터 논리 논문에 사용한 표기법이다. 산술 및 논리 표현을 위한 전위 표기법으로, 연산자를 피연산자 앞에 위치시켜 괄호 없이도 연산 순서를 명확하게 나타낼 수 있다. 컴퓨터 과학 분야에서 Lisp, Tcl과 같은 프로그래밍 언어와 LDAP 필터 구문 등에 활용되며, 스택을 이용한 효율적인 계산이 가능하다.
더 읽어볼만한 페이지
- 폴란드의 발명품 - 역폴란드 표기법
역폴란드 표기법은 후위 표기법으로, 연산자를 피연산자 뒤에 표기하여 스택 자료 구조로 수식을 계산하며, 연산자 우선순위 없이 순차적으로 계산이 가능하고 계산기, 프로그래밍 언어 등에서 활용된다. - 폴란드의 발명품 - 육각형 체스
육각형 체스는 육각형 모양의 보드와 말을 사용하는 정통 체스의 변형 게임으로, 글린스키 육각 체스, 샤프란 육각 체스, 드 바사 육각 체스 등 다양한 종류가 있다. - 논리식 - 추론 규칙
추론 규칙은 전제가 참일 때 결론이 필연적으로 참임을 보이는 논리적 도출 과정을 형식적으로 표현한 규칙으로, 다양한 유형이 존재하며 명제 논리와 술어 논리에서 기본적인 추론을 수행하는 데 사용되고, 형식 체계의 핵심 요소이다. - 논리식 - 정리
정리는 논리학과 수학에서 공리를 바탕으로 증명된 참인 명제로서, "만약 A이면 B이다" 형태의 가정적 조건문으로 표현되며, 수학 외 다양한 분야에서도 사용되지만 수학에서의 엄밀한 증명과는 차이가 있다. - 수학 표기법 - 기수법
기수법은 수를 나타내는 방법 또는 체계로, 십진법을 비롯한 다양한 종류가 존재하며, 일진법, 명수법, 위치값 기수법 등으로 분류되고, 가장 널리 사용되는 십진법은 힌두-아라비아 숫자 체계를 기반으로 위치값 기수법의 발전과 0의 도입으로 수학적 계산의 효율성을 높였다. - 수학 표기법 - 중위 표기법
중위 표기법은 사람이 이해하기 쉬운 연산자 표기 방식이지만, 컴퓨터가 구문 분석하기 어렵고 연산 순서를 위해 괄호나 연산자 우선순위 규칙이 필요하다.
폴란드 표기법 | |
---|---|
개요 | |
정의 | 연산자가 피연산자 앞에 오는 수학 표기법 |
다른 이름 | 전위 표기법 폴란드식 표기법 (Polish notation) 우카시에비치 표기법 (Łukasiewicz notation) |
특징 | |
장점 | 괄호 없이 연산 순서를 명확히 할 수 있음 |
응용 분야 | 수리 논리학 컴퓨터 과학 |
예시 | |
일반 표기법 (중위 표기법) | (3 + 4) * 5 |
폴란드 표기법 (전위 표기법) | * + 3 4 5 |
계산 순서 | 1. 3 + 4 = 7 |
참고 사항 | |
관련 개념 | 역폴란드 표기법 (후위 표기법) 추상 구문 트리 |
2. 역사
얀 우카시에비치는 1924년에 괄호가 필요 없는 표기법에 대한 아이디어를 떠올렸고, 자신의 논문에서 이 표기법을 처음 사용했다. 우카시에비치가 인용한 참고 문헌은 폴란드어로 된 석판 인쇄 보고서인 듯하다. 우카시에비치의 해당 논문은 1965년 헨리 포고르젤스키에 의해 ''기호 논리 저널''에 게재되었다.
앨론조 처치는 수리 논리학에 관한 그의 책에서 이 표기법을 알프레드 노스 화이트헤드와 버트런드 러셀의 수학 원리의 논리적 표기 해석과 대조하며 표기 체계에서 주목할 가치가 있다고 언급했다.
우카시에비치는 1951년 저서 ''현대 형식 논리의 관점에서 본 아리스토텔레스의 삼단 논법''에서 괄호를 피하기 위해 함수 기호 앞에 함수 인자를 쓰는 것이 자신의 표기법의 원리이며, 1929년부터 자신의 논리 논문에서 이 표기법을 사용했다고 언급했다. 그는 예시로 알프레트 타르스키와 함께 쓴 1930년의 명제 계산에 관한 논문을 인용했다.
모세 쇤핀켈이 1924년에 이미 논리식에서 괄호를 제거하는 아이디어를 제시했고, 고틀로프 프레게는 1879년에 괄호 없는 개념 표기법 표기법을 제안했기에, 우카시에비치의 표기법이 최초는 아니었다.
폴란드 표기법은 더 이상 논리학에서 많이 사용되지는 않지만, 컴퓨터 과학 분야에서 활용되고 있다.
2. 1. 얀 우카시에비치의 발명
얀 우카시에비치는 1924년에 괄호가 필요 없는 표기법에 대한 아이디어를 떠올렸다고 한다. 그는 자신의 논문에서 이 표기법을 처음 사용했다. 우카시에비치가 언급한 참고 문헌은 폴란드어로 된 석판 인쇄 보고서인 것으로 보인다. 1931년에 출판된 우카시에비치의 논문은 1965년 헨리 포고르젤스키에 의해 ''기호 논리 저널''에 검토되었다.우카시에비치는 1951년 저서 ''현대 형식 논리의 관점에서 본 아리스토텔레스의 삼단 논법''에서 괄호를 피하기 위해 함수 기호 앞에 함수 인자를 쓰는 것이 자신의 표기법의 원리라고 설명했으며, 1929년부터 자신의 논리 논문에서 이 표기법을 사용해 왔다고 언급했다. 그는 알프레트 타르스키와 함께 쓴 1930년의 명제 계산에 관한 논문을 예시로 들었다.
앨론조 처치는 자신의 수리 논리학 책에서 이 표기법을 알프레드 노스 화이트헤드와 버트런드 러셀의 수학 원리에서의 작업과 비교하며 주목할 만한 표기법 시스템이라고 언급했다.
폴란드 표기법은 더 이상 논리학에서 많이 사용되지는 않지만, 컴퓨터 과학 분야에서 활용되고 있다.
2. 2. 초기 발전과 영향
얀 우카시에비치는 1924년에 괄호가 필요 없는 표기법에 대한 아이디어를 떠올렸고, 자신의 논문 610페이지 각주에서 이 표기법을 처음 사용했다. 1965년 헨리 포고르젤스키는 기호 논리 저널에 우카시에비치의 해당 논문을 게재하였다.모세 쇤핀켈이 1924년에 이미 논리식에서 괄호를 제거하는 아이디어를 제시했고, 고틀로프 프레게는 1879년에 괄호 없는 개념 표기법 표기법을 제안했기에, 우카시에비치의 표기법이 최초는 아니었다. 앨론조 처치는 자신의 수리 논리학 책에서 이 표기법을 알프레드 노스 화이트헤드와 버트런드 러셀의 수학 원리 작업과 비교하며 주목할 만하다고 언급했다.
우카시에비치는 1951년 저서 ''현대 형식 논리의 관점에서 본 아리스토텔레스의 삼단 논법''에서 괄호를 피하기 위해 함수 기호 앞에 함수 인자를 쓰는 것이 자신의 표기법 원리이며, 1929년부터 이 표기법을 사용했다고 언급했다. 그는 알프레트 타르스키와 함께 쓴 1930년 명제 계산에 관한 논문을 예시로 들었다.
폴란드 표기법은 논리학에서는 더 이상 많이 사용되지 않지만, 컴퓨터 과학 분야에서 중요한 위치를 차지하고 있다.
다음은 현대 논리학에서 얀 우카시에비치 표기법의 핵심을 보여주는 표이다.
개념 | 전통 표기법 | 폴란드 표기법 | 폴란드어 단어 |
---|---|---|---|
부정 | negacja|네가치아pl | ||
물질 함축 | implikacja|임플리카치아pl | ||
선언 | alternatywa|알테르나티바pl | ||
연언 | koniunkcja|콘이운크치아pl | ||
비연언 | dysjunkcja|디스이운크치아pl | ||
쌍조건자 | ekwiwalencja|에크비발렌치아pl | ||
전칭 양화사 | kwantyfikator ogólny|크반티피카토르 오굴니pl | ||
존재 양화사 | kwantyfikator szczegółowy|크반티피카토르 슈체구워비pl | ||
베룸 | prawda, prawdziwy|프라브다, 프라브지비pl | ||
폴숨 | fałsz, fałszywy|파우슈, 파우시비pl | ||
가능성 | możliwość|모쥘리보시치pl | ||
필연성 | konieczność|코니에치노시치pl |
폴란드 표기법은 산술 연산과 논리 연산에서 사용된다. 이 표기법은 연산자를 피연산자 앞에 위치시키는 전위 표기법의 한 형태이다.
3. 산술 및 논리에서의 폴란드 표기법
얀 우카시에비치는 산술 표현뿐만 아니라 논리 표현을 위해서도 폴란드 표기법을 사용하였다. 그는 명제 논리를 위한 표기법을 개발했는데, 이 표기법에서 몇몇 문자는 폴란드어 단어에서 따왔다.
3. 1. 산술 연산
Polish notation영어에서 기본적인 산술 연산은 연산자를 피연산자 앞에 쓰는 방식으로 표현한다. 예를 들어, "1 + 2"는 "+ 1 2"로 쓴다. 이 방식은 괄호 없이도 연산 순서를 명확하게 할 수 있다는 장점이 있다.
예를 들어, 중위 표기법으로 (5 - 6) × 7은 폴란드 표기법으로 다음과 같이 나타낼 수 있다.
: × - 5 6 7
이 식에서 곱셈 연산은 5 - 6 연산과 7이 계산될 때까지 미뤄진다. 폴란드 표기법은 가장 안쪽 표현식을 먼저 평가하는 원칙을 따르지만, 중위 표기법과 달리 괄호 대신 연산자와 피연산자의 순서로 이를 표현한다.
중위 표기법에서는 연산 순서를 바꾸려면 괄호가 필요하지만, 폴란드 표기법에서는 괄호 없이도 가능하다. 예를 들어, 5 - (6 × 7)은 폴란드 표기법으로 다음과 같이 표현된다.
: - 5 × 6 7
교환 법칙이 성립하지 않는 나눗셈이나 뺄셈 같은 연산에서는 피연산자의 순서가 중요하다. 예를 들어, ÷ 10 5는 "10을 5로 나눈다"는 의미로 해석되어 결과는 2가 된다.
3. 2. 논리 연산
얀 우카시에비치는 명제 논리를 위한 폴란드 표기법을 만들었다. 아래 표는 그의 표기법의 핵심을 보여준다. 표의 몇몇 문자들은 폴란드어 단어에서 따왔다.
개념 | 관례상의 표기법 | 폴란드 표기법 | 폴란드 단어 |
---|---|---|---|
부정 | negacja|네가치아pl | ||
논리곱 | koniunkcja|코니운크치아pl | ||
논리합 | alternatywa|알테르나티바pl | ||
물질 함축 | implikacja|임플리카치아pl | ||
쌍조건문 | ekwiwalencja|에크비발렌치아pl | ||
폴숨 | fałsz|파우슈pl | ||
부정논리곱 | dysjunkcja|디스이운크치아pl | ||
가능성 | możliwość|모쥘리보시치pl | ||
필연성 | konieczność|코니에츠노시치pl | ||
보편 양화사 | kwantyfikator ogólny|크반티피카토르 오굴니pl | ||
존재 양화사 | kwantyfikator szczegółowy|크반티피카토르 슈체구워비pl |
우카시에비치의 연구에서 양화사는 명제 값을 다룰 수 있었다.
유제프 마리아 보헨스키는 고전 명제 논리의 16가지 이진 연결 요소를 모두 포함하는 확장된 폴란드 표기법 체계를 도입했다. 이 체계는 고전 명제 논리에 대해 우카시에비치의 표기법과 호환된다. 하지만 보헨스키가 명제 논리에서 과 (비함축 및 역 비함축)을 사용하고, 우카시에비치가 양상 논리에서 과 을 사용한다는 점에서 표기법은 호환되지 않는다.
4. 컴퓨터 프로그래밍에서의 응용
전위 표기법은 Lisp의 S-표현식에서 괄호와 함께 널리 사용되었는데, 이는 Lisp에서 연산자가 데이터(일급 함수)이기 때문이다. Lisp 함수는 가변 인자일 수도 있다. Lisp와 마찬가지로 Tcl 프로그래밍 언어도 mathop 라이브러리를 통해 폴란드 표기법을 사용한다. Ambi 프로그래밍 언어는 산술 연산과 프로그램 구조를 위해 폴란드 표기법을 사용한다.
표현식의 반환 값 개수는 표현식 내 피연산자의 개수와 연산자의 전체 피연산자 개수에서 연산자의 반환 값의 전체 개수를 뺀 것과 같다.
4. 1. LISP
전위 표기법은 Lisp의 S-표현식에서 널리 사용되었는데, 이 언어의 연산자가 자체적으로 데이터(일급 함수)이므로 괄호가 필요하다. Lisp 함수는 가변 인자일 수 있다. Lisp와 마찬가지로 Tcl 프로그래밍 언어는 mathop 라이브러리를 통해 폴란드 표기법을 사용한다.폴란드 표기법에서는 연산자가 마치 함수 적용과 같은 형태를 띤다. 이를 직접 활용한 것이 LISP이며, LISP에서는 예를 들어 `+`도 `cons` 등과 마찬가지로 함수의 이름일 뿐이며, 함수와 똑같이 실제 인수 목록 앞에 둔다. 이는 C++의 연산자(대부분 중위 표기법)의 오버로드를 위해 `operator+`와 같은 특별한 구문을 사용하고 있는 것과는 대조적이다.
4. 2. 기타 프로그래밍 언어
Tcl은 Lisp와 유사한 프로그래밍 언어로, mathop 라이브러리를 통해 폴란드 표기법을 사용한다. Ambi는 산술 연산과 프로그램 구조를 위해 폴란드 표기법을 사용하는 프로그래밍 언어이다. CoffeeScript 문법 또한 전위 표기법을 사용해 함수를 호출할 수 있다.LDAP 필터 구문은 폴란드 접두사 표기법을 사용한다.
스택 지향 프로그래밍 언어인 PostScript 및 Forth와 같은 여러 언어에서 후위 표기법이 사용된다. 폴란드 표기법은 일반적으로 특정 계산기에서 선택되는 표기법으로, 특히 휴렛팩커드 계산기에서 후위 형식으로 사용된다.
4. 3. 알고리즘 및 구현
폴란드 표기법으로 작성된 표현식을 평가하는 핵심은 스택을 활용하는 것이다. 연산 순서는 전위 표기법 구조 내에서 이미 정해져 있으므로, 중위 표기법처럼 연산 순서를 별도로 기억할 필요가 없다.알고리즘 작동 방식 (왼쪽에서 오른쪽으로 읽는 경우):1. 표현식을 왼쪽에서 오른쪽으로 읽으면서, 연산자를 만나면 일단 보관한다.
2. 두 개의 피연산자를 찾을 때까지 읽기를 계속한다.
3. 다른 연산자가 나오면, 새로운 피연산자가 나올 때까지 이전 연산자를 보관한다.
4. 연산자와 두 피연산자가 모이면 연산을 수행하고, 결과를 새로운 피연산자로 취급한다.
5. 표현식의 끝까지 이 과정을 반복한다.
예시:
- ×÷15-7+1 1 3+2+1 1
이 표현식은 다음과 같이 계산된다.
1. -7+1 1 = -7 2 = 5
2. ÷15 5 = 3
3. ×3 3 = 9
4. +2+1 1 = +2 2 = 4
5. -9 4 = 5
스택을 이용한 전위 평가 구현 (오른쪽에서 왼쪽으로 읽는 경우, pseudo 코드):```
입력 전위 표현식을 오른쪽에서 왼쪽으로 읽는다.
각 심볼에 대해 다음을 반복한다:
{
만약 피연산자이면:
스택에 넣는다(push).
만약 연산자이면:
{
피연산자1 = 스택에서 꺼낸다(pop).
피연산자2 = 스택에서 꺼낸다.
결과 = 피연산자1 연산자 피연산자2 를 계산한다.
결과를 스택에 넣는다.
}
}
결과: 스택 최상단의 값이 최종 결과이다.
```
위 예제에 대한 알고리즘 적용 결과:
- ×÷15-7+1 1 3+2+1 1
토큰 | 액션 | 스택 | 비고 |
---|---|---|---|
1 | 피연산자 | 1 | 스택에 푸쉬 |
1 | 피연산자 | 1 1 | 스택에 푸쉬 |
+ | 연산자 | 2 | (1 + 1 = 2) 계산 후 스택에 푸쉬 |
2 | 피연산자 | 2 2 | 스택에 푸쉬 |
+ | 연산자 | 4 | (2 + 2 = 4) 계산 후 스택에 푸쉬 |
3 | 피연산자 | 3 4 | 스택에 푸쉬 |
1 | 피연산자 | 1 3 4 | 스택에 푸쉬 |
1 | 피연산자 | 1 1 3 4 | 스택에 푸쉬 |
+ | 연산자 | 2 3 4 | (1 + 1 = 2) 계산 후 스택에 푸쉬 |
7 | 피연산자 | 7 2 3 4 | 스택에 푸쉬 |
- | 연산자 | 5 3 4 | (7 - 2 = 5) 계산 후 스택에 푸쉬 |
15 | 피연산자 | 15 5 3 4 | 스택에 푸쉬 |
÷ | 연산자 | 3 3 4 | (15 ÷ 5 = 3) 계산 후 스택에 푸쉬 |
× | 연산자 | 9 4 | (3 × 3 = 9) 계산 후 스택에 푸쉬 |
- | 연산자 | 5 | (9 - 4 = 5) 계산 후 스택에 푸쉬 |
파싱:폴란드 표기법은 푸시다운 저장소를 이용하여 파싱할 수 있다. 유효한 전위 표현식은 항상 연산자로 시작하고 피연산자로 끝나며, 왼쪽에서 오른쪽으로 또는 그 반대로 평가할 수 있다.
LISP 에서의 활용LISP에서는 연산자가 함수 적용과 같은 형태를 띠며, `+`도 `cons` 등과 같이 함수의 이름일 뿐이며, 함수와 똑같이 실제 인수 목록 앞에 둔다.
5. 한국의 관점 및 현대적 의의
폴란드 표기법은 한국 사회와 과학 기술 발전에 직접적인 영향을 주지는 않았다. 그러나 간접적으로 컴퓨터 과학, 프로그래밍 언어, 계산기 설계 등의 분야에 영향을 미쳤다고 볼 수 있다.
현대 사회에서 폴란드 표기법은 프로그래밍 언어의 문법, 컴파일러 설계, 계산기 로직 등 다양한 분야에서 활용되고 있다. 특히, 함수형 프로그래밍 언어에서 폴란드 표기법과 유사한 전위 표기법을 사용하는 경우가 많다.
미래에도 폴란드 표기법은 컴퓨터 과학의 기초 이론으로서, 그리고 다양한 응용 분야에서 중요한 역할을 계속 수행할 것으로 예상된다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com