Enunciados das aulas práticas de. Algoritmos e Modelação Matemática
|
|
- Vagner Lobo Viveiros
- 7 Há anos
- Visualizações:
Transcrição
1 Enunciados das aulas práticas de Algoritmos e Modelação Matemática Paulo Mateus André Souto 2013
2 ii À guardiã
3 Precaução dirigida aos alunos Os temas apresentados neste trabalho são uma versão muito preliminar da sebenta da cadeira de Algoritmos e Modelação Matemática dos cursos de Engenharia Biomédica e de Matemática Aplicada à Computação do Instituto Superior Técnico da Universidade de Lisboa. Notem que pode haver gralhas, exemplos incompletos, definições e teoremas que podem estar apresentados de forma não uniforme. Na verdade podem existir tópicos que necessitarão de ser reescritos ou escritos de raiz. Parte dos exercícios são retirados das referências bibliográficas dadas. Futuramente, serão substituídos por outros que possam servir os nossos propósitos enquanto docentes da cadeira e de acordo com os objetivos estabelecidos para os conhecimentos a adquirir pelos alunos. No que diz respeito a esta notas o leitor deve estar preparado para se deparar com problemas de compreensão das matérias abordadas, dado que serão para já muito incompletas, e portanto sugerimos a leitura de livros considerados importantes nas áreas que serão abordadas de modo a complementarem a informação apresentada. Sugerimos por exemplo a leitura de [?], [?] e outras referências que faremos ao longo deste trabalho. iii
4
5 Prefácio Este trabalho tenciona compilar num livro os conteúdos programáticos de um curso introdutório à Algoritmia e à Modelação Matemática. Os temas abordados neste trabalho são naturalmente parte integrante dos conteúdos programáticos planeados para a cadeira de Algoritmos e Modelação Matemática a lecionar nos cursos de Engenharia Biomédica e de Matemática Aplicada à Computação do Instituto Superior Técnico da Universidade de Lisboa. A primeira compilação data do ano de A ideia deste trabalho é providenciar ao alunos (e não só) uma referência de estudo, ainda que incompleta, sobre algoritmia com uma forte componente matemática de análise e correção sendo por isso dado um especial enfase a estas problemática sob o ponto de vista de matemático e do ponto de vista das ciências da computação. A juntar a este objetivo pretende-se que este compêndio possa futuramente ser também uma ferramenta útil para outros cursos que abordem temáticas semelhantes. Pelo apoio financeiro, o autor André Souto está profundamente grato à Fundação para a Ciência e Tecnologia pela bolsa SFRH/BPD/76231/2011. Estamos também gratos a todos os membros do SQIG pelo excelente ambiente de trabalho pelo encorajamento dado. Ficamos também gratos aos alunos por qualquer comentário que ajudem a melhorar este trabalho Departamento de Matemática Instituto Superior Técnico, Universidade de Lisboa Security and Quantum Information Group v
6 Instituto de Telecomunicações Conteúdo Precaução dirigida aos alunos Prefácio iii v Conteúdo 1 1 Introdução ao Eclipse Exercícios propostos para a aula Criação de um projeto no Eclipse Compilação, Debugging e correção dos programas Implementação de dados abstratos Exercícios propostos para a aula Exercícios propostos adicionais Notação assimptótica Exercícios propostos para a aula Pesquisa binária e árvores de pesquisa Exercícios propostos para a aula Grafos com matrizes de adjacência Exercício propostos para a aula Exercícios propostos Pesquisa em profundidade em grafos Exercícios propostos para a aula
7
8 Prática 1 Introdução ao Eclipse Exercícios propostos para a aula SECÇÃO 1.1 A primeira aula de laboratório tem como objetivo a introdução à escrita, compilação e debugging de programas escritos em Java, utilizando o ambiente de desenvolvimento integrado Eclipse. Pretende-se nesta aula implementar um programa que realiza um conjunto de operações sobre números naturais. Ao longo da aula serão realizadas as seguintes tarefas: 1. criação e configuração de um novo projeto no Eclipse; 2. compilação, debugging e correção do programa; 3. implementação recursiva de algumas operações. 3
9 1.1.1 Criação de um projeto no Eclipse 1. Comece por entrar na sua área de trabalho, com o login e password do Fenix. Inicie o programa Eclipse Juno. 2. Crie um novo projecto File > New Java Project. Coloque o título Aula1. 3. Crie uma nova classe File > New Class. Coloque no nome Utils e verifique as opções. 4. Está pronto para desenvolver funções de pacotes de utilitários Compilação, Debugging e correção dos programas 1. Crie a função fatorial. Teste a função para alguns valores fazendo output destes valores; 2. Depure o programa: Crie breakpoints e entre na vista de Debug. 3. Implemente recursivamente a função fatorial e depure-a. 4. Escreva um algoritmo de ordenação à sua escolha. Depure o programa criado. 5. Escreva uma função que calcula o traço de uma matriz. 6. Escreva um função que testa se um dado elemento ocorre num vetor. Melhore a função anterior supondo que o vetor recebido está ordenado. 4
10 Algumas propostas de resolução Apresenta-se algum do código da resolução de alguns exercícios da aula. O código para a implementação do cálculo da função fatorial quando é dado um número n: 1 public class Utils { 2 3 public static void main ( String [] args ) { 4 int n =4; 5 boolean x; 6 x= teste (n); 7 if(x == true ){ 8 System. out. println ("O valor de " + n+"! e :" + factorial (n)); 9 } else { 10 System. out. println ("O valor de " + n+" esta incorrecto."); 11 } 12 } private static boolean teste ( int n) { 15 if(n >0) { 16 return true ;} 17 else { 18 return false ; 19 } 20 } 21 5
11 22 private static int factorial ( int n) { 23 int i=1, r =1; 24 while (i< n){ 25 i ++; 26 r*=i; 27 } 28 return r; 29 } 30 } A implementação de forma recursiva pode ser feita através do seguinte código: 1 public class Utils2 { 2 3 public static void main ( String [] args ) { 4 int n =6; 5 boolean x; 6 x= teste (n); 7 if(x == true ){ 8 System. out. println ("O valor de " + n+"! e :" + fatorial (n)); 9 } else { 10 System. out. println ("O valor de " + n+" esta incorreto."); 11 } 12 } private static boolean teste ( int n) { 15 if(n >0) { 16 return true ;} 17 else { 18 return false ; 19 } 20 } 6
12 21 22 private static int factorial ( int n) { 23 if(n ==1) { 24 return 1; 25 } 26 else { 27 return n* factorial (n -1) ; 28 } 29 } 30 } Uma possível implementação da ordenação de um vetor pode ser idealizado através de: 1 public class Utils3 { 2 3 public static void main ( String [] args ) { 4 int vec []; 5 vec = new int [4]; 6 vec [0]=1; 7 vec [1]=5; 8 vec [2]=3; 9 vec [3]=2; 10 int i; 11 i =0; 12 while (i< vec. length ){ 13 int j=i,min = vec [i], pos =i; 14 int aux ; 15 while (j< vec. length ){ 16 if(vec [j]< min ){ 17 pos =j; 18 } 19 aux = vec [i]; 20 vec [i]= vec [ pos ]; 21 vec [ pos ]= aux ; 7
13 22 j ++; 23 } 24 i ++; 25 } 26 System. out. println ( vec [0] + ";" + vec [1] + ";" + vec [2] + ";" + vec [3]) ; 27 } 28 } Uma possível implementação do cálculo do traço de uma matriz é: 1 public class Utils5 { 2 3 public static void main ( String [] args ) { 4 double mat [][]; 5 mat = new double [2][2]; 6 mat [0][0]=1.5; 7 mat [0][1]=5.5; 8 mat [1][0]=3.3; 9 mat [1][1]=2.2; 10 int i =0; 11 double soma =0; 12 while (i <= mat. length -1) { 13 soma += mat [i][i]; 14 i ++; 15 } 16 System. out. println ( soma ); 17 } 18 // } A implementação do teste de ocorrência de um número num vetor: 8
14 1 public class Utils6 { 2 3 public static void main ( String [] args ) { 4 int vec []; 5 vec = new int [4]; 6 vec [0]=1; 7 vec [1]=5; 8 vec [2]=3; 9 vec [3]=2; 10 int n= 6; 11 boolean r; 12 r= ocorrencia (vec,n); 13 if(r == true ){ 14 System. out. println ("O valor ocorre "); 15 } else { 16 System. out. println ("O valor nao ocorre "); 17 } 18 } private static boolean ocorrencia ( int [] vec, int n) { 22 int i =0; 23 while (i <= vec. length -1) { 24 if(vec [i ]== n){ 25 return true ;} 26 i ++; 27 } 28 return false ;} 29 } 9
15
16 Prática 2 Implementação de dados abstratos Exercícios propostos para a aula SECÇÃO 2.1 Considere o tipo de dados lista ordenada implementado em Java da seguinte forma: 1 class Node { 2 int val ; 3 Node next ; 4 } 5 6 public class Lista { 7 int comp ; 8 Node prim ; } 11
17 Implemente a classe lista com a seguinte interface 1. ins: recebe um inteiro acrescenta à lista o inteiro de forma a que esta se mantenha ordenada (por ordem crescente). 2. vazq: testa se a lista é vazia. 3. pert: recebe um inteiro e verifica se o inteiro pertence à lista. 4. ret: recebe um inteiro e apaga uma ocorrência do inteiro na lista. 5. apaga: recebe uma lista e apaga todos os elementos da lista. 12
18 SECÇÃO 2.2 Exercícios propostos adicionais 1. Implemente a classe da página anterior com um nó bidirecional. 2. Suponha que cerca de 70% inserções correspondem a inserir um elemento maior que todos os elementos que se encontram na lista. Faça alterações à implementação do tipo de dados lista para que a implementação da função ins tenha o custo médio mais baixo possível. Indique qual o número médio de comparações necessárias para inserir um elemento supondo que nos restantes 30% dos casos o elemento a colocar poderá ser colocado em qualquer posição (exceto a última) com igual probabilidade. 3. Usando a classe de nó do Exercício 1, implemente uma lista circular (não ordenada) onde o primeiro e último elemento estão ligados. Considere as seguintes funções: a) O construtor retorna a lista vazia. b) ins: recebe um inteiro e acrescenta o inteiro no fim da lista. c) vazq: testa se a lista é vazia. d) pert: recebe um inteiro e verifica se o inteiro pertence à lista. e) ret: recebe um inteiro e apaga uma ocorrência do inteiro da lista. f) apaga: recebe uma lista e apaga todos os elementos da lista. 13
19
20 Algumas propostas de resolução O código para a implementação de uma lista com o respetivo interface: 1 public interface Lista { 2 void ins ( int i); 3 boolean vazq (); 4 boolean pert ( int i); 5 void ret ( int i); 6 void apaga (); 7 } 1 public class Node { 2 int val ; 3 Node next ; 4 5 Node ( int v){ 6 val =v; 7 next = null ; 8 } 9 } 1 public class ImpLista implements Lista { 2 15
21 3 int comp ; 4 private Node prim ; 5 6 public void ins ( int i) { 7 Node n= new Node (i); 8 // Node aux = prim ; 9 if ( comp ==0) { 10 prim =n; 11 comp =1; 12 } 13 if( prim. val >= i){ 14 n. next = prim ; 15 prim = n; 16 } 17 Node aux = prim ; 18 int j =1; 19 while ( aux. next.val < i && j< comp -1) { 20 aux = aux. next ; 21 j ++; 22 } 23 if(j== comp -1) { 24 j=j -1; 25 aux. next =n; 26 n. next = null ; 27 } else { 28 Node aux2 = aux. next ; 29 aux. next =n; 30 n. next = aux2 ; 31 } 32 comp = comp +1; 33 } public boolean vazq () { 36 return comp ==0; 37 } 38 16
22 39 public boolean pert ( int i) { 40 int j =1; 41 Node aux = prim ; 42 while (j< comp ){ 43 if(aux. val == i) return true ; 44 j ++; 45 } 46 return false ; 47 } public void ret ( int i) { 50 if( pert (i)== true ){ 51 if( comp ==1 && prim. val ==i){ 52 comp =0; 53 prim = null ; 54 } else { if( prim. val ==i){ 55 prim = prim. next ; 56 comp =comp -1; 57 } else { 58 Node aux1 = prim ; 59 Node aux2 = aux1. next ; 60 while ( aux2. val!=i){ 61 aux2 = aux2. next ; 62 aux1 = aux1. next ; aux1. next = aux2. next ; 65 comp =comp -1; 66 } 67 } 68 } 69 } public void apaga () { 72 comp =0; 73 prim. val = -1; 74 prim. next = null ; } 17
23 75 } 76 } O código para a implementação de uma lista bidirecional com o respetivo interface: 1 public interface Listabi { 2 3 void ins ( int i); 4 boolean vazq (); 5 boolean pert ( int i); 6 void ret ( int i); 7 void apaga (); 8 } 1 public class Nobi { 2 int val ; 3 Nobi next ; 4 Nobi previous ; 5 6 Nobi ( int v){ 7 val =v; 8 next = null ; 9 previous = null ; 10 } 11 } 1 public class Implistabi implements Listabi { 2 3 int comp ; 4 private Nobi prim ; 18
24 5 6 public void ins ( int i) { 7 Nobi n= new Nobi (i); 8 // Node aux = prim ; 9 if ( comp ==0) { 10 prim =n; 11 comp =1;} 12 if( prim. val >= i){ 13 n. next = prim ; 14 n. next. previous =n; 15 prim =n; 16 } 17 Nobi aux = prim ; 18 int j =1; 19 while ( aux. next.val < i && j< comp -1) { 20 aux = aux. next ; 21 j ++; 22 } 23 if(j== comp -1) { 24 n. previous = aux ; 25 n. next = null ; 26 } else { 27 n. next = aux. next ; 28 n. previous = aux. previous ; 29 } 30 comp = comp +1; 31 } public boolean vazq () { 34 return comp ==0; 35 } public boolean pert ( int i) { 38 int j =1; 39 Nobi aux = prim ; 40 while (j< comp ){ 19
25 41 if(aux. val == i) return true ; 42 j ++; 43 } 44 return false ; 45 } public void ret ( int i) { 48 if( pert (i)== true ){ 49 if( prim. val ==i){ 50 prim = prim. next ; 51 prim. previous = null ; 52 comp =comp -1; 53 } else { 54 Nobi aux = prim ; 55 while ( aux. val!=i){ 56 aux = aux. next ; 57 } 58 aux. next. previous = aux. previous ; 59 comp =comp -1; 60 } 61 } 62 } public void apaga () { 65 comp =0; 66 prim. val = -1; 67 prim. next = null ; 68 prim. previous = null ; 69 } } O código para a implementação de uma lista circular com o respetivo interface: 20
26 1 public interface Listacircular { 2 void nova (); 3 void ins ( int i); 4 boolean vazq (); 5 boolean pert ( int i); 6 void ret ( int i); 7 void apaga (); 8 } 1 public class Implistacircular implements Listacircular { 2 3 int comp ; 4 protected Node prim ; 5 6 public void nova () { 7 prim = null ; 8 comp =0; 9 } public void ins ( int i) { 12 Node n = new Node (i); 13 if( comp ==0) { 14 prim =n; 15 n. next =n; 16 comp = comp +1; 17 } else { 18 int j =1; 19 Node aux = prim ; 20 while (j< comp ){ 21 aux = aux. next ; 22 j ++; 23 } 24 n. next = prim ; 25 aux. next =n; 21
27 26 } 27 } public boolean vazq () { 30 return comp ==0; 31 } public boolean pert ( int i) { 34 int j =1; 35 Node aux = prim ; 36 while (j< comp ){ 37 if(aux. val == i) return true ; 38 j ++; 39 } 40 return false ; 41 } public void ret ( int i) { 44 if( pert (i)== true ){ 45 if( comp ==1 && prim. val ==i){ 46 comp =0; 47 prim = null ; 48 } else { if( prim. val ==i){ 49 prim = prim. next ; 50 comp =comp -1; 51 } else { 52 Node aux1 = prim ; 53 Node aux2 = aux1. next ; 54 while ( aux2. val!=i){ 55 aux2 = aux2. next ; 56 aux1 = aux1. next ; 57 } 58 aux1. next = aux2. next ; 59 comp =comp -1; 60 } 61 } 22
28 62 } 63 } public void apaga () { 66 comp =0; 67 prim. val = -1; 68 prim. next = null ; 69 } 70 } 23
29
30 Prática 3 Notação assimptótica No exercícios que se seguem o aluno deve ter em atenção que podem ser usadas notações diferentes para a notação assimptótica. Em algumas literaturas é usado o símbolo de pertença enquanto que noutras é usado o sinal de igual com a interpretação óbvia. Exercícios propostos para a aula SECÇÃO Assuma que os termos que se seguem expressão o tempo T(n) gasto por um algoritmo na resolução de um problema para instâncias de tamanho n. Indique o termo dominante e a menor complexidade Oh-grande de cada exemplo. a) n n b) 500n + 100n 1,5 + 50n log 10 n c) 2 n + 2.5n 1.75 d) n 2 + log 2 n + n(log 2 n) 25
31 e) 2n log 3 n + n log 2 n f) 3 log 8 n + log 2 log 2 log 2 n g) 100n n 2 h) 0.01n + 100n 2 i) 2n + n n 1.25 j) 0.01n log 2 n + n(log 2 n) 2 k) 100n log 3 n + n n l) log 4 n + log 2 log 2 n 2. Diga quais das seguintes afirmações são verdadeiras. a) 3n n log n = O(n log n) b) 3n n log n = Ω(n 2 ) c) 3n n log n = Θ(n 2 ) d) n log n + n/2 = O(n) e) 10 n + log n = O(n) f) n + log n = O(log n) g) n + log n = Θ(log n) h) n + log n = Θ(n) i) 2 n + log n = Θ( n) j) n + log n = Ω(1) k) n + log n = Ω(log n) l) n + log n = Ω(n) 3. Diga quais das seguintes afirmações são verdadeiras. Corrija as falsas. a) O( f + g) = O( f ) + O(g); b) O( f g) = O( f ) O(g); c) g = O( f ) e h = O( f ) então g = O(h); d) n 4 = O(n 6 ); 26
32 e) 2 n+1 = O(2 n ); f) 2 2n = O(2 n ). 4. Prove rigorosamente que: a) 1 2 n2 3n = Θ(n 2 ); b) 6n 3 = Θ(n 2 ). 5. Ordene por ordem crescente na ordenação da notação Oh-grande as seguintes funções: log n; 2 n 3 ; n 5/2 ; 2 3 log n ; n; 4 n; log 3 n; n 10 ; 2 log n ; 2 3n ; log n 27
33
34 Algumas propostas de resolução 1. a) termo 0.001n 3 ; ordem O(n 3 ); b) termo 100n 1.5 ; ordem O(n 1.5 ); c) termo 2 n ; ordem O(2 n ); d) termo n 2 ; ordem O(n 2 ); e) termo são ambos; ordem O(n log n); f) termo 3 log 8 n; ordem O(log n); g) termo 0.01n 2 ; ordem O(n 2 ); h) termo 100n 2 ; ordem O(n 2 ); i) termo 0.5n 1.25 ; ordem O(n 1.25 ); j) termo n(log 2 n) 2 ; ordem O(n(log 2 n) 2 ); k) termo n 3 ; ordem O(n 3 ); l) termo log 4 n; ordem O(log n); 2. a) falso; b) verdadeiro; c) verdadeiro; d) falso; e) verdadeiro; f) falso; g) falso; h) falso; 29
35 i) verdadeiro; j) verdadeiro; k) verdadeiro; l) falso; 3. Diga quais das seguintes afirmações são verdadeiras. Corrija as falsas. a) O( f + g) = O( f ) + O(g); Falso - O( f + g) = O(max{ f, g}) b) O( f g) = O( f ) O(g); Verdadeiro c) g = O( f ) e h = O( f ) então g = O(h); Falso - g = O( f ) e f = O(h) então g = O(h) d) n 4 = O(n 6 ); Verdadeiro e) 2 n+1 = O(2 n ); Verdadeiro f) 2 2n = O(2 n ). Falso 4. Prove rigorosamente que: a) 1 2 n2 3n = Θ(n 2 ); Para provar que 1 2 n2 3n O(n 2 ) basta notar que qualquer que seja o n natural 1 2 n2 3n n 2 pelo que basta tomar na definição de classe Oh n 0 = 1 e c = 1; Para provar que 1 2 n2 3n θ(n 2 ) note-se que: 1 2 n2 3n 1 3 n2 n 18 Basta então tomar na definição de Ω, c = 1/3 e n 0 = 18. b) 6n 3 = Θ(n 2 ). Claramente 6n 3 Ω(n 2 ) pois qualquer que seja o n 6n 3 n 2. Tem de se mostrar então que 6n 3 / Ø(n 2 ). Se 6n 3 Ø(n 2 ) então qualquer que fosse o c e existia n 0 tal que para todo o n n 0 6n 3 cn 2 ou seja n c/6 o que é impossível. 5. Ordene por ordem crescente na ordenação da notação Oh-grande as seguintes funções: log n log n log 3 n 4 n n 2 log n n 5/2 2 3 log n n n 2 n3 30
36 Prática 4 Pesquisa binária e árvores de pesquisa Exercícios propostos para a aula SECÇÃO 4.1 Implemente a pesquisa binária em vectores ordenados. Implemente a classe árvore ternária com os seguinte métodos: ArvTer() que constrói uma árvore vazia; ArvTer(int key, ArvTer l, ArvTer c, ArvTer d) que constrói uma árvore ternária com os descendentes óbvios; public boolean isheap() que retorna true se a árvore é um acervo, e falso caso contrário. public boolean pesquisa(int key) que assume que a árvore é um acervo e retorna true se a chave ocorre na árvore e false caso contrário. 31
37 Exercícios propostos 1. Implemente uma árvore com um número arbitrário de descendentes. 32
38 Algumas propostas de resolução 1 public class Trinode { 2 ArvTer ltree, ctree, rtree ; 3 int key ; 4 Trinode ( int i, ArvTer l, ArvTer c, ArvTer r){ 5 key =i; 6 ltree =l; 7 ctree =c; 8 rtree =r; 9 } 10 } 1 public class ArvTer { 2 Trinode root ; 3 4 public ArvTer () { 5 // TODO Auto - generated method stub 6 root = null ; 7 } 8 9 public ArvTer ( int key, ArvTer l, ArvTer c, ArvTer r) { 10 // TODO Auto - generated method stub 11 root = new Trinode (key, l, c, r); 12 } 13 33
39 14 public boolean isheap () { 15 if( root == null ) return true ; 16 if( root. ltree!= null && root. ltree. root!= null &&( root.key <= root. ltree. root. key! root. ltree. isheap ())) return false ; 17 if( root. ctree!= null && root. ctree. root!= null &&( root.key <= root. ctree. root. key! root. ctree. isheap ())) return false ; 18 if( root. rtree!= null && root. rtree. root!= null &&( root.key <= root. rtree. root. key! root. rtree. isheap ())) return false ; 19 return true ; 20 } public boolean pesquisa ( int k) { 23 if( root == null ) return false ; 24 if( root.key >k) return false ; 25 if( root. key ==k) return true ; 26 return ( root. ltree!= null && root. ltree. pesquisa (k)) 27 ( root. ctree!= null && root. ctree. pesquisa (k) ) 28 ( root. rtree!= null && root. rtree. pesquisa (k) ); 29 } 30 } 34
40 Prática 5 Grafos com matrizes de adjacência Exercício propostos para a aula SECÇÃO Implemente o tipo de dados grafo com matrizes de adjacência em Java com os seguintes métodos: classe grafo com o construtor que recebe a dimensão do grafo; adi aresta (recebe dois inteiro e adiciona a aresta entre os nós indexados pelos inteiros); rem aresta (recebe dois inteiro e retira a aresta entre os nós indexados pelos inteiros); adjacenteq (testa de se um nó é adjacente a outro); acessível (testa se um nó é acessível a partir de outro); 35
41 SECÇÃO 5.2 Exercícios propostos Implemente o tipo de dados grafo com listas de adjacência com os métodos acima descritos. 36
42 Proposta de resolução 1 public class GOMA { 2 int [][] MA; 3 4 public GOMA ( int dim ){ 5 MA=new int [ dim ][ dim ]; 6 } 7 8 public void adi_ aresta ( int i, int j) { 9 MA[i][j ]=1; } public void rem_ aaresta ( int i, int j) { 14 MA[i][j ]=0; 15 } public boolean adjacenteq ( int i, int j) { 18 return MA[i][j ]==1; 19 } private static int proxavisitar ( int [] v){ 22 int i=v. length -1; 23 while (i >=0 && v[i ]!=1) { 24 i - -; 25 } 26 return i; 37
43 27 } public boolean acessivel ( int i, int j) { 30 int aux,next,v []= new int [MA. length ]; 31 v[i ]=1; 32 next = proxavisitar (v); 33 while ( next!= -1) { 34 if( next ==j) return true ; 35 v[ next ]=2; 36 aux =0; 37 while (aux <v. length ) { 38 if( adjacenteq (next, aux ) && v[ aux ]==0) v[ aux ]=1; 39 aux ++; 40 } 41 next = proxavisitar (v); 42 } 43 return false ; 44 } public static void main ( String [] args ) { 47 GOMA g= new GOMA (3) ; 48 g. addaresta (1,0) ; 49 g. addaresta (0,1) ; 50 g. addaresta (2,1) ; 51 System. out. println (g. acessivel (0,2) ); 52 } 53 } 38
44 Prática 6 Pesquisa em profundidade em grafos Exercícios propostos para a aula SECÇÃO Implemente o algoritmo Deep First Search baseado numa estrutura de pilha (LIFO); 2. Crie uma função que testa se um dado grafo é conexo ou não. 39
45
46 Proposta de resolução 1 public interface Tabela { 2 public void insere ( int i); 3 public void retira ( int i); 4 public boolean vazia (); 5 public boolean pesquisa ( int i); 6 } 1 public interface GrafoO { 2 public void addaresta ( int i, int j); 3 public void retiraaresta ( int i, int j); 4 public boolean adjacenteq ( int i, int j); 5 public int [] DFS ( int i); 6 public boolean conexo (); 7 } 1 public interface Pilha { 2 public void insere ( int i); 3 public boolean vazia (); 4 public void retira (); 5 public int ultimo (); 6 } 41
47 1 class Node { 2 int val ; 3 Node next ; 4 } 1 public class Pilhadyn implements Pilha { 2 3 protected Node first, last ; 4 5 public Pilhadyn (){ 6 first = null ; 7 last = null ; 8 } 9 10 public void insere ( int i) { /* insere no fim da lista */ 11 Node aux = new Node (); 12 aux. val =i; 13 aux. next = null ; 14 if( last!= null ){ 15 last. next = aux ; 16 last = aux ; 17 } else { 18 last = aux ; 19 first = aux ; 20 } 21 } public boolean vazia () { 24 return first == null ; 25 } public void retira () { /* retira o ultimo da lista */ 28 Node aux = first ; 29 if(aux == null ) return ; 42
48 30 if(aux. next == null ) { 31 first = null ; 32 last = null ; 33 } 34 else { 35 while ( aux. next!= last ) aux = aux. next ; 36 last = aux ; 37 aux. next = null ; 38 } 39 } public int ultimo () { 42 if( last!= null ) return last. val ; 43 return -1; 44 } public int primeiro () { 47 if( first!= null ) return first. val ; 48 return -1; 49 } public FilaP copia (){ 52 FilaP n= new FilaP (); 53 Node aux = first ; 54 while ( aux!= null ){ 55 n. insere ( aux. val ); 56 aux = aux. next ; 57 } 58 return n; 59 } 60 } 1 public class GOLA implements GrafoO { 2 FilaP LA []; 43
49 3 4 public GOLA ( int dim ){ 5 LA=new FilaP [ dim ]; 6 int i =0; 7 while (i<dim ) { 8 LA[i]= new FilaP (); 9 i ++; 10 } 11 } public void addaresta ( int i, int j) { 14 LA[i]. insere (j); 15 } public void retiraaresta ( int i, int j) { 18 LA[i]. retira (j); 19 } public boolean adjacenteq ( int i, int j) { 22 return LA[i]. pesquisa (j); 23 } FilaP adjacentes ( int i) { 26 return LA[ i]. copia (); /* cria uma copia a arvore com raiz i */ 27 } public int [] DFS ( int v) { 31 int numnos =LA. length ; 32 int [] order = new int [ numnos ]; 33 int [] visitados = new int [ numnos ]; 34 // 0 nao visitados, 1 colocados na lista w, 2 ja visitados 35 boolean b; 36 Pilhadyn w = new Pilhadyn (); 44
50 37 w. insere (v); 38 FilaP ladj ; /* lista de nos ( inteiros ) auxiliar */ 39 int i=0, cur_ord =0, nextno ; 40 while (i< numnos ) { visitados [i ]=0; i ++;} /* comeca por se por todos os valores a 0 indicando que nenhum vertice foi visitado */ 41 order [v]= cur_ord ; 42 while (!w. vazia ()) { 43 nextno =w. ultimo (); 44 w. retira (); 45 visitados [ nextno ] =2; 46 ladj = adjacentes ( nextno ); /* copia */ 47 cur_ ord ++; 48 order [ nextno ]= cur_ord ; 49 b= false ; 50 while (! ladj. vazia () &&!b) { 51 if( visitados [ ladj. ultimo () ]==0) { 52 w. insere ( ladj. ultimo ()); 53 visitados [ ladj. ultimo () ]=1; 54 b= true ; 55 } 56 ladj. retira (); 57 } 58 } 59 return order ; 60 } public boolean conexo (){ 63 int [] order = new int [LA. length ]; 64 order = DFS (LA [0]. primeiro ()); 65 int i =0; 66 while (i< LA. length ){ 67 if ( order [i ]==0) return false ; 68 i ++; 69 } 70 return true ; 45
51 71 } 72 } 46
Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins
Prova PMR00 o. semestre 0 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço.. ( pontos) Um heap binário é uma árvore binária completa (todos os níveis exceto o último
Leia maisDepartamento de Ciência de Computadores Estruturas de Dados (CC114)
1. Cotação de cada pergunta: 1. 30 / 2. 40 / 3. 30 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 30%) Responda às seguintes questões:
Leia maisProva 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins
Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore
Leia maisUNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas
UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra
Leia maisÁrvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo
PMR2300 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó (exceto a
Leia maisÁrvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
Leia maisÁrvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo
PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó
Leia maisDepartamento de Ciência de Computadores Estruturas de Dados (CC114)
1. Cotação de cada pergunta: 1. 32 / 2. 36 / 3. 32 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 32%) Responda às seguintes questões:
Leia maisProva 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins
Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Os códigos fornecidos na seção Códigos-fonte de apoio podem ser referenciados
Leia maisGrupo 2 - Implementação de uma Classe Simples
Estruturas de Dados 2017/2018 Época Normal (15 de Junho de 2018) Versão A Duração: 2h30m + 30m Número mecanográco: Nome completo do estudante: Grupo 1 - Fundamentos de Java 1.1. Escreva pequenos excertos
Leia maisT(0) = 0 T(n) = 2*T((n-1)/2) + 1
SIN5013 - Exemplo de Prova do Conteúdo Semestral 1. Encontre as equações de recorrência dos seguintes métodos (não é necessário resolver, mas é preciso identificar precisamente suas equações de recorrência
Leia maisProva de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins
Prova de Recuperação PMR21/PMR2 1o. semestre 2 Prof. Thiago Martins Instruções: screva o nome e o número USP na folha de papel almaço. 1. (2 pontos) Uma pilha é uma estrutura de dados na qual o elemento
Leia maisDepartamento de Ciência de Computadores Estruturas de Dados (CC114)
1. Cotação de cada pergunta: 1. 32 / 2. 38 / 3. 30 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 32%) Responda às seguintes questões:
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Época Normal Resolução 13/junho/2015 A. [3.5 val] Algoritmos de ordenação e de pesquisa Considere-se as
Leia maisDepartamento de Ciência de Computadores Estruturas de Dados (CC114) FCUP 2010/11. 2 o Teste: 20/Junho/2011
1. Cotação de cada pergunta: 1. 30 / 2. 35 / 3. 35 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 30%) Responda às seguintes questões:
Leia maisÁrvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação
1 Árvores Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 2 Árvore Binária de Busca Definição: uma árvore binária de busca (ABB) é uma árvore binária na qual
Leia maisLista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013
Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void
Leia maisEstruturas de dados e algoritmos fundamentais
Ministério da Ciência, Tecnologia e Ensino Superior U.C. 21046 Estruturas de dados e algoritmos fundamentais 21 de Junho de 2013 INSTRUÇÕES PARA A RESOLUÇÃO DO EXAME, ACONSELHA-SE QUE LEIA ATENTAMENTE
Leia maisESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA
ESTRUTURAS DE DADOS E ALGORITMOS 1 LISTA LIGADA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande LISTA LIGADA (LINKED LIST) É uma estrutura de dados em que
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca Algoritmos e Estruturas de Dados I Nesta aula será apresentado o ADT árvore binária de busca, também conhecidas como dicionários binários Uma árvore binária de busca é uma estrutura
Leia maisLista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b.
Lista 1 8 de abril de 2013 1 Exercícios Básicos 1.1 Na bibliografia Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. 1.2 Outros 1. Projete
Leia maisESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA (ABORDAGEM RECURSIVA)
ESTRUTURAS DE DADOS E ALGORITMOS 1 LISTA LIGADA (ABORDAGEM RECURSIVA) Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande QUESTÕES DE IMPLEMENTAÇÃO Implementacao
Leia maisTécnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 08/2008
Leia maisProva Substitutiva PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins
Prova Substitutiva PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. 1. (20 pontos) Considere a classe HashSep que implementa uma
Leia maisINSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados
INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2004/2005 2 o Semestre RESOLUÇÃO DA REPESCAGEM DO 2 o TESTE B I. (2.0+1.5+1.5 = 5.0 val.) a) Qual das seguintes declarações pode
Leia maisExame de Estruturas de Dados 2010.Junho.26
Exame de Estruturas de Dados 2010.Junho.26 Duração: 2:30 horas Valorização: 12 valores. 1. Responda às seguintes questões: a) Faça o estudo da complexidade do seguinte método: 1. void fun2(int n, int v[])
Leia maisÁrvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich
Árvores Binárias SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista. Figuras editadas por Isadora Maria Mendes http://www.icmc.usp.br/~paulovic
Leia maisFCUP 2010/11. Departamento de Ciência de Computadores Estruturas de Dados (CC114) 1 o Teste: 27/Abril/2011
1 1 Departamento de Ciência de Computadores Estruturas de Dados (CC114) 1 o Teste: 27/Abril/2011 FCUP 2010/11 duração: 2 horas 1. Teste A (indicar o teste que estão a fazer na folha de resposta) 2. Cotação
Leia maisSIN Exemplo de Prova do Conteúdo Semestral
SIN5013 - Exemplo de Prova do Conteúdo Semestral 1. Escreva as equações de recorrência dos seguintes métodos (não é necessário resolver, mas é preciso identificar precisamente suas equações de recorrência
Leia maisQUESTÕES DE PROVAS ANTIGAS
CT-24 QUESTÕES DE PROVAS ANTIGAS ) Preencha a tabela abaixo com Î ou Ï: ω(log n) Θ(n) O(n log n) Ω(n 2 ) o(n ) 6n + 2n 2 + 2.log n + 4n + n.log n + log n 2) Dada a árvore binária abaixo, escreva os seus
Leia maisResposta da pergunta 2: Θ(n 3 ). Resposta da pergunta 8: 1. 7 O(n). Sim. 22. n log n O(1). Não. 3. n + 7 O(n). Sim. 4. n + 7 O(1). Não.
SSC0503 - Introdução à Ciência de Computação II Respostas da 1 a Lista Professor: Claudio Fabiano Motta Toledo (claudio@icmc.usp.br) Estagiário PAE: Jesimar da Silva Arantes (jesimar.arantes@usp.br) Resposta
Leia maisEdital de Seleção 053/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões
Edital de Seleção 053/2016 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: INSCRIÇÃO: Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome e o número da sua
Leia maisMAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017
PROVA 1 MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017 Nome: Número USP: Instruções: (1 ) Esta prova é individual. (2 ) Não destaque as folhas deste caderno. (3 ) A prova consiste de 6
Leia maisUsando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo
Usando o Eclipse - Fundamentos Professor Vicente Paulo de Camargo O Eclipse é um ambiente de desenvolvimento integrado (IDE) É a ferramenta mais utilizada pelas empresas, visto que pode ser configurada
Leia maisProva 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins
Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Indique na linha seguinte quatro das cinco questões abaixo que devem
Leia maisListas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de
Leia maisÁrvores. Estruturas de Dados. Prof. Vilson Heck Junior
Árvores Estruturas de Dados Prof. Vilson Heck Junior Árvores INTRODUÇÃO Introdução Árvores são estruturas de dados utilizadas para armazenar e recuperar dados de forma rápida e eficiente; Árvores não são
Leia maisProf. Jesus José de Oliveira Neto
Prof. Jesus José de Oliveira Neto É uma das estruturas de dados mais simples A idéia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo. Assim, quando um elemento novo
Leia maisINSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados
INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2004/2005 2 o Semestre RESOLUÇÃO DO 2 o TESTE A I. (2.0+1.5+1.5 = 5.0 val.) a) Qual das seguintes declarações pode ser usada para
Leia maisPalavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Leia maisEstruturas de Dados II
Estruturas de Dados II Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2086 Aula 2: Árvores http://www.do.ufgd.edu.br/rodrigosacchi Árvores Definição: Árvores Uma árvore T é um conjunto
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
Variáveis e Métodos de Classe Em Java, quer as classes quer as instâncias das classes são objectos. Onde está o estado da classe? Com que operações é manipulado? UBI, Departamento de Informática T04-1
Leia maisRESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:
RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em: http://www.oxnar.com.br/aulas/java ATIVIDADE ELABORAR O PROGRAMA DE CÁLCULOS DE ÁREAS USANDO
Leia maisLista 2 - PMR2300/3200
Lista 2 - PMR2300/3200 Fabio G. Cozman, Thiago Martins 8 de março de 2015 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u
Leia maisProblema do Caminho Hamiltoniano
Universidade de São Paulo Escola de Artes, Ciências e Humanidades Bacharelado em Sistemas de Informação Introdução à Ciência da Computação II Professores Luciano Digiampietri e Fábio Nakano Data de entrega:
Leia maisINSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados
INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados Ano Lectivo de 2006/2007 2 o Semestre 2 o Teste A - 2 de Julho de 2007 Duração: 2h - O teste é sem consulta. - Para cada questão
Leia maisAlgoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.
Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto
Leia maisEstruturas de Dados Encadeadas
CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos
Leia maisFilas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013
Filas de prioridade Marcelo K. Albertini de Dezembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover
Leia maisApêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:
Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.
Leia maisIntrodução aos Algoritmos e Estruturas de Dados. 2 o Teste - A
Ano Lectivo 2017/2018 2 o Semestre Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A Data: 20 de Junho de 2018 Duração: 1h30m RESOLUÇÃO I. (2,0 + 2,0 + 2,0 + 2,0 = 8,0 val.) I.a) Considere
Leia maisFabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes
Árvores Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Setembro de 2011 Tópicos Introdução Árvores binárias Implementação em Java Ordens de percurso em árvores binárias Altura de uma
Leia maisExame de Admissão. Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A: GABARITO
Exame de Admissão Programa de Pós-Graduação em Computação Aplicada Instituto Nacional de Pesquisas Espaciais 18 de setembro de 2018 A:2018-03 GABARITO Nome: Instruções: Preencha seu nome de forma legível,
Leia maisÁrvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP
Árvores e Mapas Luís Lopes DCC-FCUP Estruturas de Dados Estruturas não lineares Os arrays e as listas são exemplos de estruturas de dados lineares, cada elemento tem: um predecessor único (excepto o primeiro
Leia maisFilas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014
Filas de prioridade Marcelo K. Albertini de Novembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover
Leia maisFilas de Prioridade. Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações:
Filas de Prioridade e Heaps 9.1 Filas de Prioridade Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações: inserir um elemento na fila; remover o elemento
Leia maisAED2 - Aula 22 Busca em largura, cálculo de distâncias
AED2 - Aula 22 Busca em largura, cálculo de distâncias Relembrando a busca genérica, usando um versão alternativa: marque todos os vértices como não encontrados. marque s como encontrado. coloque s no
Leia maisFila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Fila e Deque SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisGrupo 2 - Implementação de uma classe simples
Exame Modelo Estruturas de Dados 2018/2019 Junho de 2019 Duração: 2h30m + 30m Número mecanográco: Nome completo do estudante: Grupo 1 - Fundamentos de Java 1.1. Escreva pequenos excertos de código para
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Frequência Resolução 19/maio/2015 A. [3.5 val] Algoritmos de ordenação e de pesquisa Considere-se as seguintes
Leia maisRESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;
Fundação CECIERJ - Vice Presidência de Educação Superior a Distância Curso de Tecnologia em Sistemas de Computação Disciplina: Programação Orientada a Objetos AP2 2 semestre de 2016. Nome Assinatura Observações:
Leia maisEdital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões
Edital de Seleção 024/2017 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: «Nome» INSCRIÇÃO: «Inscrição» Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome
Leia maisSobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga
Algoritmos e Programação II Aula 3 Sobrecarga *Adaptado do material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, com nomes
Leia maisLista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35
Lista Ordenada Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Definição Operações Representações Contígua Encadeada Aplicação Exercícios 2
Leia maisEstruturas de Dados Filas
Estruturas de Dados Filas Roteiro Introdução Definição de Fila (Queue) Aplicações Operações sobre Fila Implementação de Fila Com vetores Com listas encadeadas Exercícios Introdução Estamos acostumados
Leia maisUniversidade Federal do Ma Curso de Ciência da Computação
Universidade Federal do Ma Curso de Ciência da Computação Estrutura de Dados Prof. Anselmo C. de Paiva Depto de Informática Limitações dos vetores Vetores Simples, Rápidos Mas, é necessário especificar
Leia maisBusca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência
Busca Binária Aula 05 Equações com Recorrência Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Idéia: Divisão e Conquista Busca_Binária(A[l...r],k) 1:if r < lthen 2: index = 1
Leia maisEstruturas de dados e algoritmos fundamentais
Ministério da Ciência, Tecnologia e Ensino Superior U.C. 21046 Estruturas de dados e algoritmos fundamentais 11 de Setembro de 2015 INSTRUÇÕES PARA A RESOLUÇÃO DO EXAME, ACONSELHA-SE QUE LEIA ATENTAMENTE
Leia maisOrdenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I
Ordenação: QuickSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 15 Algoritmos e Estruturas de Dados I QuickSort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação
Leia maisINF 1620 P2-01/11/03 Questão 1 Nome:
INF 1620 P2-01/11/03 Questão 1 Considere a implementação de uma lista encadeada para armazenar as notas dos alunos de uma turma dada pelo tipo abaixo: struct lista { char nome[81]; int mat; float p1, p2,
Leia maisClasses, Herança e Interfaces
Escola de Artes, Ciências e Humanidades EACH-USP ACH2002 Introdução à Ciência da Computação II Professor: Delano Medeiros Beder revisada pelo professor: Luciano Digiampietri EACH Segundo Semestre de 2011
Leia maisAula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler
Aula 7 e 8 Filas e suas Aplicações Prof. Leticia Winkler 1 Definição de Fila (Queue) São estruturas de dados do tipo FIFO (first-in first-out) - o primeiro elemento a ser inserido, será o primeiro a ser
Leia maisProjeto e Análise de Algoritmos
Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais harison@pucpcaldas.br 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter
Leia mais1 Da aula teórica ao Java
Universidade Federal do ABC Bacharelado em Ciência da Computação Processamento da Informação - Prof. Fabrício Olivetti de França Guia de tradução entre Java e outras linguagens 1 Da aula teórica ao Java
Leia mais6. Pesquisa e Ordenação
6. Pesquisa e Ordenação Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 1 / 30 Pesquisa de Informação A pesquisa eficiente de informação
Leia maisProva Substitutiva PMR3201 1o. semestre 2018 Prof. Thiago Martins
Prova Substitutiva PMR301 1o. semestre 018 Prof. Thiago Martins Instruções Escreva o nome e o número USP na folha de papel almaço. Numere cada página. Indique o total de páginas na primeira página. Os
Leia maisMAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017
PROVA 1 MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017 Nome: Número USP: Instruções: (1 ) Esta prova é individual. (2 ) Não destaque as folhas deste caderno. (3 ) A prova consiste de 6
Leia maisRecursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição
Recursividade Prof. Cesar Augusto Tacla Métodos iterativos Métodos iterativos utilizam estruturas de repetição For While Do while Normalmente, um método invoca outros métodos, não a si mesmo. 2 1 Recursividade
Leia maisLista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Leia maisAulas de. Algoritmos e Modelação Matemática
Aulas de Algoritmos e Modelação Matemática Paulo Mateus André Souto 2013 ii À guardiã Precaução dirigida aos alunos Os temas apresentados neste trabalho são uma versão muito preliminar da sebenta da cadeira
Leia maisINF 1010 Estruturas de Dados Avançadas
INF 1010 Estruturas de Dados Avançadas Listas de Prioridades e Heaps 12/09/16 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1 1 uma outra aplicação de árvores binárias lista de prioridades: lista
Leia maisFilas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I
Filas Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 12 Algoritmos e Estruturas de Dados I O que é uma fila? 1 4 2 3 Fila 1 2 3 4 TAD Fila Tipo Abstrato de dados com a seguinte característica:
Leia mais1. Cotação de cada pergunta: / / (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame.
Departamento de Ciência de Computadores Estruturas de Dados (CC114) 2 o Teste: 25/Junho/2012 FCUP 2011/12 duração: 2.5 horas 1. Cotação de cada pergunta: 1. 30 / 2. 35 / 3. 35 (Total: 100 pontos) 2. Responda
Leia maisESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES
ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES Listas de Prioridades! Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade! A prioridade associada a um dado pode
Leia maisÁrvores de Pesquisa. A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação.
Árvores de Pesquisa A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação. Particularmente adequada quando existe necessidade de considerar todos ou alguma combinação
Leia maisESTRUTURAS DE DADOS E ALGORITMOS HEAP BINÁRIA
ESTRUTURAS DE DADOS E ALGORITMOS 1 HEAP BINÁRIA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande HEAP BINÁRIA É uma árvore binária satisfazendo duas propriedades:
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação e Algoritmos / Programação II 2º Semestre Exame - 1ª chamada Resolução 20/06/2013 1. [2.0 val] Apontadores (Responder esta questão nesta folha e entregar com
Leia maisAnálise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Métodos de busca - seqüêncial - binária Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com Onde Estamos Ementa Revisão: Estrutura de dados;crescimento
Leia maisCAL ( ) MIEIC/FEUP Estruturas de Dados ( )
Conjuntos Disjuntos R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CPAL, 2010/2011 1 Conjuntos Disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura
Leia maisHeaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35
Heaps Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Introdução Definição de Heap Heap Binária Implementação com vetor Fila de Prioridades
Leia maisTeoria dos Grafos Aula 6
Teoria dos Grafos Aula 6 Aula passada Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Aula de hoje BFS implementação Complexidade Busca em profundidade (DFS) Conectividade, componentes
Leia maisdouble x; x = enigmab1(100);
8h Universidade Federal do ABC Avaliação: Prova 02 Disciplina: Processamento da Informação Turmas: A4, A5 (8hs) Professor: Jesús P. Mena-Chalco Data: 05/05/2016 Nome: RA: Instruções para a prova (leia
Leia maisGrafos: Busca. SCE-183 Algoritmos e Estruturas de Dados 2. Thiago A. S. Pardo Maria Cristina
Grafos: Busca SCE-183 Algoritmos e Estruturas de Dados 2 Thiago A. S. Pardo Maria Cristina Percorrendo um grafo Percorrendo um Grafo Percorrer um grafo é um problema fundamental Deve-se ter uma forma sistemática
Leia maisEstrutura de Dados: Aula 3 - Linguagem C
Estrutura de Dados: Aula 3 - Linguagem C Uso de Memória Alocação de memória Estática Ocorre em tempo de compilação no momento em que se define uma variável ou estrutura é necessário que se definam seu
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Especial Resolução 19/07/2013 A. [4.75 val] Algoritmos de ordenação e de pesquisa (usando memória estática
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia mais