Quasigroups (유사군)
2022. 9. 23. 00:00ㆍCSharp/Functional Programming
반응형
추상대수학과 범주론에서 유사군은 왼쪽 나눗셈과 오른쪽 나눗셈을 정의할 수 있는 이항 연산을 갖춘 대수 구조이다.
군의 개념의 일반화이다. (위키백과)
임이의 마그마에서 각 원소 에 대하여 다음을 만족하는 원소 p,q∈S 가 유일하게 존재하면 이것을 Quasigroups(유사군) 이라고 한다.
a∗p=b
q∗a=b
뺄셈은 Quasigroups 에 속한다.
Inversion (반전)
public void SubtractionIsInvertible(int a, int b)
{
var x = a - b;
var y = a + b;
Console.WriteLine(a - x == b);
Console.WriteLine(y - a == b);
}
No Identity
뺄셈은 항등원이 없다. 3 - 0 과 0 - 3 은 다른 값이기 때문이다.
그래서 뺄셈은 모노이드(Monoid)가 아니다
No associativity
마찬가지로 뺄셈은 연관 연산이 아니다.
(3-2)-1 은 0 이지만
3-(2-1) 은 2 이기 때문이다.
연산의 우선순위가 변하면 값이 변경되므로 이것은 semigroup 이 아니다.
물론 덧셈도 Inversion 특성이 있다.
public void AdditionIsInvertible(int a, int b)
{
var x = b - a;
var y = b - a;
Console.WriteLine(a + x == b);
Console.WriteLine(y + a == b);
Console.WriteLine(x == y);
}
덧셈은 Monoid 이면서 Quasigroups 이기도 하다
이진 연산이 Associativity 하거나 Identity 가 있다고 해서 Quasigroups 이 안되는 것은 아니다.
관련영상
반응형
'CSharp > Functional Programming' 카테고리의 다른 글
Monoid (0) | 2022.09.22 |
---|---|
Semigroup (2) | 2022.09.21 |
Magma (2) | 2022.09.20 |
순수 함수 (Pure Function) (0) | 2022.09.19 |
Expression, Method chaining with Extension methods (0) | 2022.09.16 |