Anda di halaman 1dari 7

ATIVIDADES PRTICAS SUPERVISIONADAS

Cincia da Computao
7 Srie Anlise e Complexidade de Algoritmos
A atividade prtica supervisionada (ATPS) um mtodo de ensinoaprendizagem desenvolvido por meio de um conjunto de atividades

programadas e supervisionadas e que tem por objetivos: Favorecer a aprendizagem. Estimular a corresponsabilidade do aluno pelo aprendizado eficiente e eficaz. Promover o estudo, a convivncia e o trabalho em grupo. Desenvolver os estudos independentes, sistemticos e o autoaprendizado. Oferecer diferenciados ambientes de aprendizagem. Auxiliar no desenvolvimento das competncias requeridas pelas Diretrizes Curriculares Nacionais dos Cursos de Graduao. Promover a aplicao da teoria e conceitos para a soluo de problemas relativos profisso. Direcionar o estudante para a emancipao intelectual. Para atingir esses objetivos, as atividades foram organizadas na forma de um desafio, que ser solucionado por etapas ao longo do semestre letivo. Participar ativamente desse desafio essencial para o desenvolvimento das competncias e habilidades requeridas na sua atuao, no mercado de trabalho. Aproveite essa oportunidade de estudar e aprender com desafios da vida profissional.

AUTORIA:
Marcela Cristiani Ferreira
Faculdade Anhanguera de Limeira

Cincia da Computao 7 Srie Anlise e Complexidade de Algoritmos

Pg. 2 de 7

COMPETNCIAS E HABILIDADES
Ao concluir as etapas propostas neste desafio, voc ter desenvolvido as competncias e habilidades descritas a seguir: Competncia para identificar, analisar, documentar e solucionar problemas e necessidades passveis de soluo via computao. Capacidade de desenvolvimento para a pesquisa cientfica e tecnolgica. Aplicao eficiente dos princpios de gerenciamento, organizao e busca de informaes. Analisar, organizar, abstrair e relacionar dados e informaes.

DESAFIO
De acordo com Ziviani (2005), um algoritmo pode ser visto como uma sequncia de aes executveis a fim de obter uma soluo para um determinado tipo de problema. O objetivo da disciplina de Anlise e Complexidade de Algoritmos atribuir ferramentas que auxiliem na deciso de escolha entre dois ou mais algoritmos, qual o melhor para resolver determinado problema, levando em considerao o tempo gasto para executar todas as aes e a quantidade de memria utilizada para armazenamento das informaes. O estudo da complexidade feita atravs de classes assintticas. Esse desafio prope aos alunos fazerem um estudo sobre anlise de classes distintas de algoritmos, sendo elas: algoritmos de ordenao, algoritmos em grafos, algoritmos iterativos e recursivos e algoritmos gulosos, fazendo uso dos conceitos de medidas de complexidade vistos na disciplina de Anlise e Complexidade de Algoritmos. Essas anlises sero feitas para que o aluno possa aplic-las em situaes de deciso entre dois ou mais algoritmos que resolvem certos tipos de problemas. O objetivo do desafio mostrar ao aluno o funcionamento das classes de algoritmos citadas acima e, ao final conhecer uma ferramenta que o ajudar na anlise de complexidade.

Produo Acadmica
Sero produzidos relatrios parciais referentes a cada uma das etapas.

Participao
Para a elaborao dessa atividade, os alunos devero previamente organizar-se em equipes de 1 a 4 participantes e entregar seus nomes, RAs e e-mails ao professor da disciplina. Essas equipes sero mantidas durante todas as etapas.

Padronizao
O material escrito solicitado nessa atividade deve ser produzido de acordo com as normas da ABNT1, com o seguinte padro: em papel branco, formato A4; com margens esquerda e superior de 3cm, direita e inferior de 2cm; fonte Times New Roman tamanho 12, cor preta;
1

Consulte o Manual para Elaborao de Trabalhos Acadmicos. Unianhanguera. Disponvel em: <http://www.unianhanguera.edu.br/anhanguera/bibliotecas/normas_bibliograficas/index.html>.

Marcela Cristiani Ferreira

Cincia da Computao 7 Srie Anlise e Complexidade de Algoritmos

Pg. 3 de 7

