Existe uma enciclopédia de algoritmos com estilo semelhante ao Manual de Matemática? Parece útil ter um grande número deles disponível em um só lugar. Eu sei que a arte da programação de computadores é considerada uma boa fonte, mas não parece enciclopédica nem instrutiva.
Nota do moderador
Estamos procurando respostas longas que forneçam alguma explicação e contexto. Não basta listar um livro: explique por que você está recomendando um livro ou recurso. Respostas que não explicam nada serão excluídas. Consulte Subjetivo bom, Subjetivo ruim para obter mais informações.
algorithms
Engenheiro Mundial
fonte
fonte
Respostas:
Não tenho certeza se é isso que você está procurando, mas o NIST possui o Dicionário de algoritmos e estruturas de dados . É um dicionário bastante abrangente para estruturas de dados e algoritmos (doh) e geralmente é um bom local para procurar quando encontro algo sobre o qual nunca ouvi falar antes.
fonte
O livro Skiena também é uma boa referência: http://www.algorist.com/
O livro aborda tudo, desde o background até diferentes áreas problemáticas (estruturas de dados, pesquisa / classificação, problemas gráficos, combinações / permutações / heurísticas) e até os problemas dos problemas P vs NP-complete.
A seção particularmente relevante do livro para esta pergunta é um catálogo de aproximadamente 70 a 75 algoritmos diferentes, os tipos de entradas que eles geralmente exigem, a descrição geral do problema que um determinado algoritmo resolve e exemplos específicos de aplicações (por exemplo, o seção sobre árvores de sufixo discute seu uso de tentativas e sua aplicabilidade a substring e pesquisa). Sempre que possível, o autor também identifica implementações existentes para várias linguagens comuns (c, c ++, Java e outras).
fonte
Estrutura e interpretação de programas de computador e a arte da programação de computadores são as mais próximas que eu já vi do que você procura.
O SICP percorre estruturas e algoritmos de dados comuns. Embora não seja enciclodédico, é muito bom cobrir uma ampla faixa de território em uma quantidade limitada de espaço.
O que pode ser dito sobre a arte da programação de computadores que ainda não foi. Tenha cuidado ao buscá-lo; você pode procurar um tópico específico e, horas depois, perceber que leu um volume de capa a capa. É uma ótima maneira de realmente levar sua programação para o próximo nível.
fonte
Cormen, Leiserson, Rivest, Stein - "Intodução a algoritmos"
fonte
Na faculdade de física, eu realmente gostei de receitas numéricas em C. É claro que não abrange todos os algoritmos, mas fornece excelentes explicações para muitos que são incrivelmente úteis nas ciências:
http://www.nr.com/
O livro aborda como resolver:
Equações lineares
Portanto, é tudo muito matemático, bom para os cientistas e para as pessoas que projetam mecanismos de física para jogos. E não apenas fornece os algoritmos, mas explica os porquês por trás deles, para que você possa usá-los corretamente. Não é o seu texto de codificação típico, mas exatamente o que você precisa quando precisa.
Eu confiei bastante nisso ao usar o método simplex em declive em multidimensões (uma caminhada na ameba) para análise de dados. Ainda tem minhas marcas de lápis. Ahh, bons tempos!
fonte
Se você está procurando uma "enciclopédia de algoritmos", seria difícil dar errado com a Enciclopédia de Algoritmos . Não posso dizer que li (a US $ 399, é barato para uma enciclopédia ), mas a sinopse parece promissora:
Alguém já citou o Manual de design de algoritmo de Steven Skiena , mas acho que ninguém mencionou ainda o site associado de Skiena, o Repositório de algoritmos de Stony Brook . A partir do site:
O livro é mais do que apenas um catálogo de algoritmos conhecidos; também é uma espécie de tutorial (no melhor sentido da palavra) sobre como decidir qual algoritmo usar para melhor se adequar ao seu problema e situação. O repositório, por outro lado, é de natureza mais enciclopédica. Ele não contém necessariamente muitos detalhes sobre como implementar cada algoritmo, mas explica o que o algoritmo faz e como ele funciona em geral, termos legíveis geralmente retirados do livro e fornece links para implementações reais de cada algoritmo. algoritmo.
fonte
O Rosetta Code Wiki é uma ótima coleção de implementações de algoritmos comuns em várias línguas. Não é totalmente acadêmico, mas bastante informativo e divertido de percorrer.
Em suas próprias palavras:
Sua principal vantagem sobre outros recursos (como o NIST Dictionary of Algorithms and Data Structures ) é que ele permite que você observe várias implementações para diferentes idiomas. O que pode ser útil para vários propósitos (comparar expressividade, verificar a viabilidade em um idioma ou outro, etc ...).
Por exemplo, a página QuickSort fornece (a partir de 07/10/2013) pelo menos 89 implementações.
fonte
Embora existam livros instrutivos excelentes e atemporais sobre o assunto, dificilmente acho que você encontrará essa enciclopédia.
Uma enciclopédia sobre matemática cobre milênios de pesquisa. Os algoritmos, por outro lado, mal são estudados por um século (falando em uma escala maior). Todo o campo da ciência da computação mal é entendido por qualquer pessoa e a maioria das coisas ainda está se movendo rapidamente. Se houvesse uma enciclopédia sobre isso agora, acho que você poderia jogar 90% pela janela em 10 a 20 anos. E dos 10% que vale a pena guardar mais da metade já foi impresso meio século atrás. As vastas partes do manual de matemática estarão atualizadas daqui a cem anos.
A matemática é pura e independente. Isso dificilmente se aplica ao "campo dos algoritmos". Na verdade, dificilmente pode ser pensado como um campo, porque um campo geralmente opera em um espaço de problema bem definido, enquanto os algoritmos na verdade operam apenas em um espaço de solução menos definido.
Portanto, se alguém compilar uma enciclopédia sobre algoritmos, não está realmente claro o que incluir, se você realmente deseja que seja abrangente. Teoria dos grafos? Álgebra Linear? Análise numérica?
No momento, o IMHO, o melhor recurso que cumpre o papel de uma enciclopédia, é "a internet" (eis). O objetivo de uma enciclopédia é ter um repositório indexado, abrangente e pesquisável de conhecimento (em algum tópico). Pessoalmente, acho essa lista e essa lista bastante esmagadoras. Também em outras respostas, vários excelentes bancos de dados de algoritmos foram vinculados.
Portanto, embora você não possa esperar o mesmo nível de qualidade que seria esperado de uma enciclopédia que enche sua estante de livros, você obtém o nível de pontualidade necessário para compensar os jovens da área que deseja conhecer.
fonte
Quanto a fontes existentes, acho que a Wikipedia é a coisa mais próxima do que você está procurando. A saber, pode ser útil criar um "modelo de algoritmo" mais definido na Wikipedia para esse fim, mas isso é algo a ser discutido com os editores da Wikipedia e não aqui.
Uma observação rápida sobre a arte da programação de computadores : quando estiver concluída, incluirá um volume "sumário" e, embora isso não o ajude agora, pode ser aproximadamente o que você está procurando. O TAOCP é enciclopédico pelo que abrange, mas ainda não está completo, e a personalidade de Knuth é tal que ele não inclui coisas a menos que as tenha pesquisado exaustivamente.
fonte