Dicionário de Algoritmos e Estruturas de Dados (Dictionary of Algorithms and Data Structures)
(xlinux.nist.gov)- Dicionário online que reúne e organiza algoritmos, técnicas algorítmicas, estruturas de dados, problemas clássicos e definições relacionadas
- Inclui verbetes de algoritmos, com funções comuns como Ackermann's function
- Inclui verbetes de problemas clássicos, como traveling salesman e Byzantine generals
- Alguns verbetes oferecem links para implementação (implementation) e informações adicionais; os verbetes são organizados em índices por área (area) e tipo (type)
- Foca em algoritmos e estruturas de dados “gerais (general)”, excluindo áreas específicas como business data processing, AI e graphics
Visão geral do site e entidade responsável
- Hospedado pela Software and Systems Division, parte do Information Technology Laboratory do NIST
- O desenvolvimento do dicionário começou em 1998, sob a edição de Paul E. Black
- Formato de dicionário que aborda algoritmos, técnicas algorítmicas, estruturas de dados, problemas clássicos e definições relacionadas
Composição dos verbetes
- Os verbetes de algoritmos incluem funções comuns como Ackermann's function
- Os verbetes de problemas incluem traveling salesman e Byzantine generals
- Alguns verbetes oferecem links para implementação (implementation) e informações adicionais
- As páginas de índice listam os verbetes por área (area) e por tipo (type)
- O two-level index tem tamanho total de download equivalente a 1/20 desta página
Orientações de uso
- Proíbe o uso com finalidade de trapaça (cheat); professores são orientados a entrar em contato caso precisem de ajuda
- Sugestões, correções e comentários devem ser enviados a Paul Black
Escopo não coberto
- Atualmente, algoritmos especializados nas seguintes áreas não estão incluídos
- business data processing, communications, operating systems ou distributed algorithms
- programming languages, AI, graphics, numerical analysis
- O escopo é limitado porque apenas algoritmos e estruturas de dados “gerais (general)” já são difíceis o suficiente de cobrir
Índice e observações
- Termos com variáveis prefixadas, como n-way, m-dimensional e p-branching, são classificados sob o verbete k-
- É possível encontrar verbetes úteis em A Glossary of Computer Oriented Abbreviations and Acronyms
1 comentários
Comentários no Hacker News
Posts antigos relacionados:
Dictionary of Algorithms and Data Structures (1998) - https://news.ycombinator.com/item?id=12758176 - outubro de 2016 (18 comentários)
Dictionary of Algorithms and Data Structures - https://news.ycombinator.com/item?id=8905348 - janeiro de 2015 (4 comentários)
Dictionary of Algorithms and Data Structures - https://news.ycombinator.com/item?id=5525893 - abril de 2013 (15 comentários)
Dictionary of Algorithms and Data Structures - https://news.ycombinator.com/item?id=2496539 - abril de 2011 (16 comentários)
Dictionary of Algorithms and Data Structures - https://news.ycombinator.com/item?id=2351074 - março de 2011 (1 comentário)
Eu queria gostar deste material, mas, entre as coisas que conheço, faltam a Fenwick tree e o algoritmo/estrutura de dados union-find
O primeiro lugar em que vi Fenwick tree foi aqui: https://www.youtube.com/watch?v=uSFzHCZ4E-8&t=479s
Acho que vi union-find aqui: https://www.youtube.com/watch?v=PGZ64ob440I
Mas, pelo que lembro, era uma implementação com dicionário/hashmap, não com um array de tamanho fixo
Entre as que me vêm à cabeça de imediato e que não encontrei estão decomposição por raiz quadrada, heavy-light decomposition e consultas de mínimo em intervalo (Range Minimum Query) em geral. Pessoalmente, considero consultas de mínimo em intervalo uma das minhas classes favoritas de problemas gerais, e, como conjunto de técnicas em que vale a pena investir tempo e foco, acho muito mais interessante do que ordenação
A estrutura de dados union-find costuma ser apresentada com arrays fixos, porque assim a análise do algoritmo fica um pouco mais interessante. Se o custo de busca passar de O(1), a parte interessante da análise acaba ficando encoberta. Claro que a estrutura de dados em si funciona bem de qualquer forma
É um ótimo material, mas eu gostaria que as aulas de estruturas de dados e algoritmos focassem mais em aplicações
Mais do que simplesmente saber o que algo é, estou mais interessado em saber por que é útil e em que contexto devo recorrer a isso
Ainda não sou especialista, então não é um material autoritativo, mas pode ser interessante: https://sebinsua.com/algorithmic-bathwater#what-kind-of-prob...
Um verbete que chama a atenção: Marlena
https://xlinux.nist.gov/dads/HTML/marlena.html
Alguém sabe o que isso significa?
Este verbete também faz referência a esse nome: https://xlinux.nist.gov/dads/HTML/antisymmetric.html
Não sei se uma lista de algoritmos em ordem alfabética é um bom ponto de partida para quem está aprendendo
Para quem está começando agora ou quer realmente dominar o assunto, acho que este livro clássico é o caminho padrão.[1]
Se o objetivo é crescer como desenvolvedor e passar em entrevistas de programação da FAANG, talvez este seja o melhor ponto de alavancagem
[1] https://books.google.com/books/about/Introduction_To_Algorit...
Fico me perguntando como fazer uma busca reversa nesta lista
Por exemplo, às vezes consigo descrever mais ou menos como certo algoritmo funciona, mas não sei o nome, e quero saber se ele está nesta lista. Hoje em dia, talvez dê para escrever em pseudocódigo, mandar para o ChatGPT e perguntar o nome, mas, fora isso, não sei bem
Seria bom se aceitassem pull requests. Faltam verbetes básicos, como acceleration structure
É um material realmente muito legal. Espero que sobreviva a coisas como cortes de orçamento, e ele deveria ser arquivado