logo

줄리아에서 무한 배열 사용하는 법 📂줄리아

줄리아에서 무한 배열 사용하는 법

개요

InfiniteArrays.jl는 무한한 사이즈의 배열을 사용할 수 있게 해주는 패키지1로써, 사실 레이지 어레이lazy Array와 많은 연관이 있다. 느긋한 계산lazy Evaluation이란 배열에 어떤 것을 계산해야하는지는 알고있되, 정말로 필요하기 전까지는 계산을 미루는 방식이라 보면 된다. 물론 컴퓨터는 무한을 이해할 수 없지만, 이러한 방식을 사용해서 컴퓨터에서도 무한 배열을 구현한 것이다.

코드

julia> using InfiniteArrays

julia> 3141592 < ∞
true

julia> Inf == ∞
true

julia> Inf === ∞
false

InfiniteArrays.jl를 불러와보면 우선 기호로 무한을 표현할 수 있게 된다. 굳이 패키지를 꺼내지 않더라도 Inf로 무한을 표현할 수 있지만 조금 더 직관적으로 사용할 수 있게 된 것이다. 이들은 대소관계 비교에 있어서는 똑같이 무한의 크기를 가지지만 포인터로 보면 서로 달라 구분할 수 있다.

ℵ₀

julia> x = zeros(Int64, ∞);

julia> length(x)
ℵ₀

0으로 채워진 무한배열을 만들면 이는 무한가산집합이므로 그 크기는 알레프 제로 $\aleph_{0}$ 다.

평범하게 사용할 수 있다

julia> x[2] = 3; x[94124843] = 7; x
ℵ₀-element LazyArrays.CachedArray{Int64, 1, Vector{Int64}, Zeros{Int64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}} with indices OneToInf():
 0
 3
 0
 0
 0
 0
 0
 0
 0
 ⋮

julia> sum(x)
10

무한배열이라고 해서 뭐 엄청나게 인터페이스가 달라지는 건 없다. 그냥 평상시에 다루던 배열처럼 다루면 생각한대로 작동할 것이다.

전체코드

using InfiniteArrays

3141592 < ∞
Inf == ∞
Inf === ∞

x = zeros(Int64, ∞);
length(x)

x[2] = 3; x[94124843] = 7; x
sum(x)

환경

  • OS: Windows
  • julia: v1.7.3