Professional Documents
Culture Documents
Cincia da Computao
A atividade prtica supervisionada (ATPS) um procedimento metodolgico de ensino-aprendizagem desenvolvido por meio de um conjunto de etapas 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 diferentes 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 prticos relativos profisso. Direcionar o estudante para a busca do raciocnio crtico e a emancipao intelectual. Para atingir estes objetivos a ATPS prope um desafio e indica os passos a serem percorridos ao longo do semestre para a sua soluo. A sua participao nesta proposta essencial para que adquira as competncias e habilidades requeridas na sua atuao profissional. Aproveite esta oportunidade de estudar e aprender com desafios da vida profissional.
AUTORIA:
Marcela Cristiani Ferreira
Faculdade Anhanguera de Limeira
Pg. 2 de 8
COMPETNCIAS E HABILIDADES
Ao concluir as etapas propostas neste desafio, voc ter desenvolvido as competncias e habilidades que constam, nas Diretrizes Curriculares Nacionais, 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.
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; 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.
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.
1
Consulte o Manual para Elaborao de Trabalhos Acadmicos. Unianhanguera. Disponvel em: <http://www.unianhanguera.edu.br/anhanguera/bibliotecas/normas_bibliograficas/index.html>.
Pg. 3 de 8
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.
Objetivo do Desafio
Elaborar estudo sobre anlise de classes distintas de algoritmos: algoritmos de ordenao, algoritmos em grafos, algoritmos interativos e recursivos e algoritmos gulosos atravs de medidas de complexidade.
PASSOS
Passo 1 (Aluno) Ler o Captulo 1 Introduo: Seo 1.3; subsees 1.3.1, 1.3.2, do livro do Ziviani (2005). Passo 2 (Equipe) Definir, de acordo com o texto lido no passo 1, as medidas de complexidade micron ( ), mega ( ) e Theta ( ). Passo 3 (Equipe) 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 mostrar 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 mostrar 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 mostrar que f(n) Theta (g(n)), determinando constantes c, d reais positivos e n0 natural.
Pg. 4 de 8
Passo 4 (Equipe) 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.
PASSOS
Passo 1 (Equipe) 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 (Equipe) Criar um algoritmo de ordenao por insero e um de ordenao por seleo para ordenar um vetor de tamanho n. Passo 3 (Equipe) Explicar o funcionamento, passo a passo, dos algoritmos criados no passo 2 dessa etapa. Passo 4 (Equipe) 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.
Pg. 5 de 8
PASSOS
Passo 1 (Equipe) Criar um grafo com no mnimo 5 vrtices, represente-o atravs da matriz de adjacncia e atravs da lista de adjacncia e faam um algoritmo que d o grau de cada um de seus vrtices, usando as duas maneiras representadas. Apresentar a complexidade dos algoritmos criados. Passo 2 (Equipe) Desenhar o grafo ponderado que representa a seguinte situao: Supor 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 (Equipe) Fazer a matriz de custos que representa o grafo do passo 2 dessa etapa. Passo 4 (Equipe) Calcular o caminho de custo mnimo para o inspetor percorrer. Entregar ao professor todos os passos da etapa descritos no Relatrio 3.
PASSOS
Passo 1 (Aluno) 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.
Pg. 6 de 8
Passo 2 (Aluno) Pesquisar no livro do Cormen (2002), os mtodos de resoluo de uma equao de recorrncia. Apresentar a equao de recorrncia que representa o algoritmo recursivo extrado do livro do Ziviani (2005), captulo 1, pgina 22:
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 (Equipe) Apresentar a equao de recorrncia, resolver 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 (Equipe) Descrever a ordem de complexidade do algoritmo a seguir, explicando o seu raciocnio. Entregar um ao professor todos os passos da etapa descritos no Relatrio 4.
Pg. 7 de 8
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)
PASSOS
Passo 1 (aluno) Pesquisar no livro do Cormen (2002), explicar como o funcionamento do algoritmo guloso e como calculada sua complexidade. Passo 2 (Equipe) 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 (Aluno) Ler o artigo: Sistema para Anlise Automtica da Complexidade de Algoritmos No Recursivos no Pior Caso de Marco Antonio de Castro Barbosa. Disponvel em: <https://docs.google.com/fileview?id=0B-Sl6Nl2puCNDAzOTM1MGYtZDllYy00ZmRlLWFhNjctNjQzMThhMWRkY2M5&h>. Acesso em: 27 out. 2010. Em seguida, fazer uma anlise crtica do mesmo.
Pg. 8 de 8
Passo 4 (Equipe) Fazer o Relatrio 5 com as informaes referentes a essa etapa e entregar ao professor.
Referncias Bibliogrficas
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.