Sumário Desenvolvendo uma árvore binária de pesquisa. . . . . . . . . . . . . A interface da árvore binária de pesquisa . . . . . . . . . . . . . . Estrutura de dados para a implementação ligada . . . . . . . . . . . Análise de complexidade das árvores binárias de pesquisa . . . . . . Análise descendente recursiva e linguagens de programação . . . . . . Introdução a gramáticas . . . . . . . . . . . . . . . . . . . . . . Reconhecendo, analisando e interpretando frases em uma linguagem Análise lexical e o scanner . . . . . . . . . . . . . . . . . . . . . Estratégias de análise. . . . . . . . . . . . . . . . . . . . . . . . Uma implementação de array de árvores binárias. . . . . . . . . . . . Implementando heaps . . . . . . . . . . . . . . . . . . . . . . . . .
CAPÍTULO 11
. . . . . . . . . . .
. . . . . . . . . . .
xi
Conjuntos e dicionários . . . . . . . . . . . . . . . . . . . . 317 Usando conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A classe set do Python . . . . . . . . . . . . . . . . . . . . . . . . . . Uma sessão de exemplo com conjuntos . . . . . . . . . . . . . . . . . Aplicações dos conjuntos . . . . . . . . . . . . . . . . . . . . . . . . Relacionamento entre conjuntos e sacolas . . . . . . . . . . . . . . . . Relacionamento entre conjuntos e dicionários . . . . . . . . . . . . . . Implementações dos conjuntos . . . . . . . . . . . . . . . . . . . . . Implementações de conjuntos baseadas em array e ligadas. . . . . . . . . A classe AbstractSet . . . . . . . . . . . . . . . . . . . . . . . . . . A classe ArraySet . . . . . . . . . . . . . . . . . . . . . . . . . . Usando dicionários . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implementações baseadas em array e ligadas dos dicionários . . . . . . . A classe Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . A classe AbstractDict . . . . . . . . . . . . . . . . . . . . . . . . . A classe ArrayDict . . . . . . . . . . . . . . . . . . . . . . . . . . Análise de complexidade das implementações baseadas em array e ligadas dos conjuntos e dicionários . . . . . . . . . . . . . . . . . . Estratégias de hashing . . . . . . . . . . . . . . . . . . . . . . . . . . O relacionamento das colisões com a densidade . . . . . . . . . . . . . Hashing com chaves não numéricas . . . . . . . . . . . . . . . . . . . Sondagem linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sondagem quadrática . . . . . . . . . . . . . . . . . . . . . . . . . Encadeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Análise de complexidade . . . . . . . . . . . . . . . . . . . . . . . . Implementação de hashing de conjuntos . . . . . . . . . . . . . . . . . . Implementação de hashing de dicionários . . . . . . . . . . . . . . . . . Conjuntos e dicionários ordenados . . . . . . . . . . . . . . . . . . . .
CAPÍTULO 12
291 292 294 299 300 300 302 302 303 307 309
318 319 320 320 320 321 321 321 322
323 324 325 325 326
328 330 330 331 333 334 336 337 338 344 347 349
Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Por que usar grafos? . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Fundamentos de Python_estruturas de dados_miolo.indb 11
22/02/2022 10:36:58