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.