헤라다리히 피니트 자료형 순위와 역순위 함수
이 논문은 일반적인 트리 구조를 기반으로 unfold와 fold를 특수화한 뒤, 헤라다리히 피니트 집합·함수·순열 등에 대한 순위(랭킹)와 역순위(언랭킹) 함수를 자연수 인코딩으로 구현한다. Ackermann 인코딩, 다양한 페어링·튜플링 함수, Lehmer 코드와 factoradic을 이용한 순열 인코딩을 Haskell 코드와 함께 제시한다.
저자: ** Paul Tarau (University of North Texas, Department of Computer Science, Engineering) **
본 논문은 함수형 프로그래밍, 특히 Haskell을 이용해 헤라다리히 피니트(Hereditarily Finite, HF) 자료형들의 순위(ranking)와 역순위(unranking) 문제를 체계적으로 탐구한다. 핵심 아이디어는 일반적인 트리 구조 T (a = atom, F = forest)를 정의하고, 자연수를 트리로 변환하는 unrank 와 트리를 자연수로 변환하는 rank 를 각각 anamorphism과 catamorphism으로 구현하는 것이다. 이때 변환 함수 f 와 그 역함수 g 가 전단사이면 unrank 과 rank 는 서로 역함수가 되며, 재귀 호출이 유한 단계에서 종료된다는 명제를 제시한다.
첫 번째 사례로 Ackermann가 1937년에 제시한 헤라다리히 피니트 집합(HFS)과 자연수 사이의 전단사 hfs2nat 과 nat2hfs 을 다룬다. Ackermann 인코딩은 집합을 2의 거듭제곱 합으로 표현하는 set2nat 과 nat2set 을 이용한다. Haskell 구현에서는 rank 와 unrank 에 set2nat, nat2set 을 매개변수로 전달함으로써 HFS와 자연수 사이의 변환을 간결히 표현한다. 이를 통해
원본 논문
고화질 논문을 불러오는 중입니다...
댓글 및 학술 토론
Loading comments...
의견 남기기