Algoritmos e Estruturas de Dados II

Ementa

Algoritmos de ordenação: bubble sort, selection sort, insertion sort, mergesort, quicksort, heapsort, shellsort, counting sort e bucket sort. Comparação dos algoritmos de ordenação quanto a sua complexidade de tempo e estabilidade. Filas de prioridades. Algoritmos para geração de objetos combinatórios: backtracking, arranjos, permutações, combinações e partições. Conceitos teóricos básicos sobre grafos. Tipo abstrato de dados grafo: implementação por matriz de adjacências e listas de adjacências. Grafos direcionados e não-direcionados. Buscas em profundidade e em largura. Caminhos mínimos. Árvore geradora mínima. Componentes fortemente conexas. Ordenação topológica. Processamento de strings: Tries e árvore PATRICIA, algoritmos de pattern matching exato e aproximado, algoritmo de Huffman para compressão de texto.

Objetivos

Adquirir conhecimentos teóricos e práticos no campo dos algoritmos de ordenação e das estruturas de dados hierárquicas de alta complexidade para assim utilizar uma linguagem de programação de alto nível para soluções de problemas computacionais reais e cotidianos do mercado de trabalho, promovendo a eficiência nas soluções computacionais.