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__`
함께 읽을 구현과 테스트
수학적 정의
수학적 정의¶
(a,b)와 (c,d)는 a+d=b+c일 때 정확히 같은 정수를 나타내며 정수는 이 동치관계의 동치류입니다.
데이터 표현
데이터 표현¶
Integer는 두 자연수를 저장합니다. (3,1)과 (4,2)는 다른 객체지만 모두 2를 뜻합니다.
Python 구현
Python 구현¶
Integer.__eq__는 교차 합을 비교하고 normalize()는 공통 부분을 없애 (2,0) 같은 대표원을 고릅니다.
이 강의에서 사용하는 정확한 대응:
실행 과정
실행 과정¶
정수 비교는 자연수 덧셈과 같음을 다시 사용하므로 로그에서 앞 장과의 연결이 보입니다.
실행 전 예측
두 쌍의 같음과 정규화된 대표원을 먼저 예측하세요.
실험 · 정수: 대표원과 동치관계
실행 전
⌘ / Ctrl + Enter
출력
먼저 예측을 적고 실행하세요.
테스트로 확인
테스트로 확인¶
테스트는 여러 대표원, 연산의 닫힘, 정규화를 확인합니다.
범위와 한계
범위와 한계¶
쌍 표현은 int보다 느리지만 몫 구조를 눈에 보이게 합니다.