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


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.