콘텐츠로 이동

02 · 정수: 대표원과 동치관계

정수: 대표원과 동치관계

자연수 쌍 `(a,b)`로 `a-b`를 표현하고 서로 다른 쌍이 같은 정수일 수 있음을 이해합니다.

이 장을 읽기 전에

자연수의 재귀적 같음과 덧셈을 따라갈 수 있습니다.

이 장을 마치면
  • ‘정수: 대표원과 동치관계’의 수학적 정의를 자신의 말로 설명하기
  • 그 정의가 Python 데이터로 표현되는 방법 찾기
  • 실제 코드에서 작은 실행 과정을 예측하기
수학적 정의

`(a,b)`와 `(c,d)`는 `a+d=b+c`일 때 정확히 같은 정수를 나타내며 정수는 이 동치관계의 동치류입니다.

데이터 표현

`Integer`는 두 자연수를 저장합니다. `(3,1)`과 `(4,2)`는 다른 객체지만 모두 2를 뜻합니다.

Python 구현

`(a,b) ~ (c,d)` → `a + d == b + c` → `Integer.__eq__`

함께 읽을 구현과 테스트

peano/integer.py · tests/test_integer.py

수학적 정의

수학적 정의

(a,b)와 (c,d)는 a+d=b+c일 때 정확히 같은 정수를 나타내며 정수는 이 동치관계의 동치류입니다.

데이터 표현

데이터 표현

Integer는 두 자연수를 저장합니다. (3,1)과 (4,2)는 다른 객체지만 모두 2를 뜻합니다.

Python 구현

Python 구현

Integer.__eq__는 교차 합을 비교하고 normalize()는 공통 부분을 없애 (2,0) 같은 대표원을 고릅니다.

이 강의에서 사용하는 정확한 대응:

`(a,b) ~ (c,d)` → `a + d == b + c` → `Integer.__eq__`

실행 과정

실행 과정

정수 비교는 자연수 덧셈과 같음을 다시 사용하므로 로그에서 앞 장과의 연결이 보입니다.

실행 전 예측

두 쌍의 같음과 정규화된 대표원을 먼저 예측하세요.

실험 · 정수: 대표원과 동치관계 실행 전
⌘ / Ctrl + Enter
출력
먼저 예측을 적고 실행하세요.

테스트로 확인

테스트로 확인

테스트는 여러 대표원, 연산의 닫힘, 정규화를 확인합니다.

범위와 한계

범위와 한계

쌍 표현은 int보다 느리지만 몫 구조를 눈에 보이게 합니다.

‘정수: 대표원과 동치관계’의 구현을 올바르게 설명한 것은 무엇인가요?