MAC323 - Estruturas de Dados
BCC - 1o. Semestre de 2001
Aulas
Março
- 2/3/2001 Discussão inicial. Ementa da disciplina, objetivos, conteúdo,
critério de avaliação.
- 6/3/2001 Estruturas de dados compostas. Matrizes como vetor de vetores,
alocação dinâmica [prog3.6.c, prog3.16.c]. Vetor de strings, ordenação de
strings, uso de
qsort()
e bsearch()
[prog3.17.c].
- 9/3/2001 Leitura de linhas de comprimento arbitrário [getline.h, getline.c].
Grafos, matriz de adjacência [prog3.18.c] e
representação com listas ligadas [prog3.19.c].
Discussão de um problema geométrico. Suponha que são
dados um inteiro
N
e um real d
com
0<d<1
. Suponha que geramos N
pontos
uniformemente ao acaso no quadrado de lado unitário e que queremos
determinar quantos pares destes pontos distam a menos de d
entre si. Esta é a solução imediata para este problema: Programa 3.8 do livro de Sedgewick (Arquivos
auxiliares: Point.h e Point.c). Esta solução tem tempo de execução
proporcional a N^2
. O mensagem central desta aula foi que o
uso de estruturas de dados conveniente podem contribuir de forma essencial
no projeto de algoritmos mais eficientes. Esta é a solução deste problema
com tempo de execução proporcional a d^2N^2
(que é muito bom
pelo fato de ser menor para valores menores de d
): Programa 3.20 de Sedgewick. (Note que este
programa também ilustra alocação dinâmica de memória para matrizes.) Uma
observação: o Programa 3.20 acima gasta quantidade de memória proporcional a
1/d^2+N^2
. Assim, existe um preço a pagar; para tirar proveito
de valores pequenos de d
, gastamos mais memória.
- 13/3/2001 Tipos abstratos de dados. Exemplo de manipulação de
números complexos. Veja os seguintes dois diretórios para duas
implementações distintas: versão 1,
versão 2 (estude estes exemplos com
cuidado).
- 16/3/2001 Tabelas de símbolos. Este tipo abstrato de dados será
muito importante durante o semestre. Veja este
diretório para um exemplo completo (esta implementação mantém os objetos
da tabela em uma lista ligada ordenada). Outras implementações de tabelas
de símbolos. Como vetores característicos: prog12.3.c; como vetores mantendo os
objetos ordenados: prog12.4.c.
Discussão do primeiro EP e do primeiro
desafio.
- 20/3/2001 Não haverá aula [Yoshi no Fortaleza Summer School on Algorithms
and Combinatorics, Fortaleza, Ceará, 12 a 24 de março, 2001].
- 23/3/2001 Não haverá aula [Yoshi no Fortaleza Summer School on Algorithms
and Combinatorics, Fortaleza, Ceará, 12 a 24 de março, 2001].
- 27/3/2001 Elementos básicos sobre árvores.
- 30/3/2001 Programas de pesquisa de nós de árvores: prog5.14.c, prog5.15.c, e prog5.16.c. Alguns outros programas de
manipulação de árvores: prog5.17.c, e prog5.18.c. Tabelas de símbolos implementadas com
árvores de busca binária: veja este diretório.
Abril
- 3/4/2001 Tabelas de símbolos implementadas com árvores de busca binária,
continuação. Inserção sem recursão: prog12.7b.c. Relação entre as
propriedades matemáticas das ABs e o desempenho de tabelas de símbolos
implementadas com ABBs. Anúncio do segundo EP e do
segundo desafio.
- 6/4/2001 Índices de textos: veja este
diretório. Veja o 3o. Desafio na página dos
desafios. Algoritmos de rotação de ABs: prog12.11.c. Inserção na raiz em uma AB: prog12.12.c (desafio: escreva uma versão
não-recursiva deste algoritmo de inserção). Balanceamento explícito de uma
AB: prog12.14.c e prog13.1.c.
- 10/4/2001 Semana Santa
- 13/4/2001 Semana Santa
- 17/4/2001 Discussão detalhada do EP2. Balanceamento explícito de uma AB
(recapitulação). ABBs aleatórias. Inserção aleatória: prog13.2.c. ABBs construídas com
inserções aleatórias dos itens, em ordem arbitrária, e ABBs construídas com
a inserção dos itens em ordem aleatória; comprimento interno esperado e um
resultado sobre grandes desvios. Remoção (determinística) de um item de uma
ABB: prog12.15.c.
- 20/4/2001 Um pouco mais de operações probabilísticas sobre ABBs.
- 24/4/2001 Prova 1!
- 27/4/2001 Alguns comentários sobre a prova. Splay trees
(self-adjusting BSTs). Veja os diretórios splay_BST, splay_BSTb, e splay_BSTb_noN.
Maio
- 1/5/2001 Feriado
- 4/5/2001 Árvores AVL e rubro-negras. A biblioteca libavl (veja a
documentação e
também um texto mais extenso disponível na página da biblioteca, em
vários formatos). Várias implementações de tabelas de símbolos com uma
pequeno teste comparativo de desempenho: veja este
diretório.
- 8/5/2001 Hashing. Introdução. Veja este
diretório para uma implementação inicial.
- 11/5/2001 Resolução de colisões: resolução por encadeamento e resolução
por linear probing.
- 15/5/2001 Aula de discussão do EP3.
- 18/5/2001 [Nao teve aula: Semana de Estudos]
- 22/5/2001 Discussão final sobre hashing, com análise de desempenho.
Várias implementações de hashing: veja este
diretório.
- 25/5/2001 Árvores de busca digital. Tries e patricia tries. Veja este diretório para patricia tries.
- 29/5/2001 Continuação.
Junho
- 1/6/2001 Tries R-ários. Tries de busca ternários.
- 5/6/2001 Continuação.
- 8/6/2001 B-árvores, hashing extensível. Entrega do EP3 adiada para esta
data (até as 18:00, na secretaria do MAC)
- 12/6/2001 Não haverá aula [Semana de Estudos]
- 15/6/2001 Não haverá aula [Semana de Estudos]
- 19/6/2001 Aula de exercícios.
- 22/6/2001 Prova 2!
- 26/6/2001 Prova 3!
- 29/6/2001 Não haverá aula.
Calendário
Mar Apr
S M Tu W Th F S S M Tu W Th F S
1 2 3 1 2 3 4 5 6 7
4 5 6 7 8 9 10 8 9 10 11 12 13 14
11 12 13 14 15 16 17 15 16 17 18 19 20 21
18 19 20 21 22 23 24 22 23 24 25 26 27 28
25 26 27 28 29 30 31 29 30
May Jun
S M Tu W Th F S S M Tu W Th F S
1 2 3 4 5 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 29 30
Página principal de MAC323 (BCC - 1o. Semestre de 2001)
Y. Kohayakawa
<yoshi@ime.usp.br>
Last modified: Sat Jun 30 14:03:48 BRST 2001