개발하자
파이썬에서 음의 무한대를 구현하는 방법은?
Cuire
2023. 1. 4. 19:46
반응형
파이썬에서 음의 무한대를 구현하는 방법은?
나는 힙 정의 우선순위 큐를 구현하려고 하는데, 알고리즘은 CLRS 책 6장에 있다. 유사 코드는 다음과 같습니다:
Max_Heap_Insert(A, key):
A.heap_size = A.heap_size + 1
A[A.heap_size] = -∞
Heap_Increase_Key(A, A.heap_size, key)
제 질문은 파이썬을 사용하여 -pythen을 어떻게 정의할 수 있습니까?
마침 파이썬 2에서 는 어떤 정수보다 작기 때문에 당신은 사용할 수 있다. 파이썬 3에서는 (적어도) 네 가지 선택이 가능하다:
- 최소(A) - 1을 사용합니다.
- 를 사용하고 두 값을 비교할 때마다 값을 명시적으로 검정합니다.
- 정수 또는 -값으로 구성되고 비교를 올바르게 처리하는 새 데이터 유형을 정의합니다.
- 라인 2가 제거되도록 알고리즘을 수정합니다. 어떻게든 패치를 해야 할 것이다.
파이썬은 특별한 값을 가지고 있다.
제가 직접 힙 구현 작업을 하던 중 우연히 이것을 발견했습니다. :)
Python 3.5부터는 수학 모듈의 inf 상수를 사용할 수 있습니다
from math import inf
inf + inf # inf
inf - inf # nan
inf / inf # nan
inf * inf # inf
max(list(range(1_000_000)) + [inf]) # inf
min(list(range(-1_000_000, 1)) + [-inf]) # -inf
나는 이것을 몰랐고 동일한 주문 속성을 얻기 위해 사용자 지정 클래스를 사용했습니다
class MinusInf:
def __gt__(self, other):
return False
def __ge__(self):
return False
def __lt__(self, other):
return True
def __le__(self, other):
return True
def __eq__(self, other):
return False
minus_inf = MinusInf()
minus_inf >= -1_000_000 # False
이것은 힙의 목적을 위해 작동하지만 권장되는 방법은 그냥 사용하는 것이다(또는 numpy의 inf 상수).
수학 라이브러리를 사용하여 다음 작업을 수행할 수 있습니다:
import math
a = -math.inf
반응형