모노이드(Monoid)
결합법칙(associativity)을 만족하는 연산과 항등원(identity element)을 갖춘 집합(set). 수의 덧셈과 곱셈, 문자열 이어 붙이기, 함수(function) 합성, 최댓값이 모두 모노이드이고, 범주(category)로 보면 대상이 하나뿐인 범주다.
문자열 '가'와 '나'를 이어 붙이면 '가나'입니다. 이어 붙이기는 순서가 중요해서 '가'+'나'와 '나'+'가'는 다르지만, 괄호는 중요하지 않습니다. ('가'+'나')+'다'와 '가'+('나'+'다')는 모두 '가나다'입니다. 그리고 빈 문자열 ''은 어디에 붙여도 아무것도 바꾸지 않습니다. 이 두 성질만 가진 구조가 모노이드(monoid)입니다. 집합 M과 M 위의 연산 ·, M의 원소(element) e가 있어서 M의 모든 a, b, c에 대해
가 성립하면 (M, ·, e)를 모노이드라 합니다. 군과 달리 되돌리는 원소(역원, inverse element)는 요구하지 않습니다. 이어 붙인 문자열을 원래대로 떼어 낼 '음의 문자열'은 없으니까요. 교환법칙(commutative law)도 요구하지 않습니다.
모노이드는 어디에나 있습니다. 0 이상의 정수(integer)와 덧셈(항등원 0), 자연수(natural number)와 곱셈(항등원 1), 참·거짓과 AND(항등원 참), 참·거짓과 OR(항등원 거짓), 0 이상의 정수와 최댓값(항등원 0. 실수(real number) 전체에서는 가장 작은 수가 없으므로 −∞를 덧붙여야 항등원이 생깁니다), n×n 행렬(matrix)과 행렬의 곱(항등원 단위행렬(identity matrix)), 집합 X에서 X로 가는 함수들과 합성(항등원 항등 함수)이 모두 모노이드입니다. 아닌 것도 있습니다. 뺄셈은 (5 − 3) − 1 = 1이지만 5 − (3 − 1) = 3이라 결합법칙이 깨집니다. 두 수의 평균(mean)도 (2와 4의 평균)과 8의 평균은 5.5인데 2와 (4와 8의 평균)의 평균은 4입니다. 양의 정수와 덧셈은 결합법칙은 지키지만 항등원 0이 없습니다. 결합법칙만 지키는 이런 구조를 반군(semigroup)이라 합니다. 아래 표에서 연산을 바꿔 가며 두 조건을 직접 확인해 보세요. 연산은
항등원은 있으면 하나뿐입니다. e와 e′이 둘 다 항등원이면
결합법칙은 계산을 나누어 맡길 수 있는 근거이기도 합니다. 아래는 여덟 개를 한 줄로 차례차례 계산하는 방식과, 둘씩 짝지어 나무 모양으로 계산하는 방식을 견준 것입니다. 연산
차례로 계산하면 일곱 번을 차례로 기다려야 하지만, 나무 모양이면 같은 높이의 계산을 동시에 할 수 있어 세 단계로 끝납니다. 연산 횟수는 두 방식 모두 일곱 번이고, 달라지는 것은 차례로 기다려야 하는 단계 수입니다. n개라면 n − 1단계 대
모노이드 사이의 준동형(homomorphism)은 연산과 항등원을 지키는 함수, 곧
알파벳 A의 글자로 만든 문자열 전체
범주의 눈으로 보면 모노이드는 대상이 하나뿐인 범주입니다. 대상 ★ 하나에 원소마다 화살표 ★ → ★ 하나를 두고, 합성을 연산으로, 항등 화살표(identity arrow)를 e로 두면 범주의 두 법칙(결합법칙, 항등 화살표)이 모노이드의 두 조건과 글자 그대로 같습니다. 모노이드 준동형은 이런 범주 사이의 함자이고, 거꾸로 어떤 범주에서든 한 대상 A에서 A로 가는 화살표들은 모노이드를 이룹니다. 그래서 범주를 '대상이 여럿이라 끝이 맞는 것끼리만 곱할 수 있는 모노이드'로 볼 수도 있습니다. 크기가 제각각인 행렬 전체가 꼭 그렇습니다. 같은 모노이드는 기계에서도 나옵니다. 유한 오토마톤(finite automaton)에서 글자 하나는 상태에서 상태로 가는 함수이고 문자열은 그 함수들의 합성이므로, 문자열들이 만드는 함수 전체가 모노이드를 이루고 상태가 유한하니 이 모노이드도 유한합니다. 거꾸로도 됩니다. 어떤 언어가 정규 언어(regular language)일 필요충분조건은, 문자열을 어떤 유한 모노이드로 보내는 준동형이 있어서 그 값만 보고 문자열이 언어에 속하는지 판정할 수 있는 것입니다.
이어지는 곳. 역원까지 있으면 군이 되어 대칭을 다룰 수 있습니다. 괄호 치기의 가짓수는 카탈랑 수로, 결합법칙 덕분에 나눠 계산하는 방법은 분할 정복으로 이어집니다. 대상이 하나인 범주라는 관점은 범주론(category theory)을 '여러 대상의 모노이드'로 읽게 해 주고, 모노이드의 결합법칙과 항등원이 한 층 위에서 다시 나타나는 것이 모나드라서 모나드의 법칙이 왜 그 모양인지가 여기서 보입니다. 자유 모노이드에서 시작하는 짝은 수반 함자의 가장 기본적인 예이고, 문자열 모노이드는 유한 오토마톤과 정규 표현식(regular expression)의 대수적 뼈대입니다. 곱을 합으로 바꾸는 준동형 로그와 넓이(area)의 배율을 곱으로 모으는 행렬식은 계산을 쉬운 모노이드로 옮기는 도구입니다. 문자열을 모노이드 연산으로 접는 자유 모노이드의 '하나뿐인 연장'은 시작 대수의 fold가 마침 모노이드 준동형이 되는 경우이고, 원소 대신 대상들을 모노이드처럼 곱하는 범주가 모노이드 범주입니다.
이 개념이 나오는 긴 글
이 개념 위에 세워진 것
이 개념을 언급하는 페이지
- 행렬의 곱
… 결합법칙 (AB)C = A(BC) 와 곱해도 그대로인 단위행렬이 있어서, n×n 행렬들은 곱셈에 대해모노이드를 이룹니다. 크기가 다른 행렬까지 모으면 m×n 행렬을 n에서 m으로 가는 화살표로 삼는 범주가 …
- 유한 오토마톤
… 발표했습니다. 대수 쪽에서 보면, 어떤 언어를 유한 오토마톤이 알아볼 수 있는 것은 그 언어의 구문모노이드(낱말을 이어 붙이는 연산을 언어가 구별하는 만큼만 남긴 모노이드)가 유한할 때와 정확히 같습니다. …
- 분할 정복
… 하고 +1, 이어서 ×3 하고 +4는 ×6 하고 +7). 이 잇기는 어떻게 묶어도 결과가 같으므로(모노이드), 앞뒤 반을 따로 계산해 잇기를 되풀이하면 일꾼이 충분할 때 약 \log n 단계에 끝납니다. ⟦상태 …
- 군
… 3의 역원이 될 −3이 자연수에 없으니까요. 이렇게 역원만 빠지고 결합법칙과 항등원은 갖춘 구조를모노이드라 합니다. 정수와 곱셈도 군이 아닙니다. 2의 역원 ½이 없습니다. 수 체계를 넓혀 온 역사는 역원이 …
- 범주론
… 그 대상으로 가므로 언제나 합성할 수 있습니다. 화살표들과 합성은 결합법칙과 항등원을 가진 연산, 곧모노이드입니다. 모든 화살표에 되돌리는 화살표가 있으면 군입니다. 군과 준동형. 대상이 군이고 화살표가 연산을 …
- 함자
… 멱집합으로 보내고 함수를 '상(image)을 구하는 함수'로 보내는 함자, 대상이 하나인 범주로 본모노이드사이의 준동형이 모두 함자입니다. 가역 행렬들의 곱셈 군에서 0이 아닌 실수들의 곱셈 군으로 가는 …
- 보편 성질: 곱, 쌍대곱, 극한
… 오른쪽 수반입니다. 곱과 함께 '함수들의 대상'까지 보편 성질로 정의하면 데카르트 닫힌 범주가 됩니다.자유 모노이드의 '하나뿐인 연장'도 보편 성질입니다. 순서에서의 곱과 쌍대곱은 불 대수의 AND·OR이자 ⟦집합의 …
- 수반 함자
… 자신이라는 사실입니다. 수반은 '가장 자유로운 것'을 정확히 말해 줍니다. 집합 S의 글자로 만든 문자열의모노이드S^* 에서 모노이드 M으로 가는 준동형은, S에서 M으로 가는 아무 함수와 정확히 하나씩 대응합니다. …
- 모나드
… T\eta = \mathrm{id} (한 겹 씌운 뒤 펴면 제자리)입니다. '모나드는 자기 함자 범주의모노이드일 뿐'이라는 말이 유명합니다. 매클레인의 1971년 교과서에 나오는 문장인데, 정확한 뜻은 …
- F-대수와 fold: 재귀와 귀납의 범주론
… 읽는 법은 생성함수와 카탈랑 수로 이어집니다. 목록 위의 fold가 모노이드 준동형이 되는 경우는모노이드의 foldMap에서, 재귀자의 타입이 귀납법이라는 것은 의존 타입과 증명 보조기에서 이어집니다.
- 모노이드 범주와 끈 그림
… 삼각형만 확인하면 괄호와 단위를 옮기는 모든 그림이 저절로 가환한다는 정합성 정리를 증명했습니다. 그래서모노이드에서 괄호를 생략하듯 A\otimes B\otimes C 라 써도 됩니다. '모노이드 범주'라는 이름은 …
- 반환
… 0, 1이 있어서 다음이 성립하면 (S, ⊕, ⊗, 0, 1)은 반환입니다. (S, ⊕, 0)은 교환하는모노이드입니다. 갈래를 모으는 순서와 묶음은 상관없고, 0('길 없음')을 모아도 달라지지 않습니다. (S, ⊗, …