espaamento duplo entre linhas; se houver citaes com mais de trs linhas, devem ser em fonte tamanho 10, com um recuo de 4cm da margem esquerda e espaamento simples entre linhas; com capa, contendo: nome de sua Unidade de Ensino, Curso e Disciplina; nome e RA de cada participante; ttulo da atividade; nome do professor da disciplina; cidade e data da entrega, apresentao ou publicao.

ETAPA 1
Aula-tema: Medidas de Complexidade, anlise assinttica de limites de complexidade. Essa atividade importante para que voc conhea as medidas assintticas de complexidade, considerando que os algoritmos so representados, muitas vezes, por funes matemticas, assim, faz-se um estudo sobre o comportamento assinttico dessas funes. Para realiz-la, importante seguir os passos descritos.

PASSOS
Passo 1 Ler o Captulo 1 Introduo: Seo 1.3; subsees 1.3.1, 1.3.2, do livro do Ziviani (2005). Passo 2 Definir, de acordo com o texto lido no passo 1, as medidas de complexidade micron ( ), mega ( ) e Theta ( ). Passo 3 Usar as medidas de complexidade descritas acima e fazer as seguintes atividades: 1. Comparar uma funo linear f(n) com uma funo quadrtica g(n) e mostre que f(n) micron (g(n)), determinando constantes n0 natural e c real positivo; 2. Comparar uma funo exponencial f(n) com uma funo cbica g(n) e mostre que f(n) mega (g(n)), determinando constantes n0 natural e d real positivo; 3. Comparar duas funes quadrticas f(n) e g(n) e mostre que f(n) Theta (g(n)), determinando constantes c, d reais positivos e n0 natural. Passo 4 Criar um algoritmo que tenha pelo menos dois elementos que sejam comuns a maioria dos algoritmos como, por exemplo, atribuies simples, declaraes, laos, laos aninhados, If-Then-Else. Entregar ao professor o Relatrio 1 com todos os passos descritos nessa etapa.

Marcela Cristiani Ferreira

Cincia da Computao 7 Srie Anlise e Complexidade de Algoritmos

Pg. 4 de 7

ETAPA 2
Aula-tema: Anlise de desempenho de alguns algoritmos clssicos de busca, ordenao e sobre grafos. Essa atividade importante para que voc aprenda a analisar algoritmos de ordenao por seleo e por insero. Para realiz-la, importante seguir os passos descritos.

PASSOS
Passo 1 Citar as vantagens e desvantagens dos algoritmos de ordenao por seleo e de ordenao por insero. Explicar o funcionamento de cada um deles. Passo 2 Criar um algoritmo de ordenao por insero e um de ordenao por seleo para ordenar um vetor de tamanho n. Passo 3 Explicar o funcionamento, passo a passo, dos algoritmos criados no passo 2 dessa etapa. Passo 4 Escrever a complexidade, linha a linha, de cada um dos algoritmos criados no passo 2 dessa etapa. Entregar ao professor o Relatrio 2 com todos os passos descritos nessa etapa.

ETAPA 3
Aula-tema: Anlise de desempenho de alguns algoritmos clssicos de busca, ordenao e sobre grafos. Essa atividade importante para que voc aprenda a representar grafos atravs de listas de adjacncia e matriz de adjacncia. Para realiz-la, importante seguir os passos descritos.

PASSOS
Passo 1 Criar um grafo com no mnimo 5 vrtices, represente-o atravs da matriz de adjacncia e atravs da lista de adjacncia e faa um algoritmo que d o grau de cada um de seus vrtices, usando as duas maneiras representadas. Apresentar a complexidade dos algoritmos criados.

Marcela Cristiani Ferreira

Cincia da Computao 7 Srie Anlise e Complexidade de Algoritmos

Pg. 5 de 7

Passo 2 Desenhar o grafo ponderado que representa a seguinte situao: Suponha que um funcionrio encarregado de verificar o estado das estradas, deseja planejar a sua rota de inspeo nas estradas que existem entre as cidades A, B, C, D e E. A rota deve se iniciar na cidade A. O custo de cada estrada : Estrada ligando a cidade A cidade B = 3; Estrada ligando a cidade A cidade E = 12; Estrada ligando a cidade B cidade C = 3; Estrada ligando a cidade B cidade D = 2; Estrada ligando a cidade B cidade E = 7; Estrada ligando a cidade C cidade D = 2; Estrada ligando a cidade E cidade D = 6. Passo 3 Fazer a matriz de custos que representa o grafo do passo 2 dessa etapa. Passo 4 Calcular o caminho de custo mnimo para o inspetor percorrer. Entregue ao professor todos os passos da etapa descritos no Relatrio 3.

