Essa pergunta é inspirada em outra pergunta sobre o que há de novo no PFDS desde a publicação do livro de Okasaki em 1998 .
Vou começar com duas perguntas que tenho:
- Existe uma estrutura de dados de conjunto puramente funcional que se aproxima da velocidade das tabelas de hash? Tentativas ainda não estão lá.
- Existem árvores de dedos puramente funcionais com O (1) anexado? O melhor até agora é O (lg lg n), desenvolvido por Kaplan e Tarjan.
Que outros problemas de estrutura de dados puramente funcionais estão abertos?
Respostas:
Vou interpretar a questão de maneira um tanto liberal. Para estruturas de dados no estilo Okasaki, a memorização é uma forma de mutação implícita que afeta o tempo de execução. Portanto, levarei a questão a se referir a estruturas de dados persistentes no sentido estrito, em vez de estruturas de dados com uma implementação puramente funcional, que é um subconjunto da primeira. Por estrito, quero dizer que você deve acessar versões mais antigas de uma estrutura de dados sem penalidade, a árvore de versões pode ramificar-se arbitrariamente etc.
Nesse contexto, considero o persistente UNION-FIND um importante problema em aberto. Há o artigo de Conchon-Filliâtre que foi mencionado no outro tópico. Um comentarista já levantou um problema com a chamada matriz persistente: é realmente apenas semi-persistente. Mas suponha que você o substitua por um hash trie ou algum outro array verdadeiramente persistente que se comporte melhor no pior caso (e sem dúvida médio), mas pior no melhor caso. Isso ainda deixa uma questão importante em aberto:
O artigo fornece uma prova formal de correção no Coq. Mas eles falham em abordar a complexidade amortizada formal ou informalmente. É muito não claro para mim que a complicada por trás das cenas de mutação resulta na complexidade amortizado esperado em todos os casos. Quando pensei pela última vez sobre isso, senti-me um pouco confiante de que poderia construir um contra-exemplo se me esforçasse. Mesmo que eu esteja errado sobre essa última parte, a falta de uma análise adequada é uma grande lacuna; é claro que a análise clássica de amortização de Trajan do UNION-FIND não é transferida diretamente.
fonte
Aqui está um:
Qual é o equivalente puramente funcional de uma tabela de hash fraca?
fonte