Eu tenho tentado ler “ Projeto Pérolas do algoritmo funcional ” e, posteriormente, “ A álgebra da programação ”, e há uma correspondência óbvia entre tipos de dados definidos recursivamente (e polinomialmente) e objetos combinatórios, com a mesma definição recursiva e, posteriormente, levando para a mesma série formal de poder (ou funções geradoras), como mostrado nas introduções a espécies combinatórias (eu li “ Espécies, Functors and Types, Oh My! ”).
Portanto, para a primeira pergunta, existe uma maneira de recuperar a equação geradora (recursiva) da série de potências? Isso é uma reflexão tardia.
Eu estava mais interessado na noção de álgebras iniciais e co-álgebras finais como um tipo de "definição de procedimentos sobre a estrutura de dados". Existem algumas regras práticas na programação funcional, relativas à composição, produtos de mapeamento entre álgebras e similares, descritas por exemplo neste tutorial. Parece-me que essa poderia ser uma maneira bastante poderosa de abordar a complexidade e, por exemplo, parece bastante simples recuperar o teorema do mestre em tal contexto (quero dizer, você precisa fazer o mesmo argumento, portanto, não há muito ganho neste caso), eo catamorfismo único da álgebra inicial e o fato (estou enganado?) de que as álgebras entre A e FA para o função polinomial F são isomórficas, parece-me que essa abordagem poderia ter muitos benefícios na análise da complexidade de operações sobre estruturas de dados.
Do ponto de vista prático, as regras de fusão (basicamente formas de compor morfismos de álgebra entre si, morfismos de coalgebra e morfismos gerais) são uma técnica de otimização muito poderosa para transformação e refatoração de programas. Estou certo ao pensar que a utilização completa dessas regras pode produzir um programa ideal (sem estruturas de dados intermediárias desnecessárias ou outras operações extras).
Estou em algo (e o que) aqui? É beneficiário (do ponto de vista da aprendizagem) tentar analisar a complexidade computacional dessa maneira? As estruturas, para as quais podemos ter álgebras iniciais "legais", são de alguma forma limitadas demais para alguns problemas?
Estou principalmente tentando encontrar uma maneira de pensar sobre a complexidade em termos da estrutura do espaço de pesquisa e a maneira como o "espaço de pesquisa" e o "algoritmo de pesquisa" interagem através de algum objeto "legal", como a álgebra inicial do functor e para entender se é útil tentar visualizar as coisas dessa maneira, ao olhar para estruturas mais complicadas.