ETAPA 4
Aula-tema: Introduo aos principais paradigmas do projeto de algoritmos recursividade. Essa atividade importante para que voc perceba a diferena entre as anlises de um algoritmo recursivo e um algoritmo iterativo. Para realiz-la, importante seguir os passos descritos.

PASSOS
Passo 1 Pesquisar em Ziviani (2005) ou em Cormen (2002) as diferenas entre os dois tipos de algoritmos: iterativo e recursivo, dando pelo menos um exemplo de cada um deles. Passo 2 Pesquisar no livro do Cormen (2002), os mtodos de resoluo de uma equao de recorrncia. Apresente a equao de recorrncia que representa o algoritmo recursivo extrado do livro do Ziviani (2005), captulo 1, pgina 22:

Marcela Cristiani Ferreira

Cincia da Computao 7 Srie Anlise e Complexidade de Algoritmos

Pg. 6 de 7

Pesquisa (n); (1) if n <= 1 (2) then inspecione elemento e termine else begin (3) para cada um dos n elementos inspecione elemento; (4) Pesquisa (n/3); end;

Em seguida, resolva a seguinte equao de recorrncia: T(n) = n + T(n/2); T(1) = 0. Passo 3 Apresentar a equao de recorrncia, resolv-la e escrever a ordem de complexidade do algoritmo a seguir:
int soma(int n) { int (n == 1) return(1); else return (n + soma(n - 1)); } main ( ) { int n = 4; printf (%d, soma (n)); }

Passo 4 Descrever a ordem de complexidade do algoritmo a seguir, explicando o seu raciocnio. Entregar ao professor todos os passos da etapa descritos no Relatrio 4.
funct subsequnciaSomaMxima(v: array Z, n : N) : Z var soma, somaMxima: Z i, j, k : N end begin somaMxima v[1] for i = 1 to n step 1 do for j = i to n step 1 do soma 0 for k = i to j step 1 do soma soma + v[k] od if soma > somaMxima then somaMxima soma fl od od result somaMxima end Fonte: DHABE, DAVID (2003, p. 8)

Marcela Cristiani Ferreira

Cincia da Computao 7 Srie Anlise e Complexidade de Algoritmos

Pg. 7 de 7

ETAPA 5
Aula-tema: Introduo aos principais paradigmas do projeto de algoritmos: Algoritmos Gulosos e Algoritmos de aproximao. Essa atividade importante para que voc entenda o funcionamento de um algoritmo guloso. Para realiz-la, importante seguir os passos descritos.

PASSOS
Passo 1 Pesquisar no livro do Cormen (2002), explicar como o funcionamento do algoritmo guloso e como calculada sua complexidade. Passo 2 Escolher trs listas de tamanhos diferentes e faa a intercalao segundo o algoritmo guloso. Explicar de que forma a ordem da escolha das listas de tamanhos m1, m2 e m3 influencia na complexidade do algoritmo. Passo 3 Ler o artigo: Sistema para Anlise Automtica da Complexidade de Algoritmos No Recursivos no Pior Caso de Marco Antonio de Castro Barbosa que se encontrar em https://docs.google.com/fileview?id=0B-Sl6Nl2puCNDAzOTM1MGYtZDllYy00ZmRlLWFhNjctNjQzMThhMWRkY2M5&h (Acessado em 27/ 10/ 2010) e fazer uma anlise crtica do mesmo. Passo 4 Fazer o Relatrio 5 com as informaes referentes a essa etapa e entregar ao professor.

Bibliografia
ZIVIANI, N. Projeto de Algoritmos com implementaes em Pascal e C. 2 edio. So Paulo: Pioneira Thomson Learning, 2005. 552 p. CORMEN, T. H.; LEISERSON, C . E.; RIVEST, R. L.; STEIN, C. Algoritmos: Teoria e Prtica. Traduo da 2 edio Americana. Rio de Janeiro, Elsevier, 2002. 916 p.

Marcela Cristiani Ferreira

Anda mungkin juga menyukai