함수형 프로그래밍이 동적 트리를 연구하지 않은 이유는 무엇입니까?


19

동적 트리는 네트워크 흐름, 동적 그래프, 조합 문제 (Tarjan 및 Werneck의 "실제 동적 트리") 및 최근에 사전 병합 (Adam Karczmarz의 "단순 병합 가능한 사전")과 같은 문제를 해결하는 데 중요한 역할을합니다.

동적 트리 란 1983 년 Sleator & Tarjan의 논문 "동적 트리에 대한 데이터 구조"에 정의 된 정의를 참조합니다. 그 이후로 기능 프로그래밍 연구 영역 내에는 거의 노력이 발표되지 않았습니다.

  1. Edward Kmett는 주로 C ++ 대응의 번역으로 ST 트리 버전을 구현했습니다 ( 링크 컷 트리 참조) .
  2. Chris Okasaki는 유명한 책 "순전히 기능적인 데이터 구조"에서 Splay 트리를 제한적으로 구현했습니다.
  3. Ralf Hinze와 Ross Paterson은 2-3 개의 핑거 트리라는 기능적 데이터 구조를 도입했지만 동적 트리의 원래 정의와는 약간 다른 목표를 가지고 있습니다.

동적 트리의 구현 (및 아마도 성능)은 세 가지 접근 방식에 따라 나뉩니다.

  1. ET 나무 (오일러 투어)가 큰 역할을하는 선형화. 순전히 기능적인 연구를 찾지 못했습니다.
  2. ST 나무가 주력 인 경로 분해는 Kmett 버전을 찾았습니다.
  3. 최상위 트리, 토폴로지 트리 및 RC 트리가 플레이어 인 트리 축소. 순전히 기능적인 연구를 찾지 못했습니다.

순전히 기능 분석 및 구현은 Splay, AVL, 레드-블랙 트리에서 찾을 수 있지만 동적 트리는 아닙니다. 전자는 후자의 그림자 (가상 또는 보조라고도 함) 데이터 구조로 간주됩니다.

그래서 내 질문은 :

Functional Programming 연구 커뮤니티가 동적 트리 데이터 구조에 참여하지 않는 이유 (단점, 약점)는 무엇입니까?


14
나는 공식 의견을 형성하기위한 권위있는 기능적 프로그래밍 커뮤니티위원회를 구성하지 않고 어떻게 이것이 가능한지 이해할 수 없다. 여기서 대답 할 수있는 것이 있도록 질문을 재구성 할 수 없습니까? 내가 알 수있는 한 OP는 Haskell 또는 그 밖의 다른 곳에서 동적 트리를 구현 한 다음 여기로 돌아와서 결국 완료되었다고보고해야합니다.
Andrej Bauer

@AndrejBauer로 업데이트 : OP가 사라져 Haskell에서 동적 트리를 구현했습니다 : arxiv.org/abs/1908.11105
jbapple

답변:


-1

"컴퓨터 과학에서 기능적 프로그래밍은 프로그래밍 패러다임입니다. 계산을 수학 함수의 평가로 취급하고 상태 및 변경 가능한 데이터의 변경을 피하는 컴퓨터 프로그램의 구조와 요소를 구축하는 스타일" -위키 백과

"상태 및 변경 가능한 데이터 변경"즉, "동적".

따라서 귀하의 질문은 왜 왼쪽이 옳지 않은지 묻는 것과 같습니다.


1
기능적 프로그램은 영구적 인 데이터 구조로 동적 데이터를 나타낼 수 있습니다. 이 문제는 특정 문제에 대한 영구 데이터 구조의 개발이 연구되지 않은 이유를 묻습니다. 문제는 의미가 있습니다.
Monica Monica
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.