Quais são alguns algoritmos de utilidade legítima que são simplesmente muito complexos para implementar?
Deixe-me esclarecer: não estou procurando algoritmos como o atual algoritmo de multiplicação de matriz assintótica ideal (Coppersmith-Winograd), que é razoável de implementar, mas tem uma constante que o torna inútil na prática. Estou procurando algoritmos que possam ter um valor prático plausível, mas que são tão difíceis de codificar que nunca foram implementados, apenas implementados em configurações extremamente artificiais ou implementados apenas para aplicativos de propósito especialmente extraordinário.
Também são bem-vindos algoritmos quase impossíveis de implementar, com bons assintóticos, mas provavelmente com desempenho real ruim.
fonte
Respostas:
Chazelle deu um algoritmo de tempo linear para triangular um polígono simples . Skiena escreveu (p.575, Manual de Projeto de Algoritmos) que é "suficientemente inútil implementar que se qualifique mais como prova de existência"
fonte
O algoritmo Risch para calcular antiderivadas elementares. Segundo a Wikipedia, nenhum pacote de software é conhecido por implementar o algoritmo completo devido à sua complexidade.
fonte
Qualquer algoritmo que use os resultados de Robertson-Seymour para inferir um algoritmo "polytime" para coisas que envolvam gráficos que excluem um menor fixo está pedindo problemas. A constante oculta em seu resultado é "galáctica".
fonte
O artigo tem 55 páginas e sua conclusão observa várias melhorias nas constantes que o autor não descreve por razões de espaço. Isso me faz suspeitar que talvez as constantes não sejam tão galácticas e que essa estrutura de dados seja de "utilidade legítima", principalmente porque já foi citada várias vezes.
fonte
O algoritmo de unificação de padrões de ordem superior de tempo linear por Qian nunca foi implementado devido à sua complexidade AFAIK.
fonte
Algoritmo de tempo linear para verificar se um gráfico pode ser incorporado em uma superfície fixa.
Ken-ichi Kawarabayashi, Bojan Mohar, Bruce A. Reed: Um algoritmo de tempo linear mais simples para incorporar gráficos em uma superfície arbitrária e o gênero de gráficos de largura de árvore limitada. FOCS 2008: 771-780.
Bojan Mohar: um algoritmo de tempo linear para incorporar gráficos em uma superfície arbitrária. SIAM J. Matemática Discreta. 12 (1): 6-26 (1999)
fonte
Não tenho certeza de quão útil poderia ser na prática (embora esteja pensando em dobrar e comparar proteínas, bem como na previsão da estrutura secundária do RNA), mas Wolfgang Haken deu o primeiro algoritmo de
tempopolinomial para decidir se um nó é um nó. loop simples ( Theorie der Normalflächen. Acta Math. 105, 1961, pp. 245-375). Pelo que me lembro, ainda é muito complicado para ser implementado todas essas décadas depois.Para acreditar na Wikipedia, vários outros algoritmos foram dados posteriormente, e "Compreender a complexidade desses algoritmos é um campo de estudo ativo".
fonte
Decomposição de árvores
e talvez montes de Fibonacci.fonte
A construção perfeita de hash ( https://en.wikipedia.org/wiki/Perfect_hash_function#Construction ) se aplicaria a qualquer caso de uso com chaves estáticas ou com alterações pouco frequentes (por exemplo, nomes de domínio de nível superior em roteadores, palavras-chave em compiladores ou nomes de funções em bibliotecas padrão), mas a última vez que olhei não consegui encontrar nenhuma implementação.
A pesquisa paramétrica pode resolver muitos problemas difíceis de otimização, incluindo alguns que podem parecer difíceis de NP, em tempo polinomial. O bem-nomeado trabalho de pesquisa paramétrica tornou os implementos práticos uma variante da pesquisa paramétrica, mas ainda não acho que tenha sido implementado em software prático.
fonte