mc-202 escolhendo uma estrutura de dados -...
TRANSCRIPT
![Page 1: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/1.jpg)
MC-202Escolhendo uma Estrutura de Dados
Rafael C. S. [email protected]
Universidade Estadual de Campinas
2º semestre/2018
![Page 2: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/2.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas
– simples, duplas, circulares, com cabeça
• Pilhas e Filas• Árvores
– Heaps Binários (fila de prioridade)– Árvores Binárias de Busca– Árvores Rubro-Negras– Árvores B
• Hashing• Grafos
Qual delas usar?
2
![Page 3: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/3.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas– simples, duplas, circulares, com cabeça
• Pilhas e Filas• Árvores
– Heaps Binários (fila de prioridade)– Árvores Binárias de Busca– Árvores Rubro-Negras– Árvores B
• Hashing• Grafos
Qual delas usar?
2
![Page 4: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/4.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas– simples, duplas, circulares, com cabeça
• Pilhas e Filas
• Árvores
– Heaps Binários (fila de prioridade)– Árvores Binárias de Busca– Árvores Rubro-Negras– Árvores B
• Hashing• Grafos
Qual delas usar?
2
![Page 5: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/5.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas– simples, duplas, circulares, com cabeça
• Pilhas e Filas• Árvores
– Heaps Binários (fila de prioridade)– Árvores Binárias de Busca– Árvores Rubro-Negras– Árvores B
• Hashing• Grafos
Qual delas usar?
2
![Page 6: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/6.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas– simples, duplas, circulares, com cabeça
• Pilhas e Filas• Árvores
– Heaps Binários (fila de prioridade)
– Árvores Binárias de Busca– Árvores Rubro-Negras– Árvores B
• Hashing• Grafos
Qual delas usar?
2
![Page 7: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/7.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas– simples, duplas, circulares, com cabeça
• Pilhas e Filas• Árvores
– Heaps Binários (fila de prioridade)– Árvores Binárias de Busca
– Árvores Rubro-Negras– Árvores B
• Hashing• Grafos
Qual delas usar?
2
![Page 8: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/8.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas– simples, duplas, circulares, com cabeça
• Pilhas e Filas• Árvores
– Heaps Binários (fila de prioridade)– Árvores Binárias de Busca– Árvores Rubro-Negras
– Árvores B
• Hashing• Grafos
Qual delas usar?
2
![Page 9: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/9.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas– simples, duplas, circulares, com cabeça
• Pilhas e Filas• Árvores
– Heaps Binários (fila de prioridade)– Árvores Binárias de Busca– Árvores Rubro-Negras– Árvores B
• Hashing• Grafos
Qual delas usar?
2
![Page 10: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/10.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas– simples, duplas, circulares, com cabeça
• Pilhas e Filas• Árvores
– Heaps Binários (fila de prioridade)– Árvores Binárias de Busca– Árvores Rubro-Negras– Árvores B
• Hashing
• Grafos
Qual delas usar?
2
![Page 11: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/11.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas– simples, duplas, circulares, com cabeça
• Pilhas e Filas• Árvores
– Heaps Binários (fila de prioridade)– Árvores Binárias de Busca– Árvores Rubro-Negras– Árvores B
• Hashing• Grafos
Qual delas usar?
2
![Page 12: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/12.jpg)
Durante o curso vimos várias EDs...
• Listas Ligadas– simples, duplas, circulares, com cabeça
• Pilhas e Filas• Árvores
– Heaps Binários (fila de prioridade)– Árvores Binárias de Busca– Árvores Rubro-Negras– Árvores B
• Hashing• Grafos
Qual delas usar?
2
![Page 13: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/13.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens
– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:
– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:
– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 14: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/14.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens
– Ex: rede social, ordem de tarefas, caminho mínimo• Pilhas e Filas:
– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:
– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 15: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/15.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:
– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:
– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 16: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/16.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:
– remoção acontece de acordo com a ordem de inserção• Filas de Prioridade:
– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 17: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/17.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:
– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 18: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/18.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:
– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 19: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/19.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 20: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/20.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos
• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 21: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/21.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa
• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 22: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/22.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores
• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 23: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/23.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 24: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/24.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED
• Não tem muito o que escolher...
3
![Page 25: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/25.jpg)
Estruturas de Dados EspecíficasAlgumas das EDs que vimos servem para tarefas específicas
• Grafos são usados quando há relações entre itens– Ex: rede social, ordem de tarefas, caminho mínimo
• Pilhas e Filas:– remoção acontece de acordo com a ordem de inserção
• Filas de Prioridade:– remoção acontece de acordo com a prioridade
É comum termos que usar essas EDs em algoritmos• Ex: Conversão de notação infixa para pós-fixa• Ex: Percurso em Largura em Árvores• Ex: Caminhos mínimos
Isto é, a necessidade faz com que usemos a ED• Não tem muito o que escolher...
3
![Page 26: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/26.jpg)
EDs com Inserção, Remoção e Busca
Outras EDs têm um conjunto de operações em comum
• Vetores• Listas Ligadas• Árvores• Hashing
Existe uma estrutura que é melhor do que as outras?• Não de maneira geral...
4
![Page 27: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/27.jpg)
EDs com Inserção, Remoção e Busca
Outras EDs têm um conjunto de operações em comum• Vetores
• Listas Ligadas• Árvores• Hashing
Existe uma estrutura que é melhor do que as outras?• Não de maneira geral...
4
![Page 28: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/28.jpg)
EDs com Inserção, Remoção e Busca
Outras EDs têm um conjunto de operações em comum• Vetores• Listas Ligadas
• Árvores• Hashing
Existe uma estrutura que é melhor do que as outras?• Não de maneira geral...
4
![Page 29: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/29.jpg)
EDs com Inserção, Remoção e Busca
Outras EDs têm um conjunto de operações em comum• Vetores• Listas Ligadas• Árvores
• Hashing
Existe uma estrutura que é melhor do que as outras?• Não de maneira geral...
4
![Page 30: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/30.jpg)
EDs com Inserção, Remoção e Busca
Outras EDs têm um conjunto de operações em comum• Vetores• Listas Ligadas• Árvores• Hashing
Existe uma estrutura que é melhor do que as outras?• Não de maneira geral...
4
![Page 31: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/31.jpg)
EDs com Inserção, Remoção e Busca
Outras EDs têm um conjunto de operações em comum• Vetores• Listas Ligadas• Árvores• Hashing
Existe uma estrutura que é melhor do que as outras?
• Não de maneira geral...
4
![Page 32: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/32.jpg)
EDs com Inserção, Remoção e Busca
Outras EDs têm um conjunto de operações em comum• Vetores• Listas Ligadas• Árvores• Hashing
Existe uma estrutura que é melhor do que as outras?• Não de maneira geral...
4
![Page 33: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/33.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções• Suportam um grande número de operações em O(lg n)• Mas nem sempre são a melhor opção...
5
![Page 34: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/34.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções• Suportam um grande número de operações em O(lg n)• Mas nem sempre são a melhor opção...
5
![Page 35: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/35.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave
• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções• Suportam um grande número de operações em O(lg n)• Mas nem sempre são a melhor opção...
5
![Page 36: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/36.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções• Suportam um grande número de operações em O(lg n)• Mas nem sempre são a melhor opção...
5
![Page 37: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/37.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem
• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções• Suportam um grande número de operações em O(lg n)• Mas nem sempre são a melhor opção...
5
![Page 38: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/38.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções• Suportam um grande número de operações em O(lg n)• Mas nem sempre são a melhor opção...
5
![Page 39: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/39.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave
• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções• Suportam um grande número de operações em O(lg n)• Mas nem sempre são a melhor opção...
5
![Page 40: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/40.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções• Suportam um grande número de operações em O(lg n)• Mas nem sempre são a melhor opção...
5
![Page 41: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/41.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções
• Suportam um grande número de operações em O(lg n)• Mas nem sempre são a melhor opção...
5
![Page 42: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/42.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções• Suportam um grande número de operações em O(lg n)
• Mas nem sempre são a melhor opção...
5
![Page 43: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/43.jpg)
Como escolher?Precisamos ver quais operações são necessárias
• E qual a frequência de cada operação...
Quero fazer buscas frequentes usando uma chave• vetores não ordenados e listas não são boas opções
Faço operações frequentes que dependem de ordem• hash e estruturas não ordenadas não são boas opções
Preciso remover com frequência elementos usando a chave• vetores ordenados e listas ligadas não são boas opções
ABBs balanceadas são sempre boas opções• Suportam um grande número de operações em O(lg n)• Mas nem sempre são a melhor opção...
5
![Page 44: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/44.jpg)
Análise de tempoRelembrando:
• Algoritmo O(n2) pode ser mais rápido do que outro O(n2)• Otimizações no código levam a programas mais rápidos• A escolha do algoritmo é o principal fator de impacto
– Algoritmo O(n lg n) vs. O(n2)
0.6 0.8 1 1.2 1.4 1.6 1.8 2
·104
2
4
·10−2
tamanho
tempo
(s)
bubblesortselectionsortinsertionsort
insertionsort_v2
1 2 3 4 5
·104
2
4
·10−2
tamanho
tempo
(s)
insertionsort_v2mergesort
quicksort_mdtheapsort
6
![Page 45: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/45.jpg)
Análise de tempoRelembrando:
• Algoritmo O(n2) pode ser mais rápido do que outro O(n2)• Otimizações no código levam a programas mais rápidos• A escolha do algoritmo é o principal fator de impacto
– Algoritmo O(n lg n) vs. O(n2)
0.6 0.8 1 1.2 1.4 1.6 1.8 2
·104
2
4
·10−2
tamanho
tempo
(s)
bubblesortselectionsortinsertionsort
insertionsort_v2
1 2 3 4 5
·104
2
4
·10−2
tamanho
tempo
(s)
insertionsort_v2mergesort
quicksort_mdtheapsort
6
![Page 46: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/46.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias
• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 47: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/47.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias
• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 48: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/48.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio
• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias
• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 49: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/49.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 50: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/50.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias
• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 51: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/51.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 52: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/52.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 53: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/53.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado
• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 54: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/54.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))
• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 55: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/55.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 56: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/56.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:
• Análise estatística do tempo de execução do algoritmo
7
![Page 57: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/57.jpg)
Tipos de Análise de TempoAlgoritmo é O(f(n)) no pior caso
• Dá uma certeza sobre a qualidade do algoritmo
Algoritmo é O(f(n)) no caso médio• Podendo ser melhor ou pior para uma instância específica
– Bom se você espera que as instâncias sejam aleatórias• A média pode ser em relação aos bits aleatórios usados
– Tempo de execução diferente para a mesma instância
Algoritmo é O(f(n)) amortizado• A média das operações realizadas tem custo O(f(n))• Operações mais lentas compensadas por mais rápidas
Análise empírica:• Análise estatística do tempo de execução do algoritmo
7
![Page 58: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/58.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)• Considerando permutações aleatória de n chaves• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim• Em outros sistemas definitivamente não
8
![Page 59: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/59.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)• Considerando permutações aleatória de n chaves• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim• Em outros sistemas definitivamente não
8
![Page 60: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/60.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))
• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)• Considerando permutações aleatória de n chaves• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim• Em outros sistemas definitivamente não
8
![Page 61: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/61.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)• Considerando permutações aleatória de n chaves• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim• Em outros sistemas definitivamente não
8
![Page 62: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/62.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)
• Considerando permutações aleatória de n chaves• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim• Em outros sistemas definitivamente não
8
![Page 63: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/63.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)• Considerando permutações aleatória de n chaves
• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim• Em outros sistemas definitivamente não
8
![Page 64: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/64.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)• Considerando permutações aleatória de n chaves• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim• Em outros sistemas definitivamente não
8
![Page 65: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/65.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)• Considerando permutações aleatória de n chaves• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim• Em outros sistemas definitivamente não
8
![Page 66: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/66.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)• Considerando permutações aleatória de n chaves• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim• Em outros sistemas definitivamente não
8
![Page 67: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/67.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)• Considerando permutações aleatória de n chaves• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim
• Em outros sistemas definitivamente não
8
![Page 68: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/68.jpg)
ExemplosÁrvores Rubro-Negras: altura O(lg n)
• No pior caso
Árvores Splay: m inserções/buscas em O((n + m) lg(n + m))• Análise amortizada
Árvores de Busca Binária (simples) tem altura média O(lg n)• Considerando permutações aleatória de n chaves• Versão aleatorizada tem altura média O(lg n)
– Média na altura em relação as execuções
Posso ter um algoritmo que as vezes é pior, mas que é melhorem geral?
• Em alguns sistemas sim• Em outros sistemas definitivamente não
8
![Page 69: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/69.jpg)
Informações sobre o Problema
Informações sobre o problema a ser resolvido podem ser úteis
Ex: dados a serem inseridos são praticamente aleatórios• Posso usar ABBs ao invés de Rubro-Negra
Ex: a função de hashing não é boa para o conjunto de chaves• posso usar outra função de hashing• ou usar uma Rubro-Negra
9
![Page 70: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/70.jpg)
Informações sobre o Problema
Informações sobre o problema a ser resolvido podem ser úteis
Ex: dados a serem inseridos são praticamente aleatórios
• Posso usar ABBs ao invés de Rubro-Negra
Ex: a função de hashing não é boa para o conjunto de chaves• posso usar outra função de hashing• ou usar uma Rubro-Negra
9
![Page 71: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/71.jpg)
Informações sobre o Problema
Informações sobre o problema a ser resolvido podem ser úteis
Ex: dados a serem inseridos são praticamente aleatórios• Posso usar ABBs ao invés de Rubro-Negra
Ex: a função de hashing não é boa para o conjunto de chaves• posso usar outra função de hashing• ou usar uma Rubro-Negra
9
![Page 72: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/72.jpg)
Informações sobre o Problema
Informações sobre o problema a ser resolvido podem ser úteis
Ex: dados a serem inseridos são praticamente aleatórios• Posso usar ABBs ao invés de Rubro-Negra
Ex: a função de hashing não é boa para o conjunto de chaves
• posso usar outra função de hashing• ou usar uma Rubro-Negra
9
![Page 73: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/73.jpg)
Informações sobre o Problema
Informações sobre o problema a ser resolvido podem ser úteis
Ex: dados a serem inseridos são praticamente aleatórios• Posso usar ABBs ao invés de Rubro-Negra
Ex: a função de hashing não é boa para o conjunto de chaves• posso usar outra função de hashing
• ou usar uma Rubro-Negra
9
![Page 74: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/74.jpg)
Informações sobre o Problema
Informações sobre o problema a ser resolvido podem ser úteis
Ex: dados a serem inseridos são praticamente aleatórios• Posso usar ABBs ao invés de Rubro-Negra
Ex: a função de hashing não é boa para o conjunto de chaves• posso usar outra função de hashing• ou usar uma Rubro-Negra
9
![Page 75: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/75.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)• array, vector (dinâmico)• stack, queue, deque, priority_queue• forward_list (simples), list (dupla)• set, multiset, unordered_set, unordered_multiset• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 76: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/76.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs
• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)• array, vector (dinâmico)• stack, queue, deque, priority_queue• forward_list (simples), list (dupla)• set, multiset, unordered_set, unordered_multiset• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 77: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/77.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)• array, vector (dinâmico)• stack, queue, deque, priority_queue• forward_list (simples), list (dupla)• set, multiset, unordered_set, unordered_multiset• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 78: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/78.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)
• array, vector (dinâmico)• stack, queue, deque, priority_queue• forward_list (simples), list (dupla)• set, multiset, unordered_set, unordered_multiset• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 79: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/79.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)• array, vector (dinâmico)
• stack, queue, deque, priority_queue• forward_list (simples), list (dupla)• set, multiset, unordered_set, unordered_multiset• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 80: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/80.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)• array, vector (dinâmico)• stack, queue, deque, priority_queue
• forward_list (simples), list (dupla)• set, multiset, unordered_set, unordered_multiset• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 81: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/81.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)• array, vector (dinâmico)• stack, queue, deque, priority_queue• forward_list (simples), list (dupla)
• set, multiset, unordered_set, unordered_multiset• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 82: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/82.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)• array, vector (dinâmico)• stack, queue, deque, priority_queue• forward_list (simples), list (dupla)• set, multiset, unordered_set, unordered_multiset
• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 83: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/83.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)• array, vector (dinâmico)• stack, queue, deque, priority_queue• forward_list (simples), list (dupla)• set, multiset, unordered_set, unordered_multiset• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 84: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/84.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)• array, vector (dinâmico)• stack, queue, deque, priority_queue• forward_list (simples), list (dupla)• set, multiset, unordered_set, unordered_multiset• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 85: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/85.jpg)
Bibliotecas de Estruturas de DadosNa maior parte das vezes, não implementamos as nossas EDs
• Usamos bibliotecas prontas de EDs• Principalmente em Java, C++, Python, etc...
Ex: STD - (C++ Standard Library)• array, vector (dinâmico)• stack, queue, deque, priority_queue• forward_list (simples), list (dupla)• set, multiset, unordered_set, unordered_multiset• map, multimap, unordered_map, unordered_multimap
São estruturas genéricas, talvez o conhecimento do problemapermita fazer algo melhor...
• É importante entender ao invés de só usar
10
![Page 86: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/86.jpg)
Escolhendo em C++1
1http://homepages.e3.net.nz/~djm/cppcontainers.html11
![Page 87: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/87.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list
– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict
– “A mapping object maps hashable values to arbitraryobjects.”
• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)
– funciona como deque ou fila
• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 88: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/88.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list
– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict
– “A mapping object maps hashable values to arbitraryobjects.”
• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)
– funciona como deque ou fila
• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 89: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/89.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade
– Pode ser usada como uma pilha• dict
– “A mapping object maps hashable values to arbitraryobjects.”
• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)
– funciona como deque ou fila
• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 90: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/90.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict
– “A mapping object maps hashable values to arbitraryobjects.”
• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)
– funciona como deque ou fila
• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 91: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/91.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict
– “A mapping object maps hashable values to arbitraryobjects.”
• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)
– funciona como deque ou fila
• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 92: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/92.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict– “A mapping object maps hashable values to arbitrary
objects.”
• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)
– funciona como deque ou fila
• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 93: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/93.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict– “A mapping object maps hashable values to arbitrary
objects.”• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)
– funciona como deque ou fila
• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 94: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/94.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict– “A mapping object maps hashable values to arbitrary
objects.”• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)
– funciona como deque ou fila
• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 95: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/95.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict– “A mapping object maps hashable values to arbitrary
objects.”• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)
– funciona como deque ou fila• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 96: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/96.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict– “A mapping object maps hashable values to arbitrary
objects.”• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)– funciona como deque ou fila
• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 97: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/97.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict– “A mapping object maps hashable values to arbitrary
objects.”• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)– funciona como deque ou fila
• módulo heapq
– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 98: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/98.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict– “A mapping object maps hashable values to arbitrary
objects.”• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)– funciona como deque ou fila
• módulo heapq– funções de fila de prioridades
E é possível encontrar outras bibliotecas...
12
![Page 99: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/99.jpg)
E no Python?Algumas estruturas de dados básicas do Python 3
• list– Cresce de acordo com a necessidade– Pode ser usada como uma pilha
• dict– “A mapping object maps hashable values to arbitrary
objects.”• set
– “A set object is an unordered collection of distinct hashableobjects.”
• deque (de collections)– funciona como deque ou fila
• módulo heapq– funções de fila de prioridades
E é possível encontrar outras bibliotecas...12
![Page 100: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/100.jpg)
Exercício
Vamos discutir qual ED usar nos seguintes problemas:
1. Tabela de alunos da DAC2. Tabela de símbolos do compilador3. Sistema de arquivos4. Tabela de aberturas de xadrez
13
![Page 101: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/101.jpg)
Exercício
Vamos discutir qual ED usar nos seguintes problemas:1. Tabela de alunos da DAC
2. Tabela de símbolos do compilador3. Sistema de arquivos4. Tabela de aberturas de xadrez
13
![Page 102: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/102.jpg)
Exercício
Vamos discutir qual ED usar nos seguintes problemas:1. Tabela de alunos da DAC2. Tabela de símbolos do compilador
3. Sistema de arquivos4. Tabela de aberturas de xadrez
13
![Page 103: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/103.jpg)
Exercício
Vamos discutir qual ED usar nos seguintes problemas:1. Tabela de alunos da DAC2. Tabela de símbolos do compilador3. Sistema de arquivos
4. Tabela de aberturas de xadrez
13
![Page 104: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/104.jpg)
Exercício
Vamos discutir qual ED usar nos seguintes problemas:1. Tabela de alunos da DAC2. Tabela de símbolos do compilador3. Sistema de arquivos4. Tabela de aberturas de xadrez
13
![Page 105: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/105.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I
– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 106: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/106.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores
• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I
– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 107: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/107.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I
– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 108: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/108.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação
• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I
– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 109: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/109.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I
– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 110: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/110.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos
– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I
– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 111: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/111.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos
– matemática discreta• MC458 - Projeto e Análise de Algoritmos I
– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 112: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/112.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I
– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 113: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/113.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I
– Notação assintótica e análise de algoritmos• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 114: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/114.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 115: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/115.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II
– Algoritmos em Grafos• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 116: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/116.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 117: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/117.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III
– Tratamento de problemas NP-difíceis
14
![Page 118: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/118.jpg)
Disciplinas da ComputaçãoMC322 - Programação Orientada a Objetos
• Como desenvolver sistemas computacionais maiores• De maneira organizada...
Disciplinas da Teoria da Computação• MC358 - Fundamentos Matemáticos da Computação
– base teórica para análise de algoritmos– teoria dos grafos– matemática discreta
• MC458 - Projeto e Análise de Algoritmos I– Notação assintótica e análise de algoritmos
• MC558 - Projeto e Análise de Algoritmos II– Algoritmos em Grafos
• MC658 - Projeto e Análise de Algoritmos III– Tratamento de problemas NP-difíceis
14
![Page 119: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/119.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 120: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/120.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador
• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 121: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/121.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 122: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/122.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times
• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 123: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/123.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional
• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 124: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/124.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional
• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 125: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/125.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 126: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/126.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...
• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 127: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/127.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro
• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 128: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/128.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I
• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 129: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/129.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II
• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15
![Page 130: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/130.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III
• MC821 - Desafios de Programação IV
15
![Page 131: MC-202 Escolhendo uma Estrutura de Dados - ic.unicamp.brrafael/cursos/2s2018/mc202/slides/unidade30... · BibliotecasdeEstruturasdeDados Namaiorpartedasvezes,nãoimplementamosasnossasEDs](https://reader031.vdocuments.site/reader031/viewer/2022022712/5c063de209d3f2bf2b8c1d09/html5/thumbnails/131.jpg)
Maratona de ProgramaçãoEvento da Sociedade Brasileira de Computação
• Times de três alunos e um computador• Resolvendo problemas de computação por 5 horas
Universidades escolhem os seus melhores Times• que disputam na fase regional• depois na final nacional• e depois na final mundial
Na UNICAMP...• Escola de Verão da Maratona todo ano em janeiro• MC521 - Desafios de Programação I• MC621 - Desafios de Programação II• MC721 - Desafios de Programação III• MC821 - Desafios de Programação IV
15