Você está na página 1de 2

Lista I Introdução à Computação II, 5954006

Lista de Exercícios I – Análise de Algoritmos

1. Faça a análise por operações primitivas e a análise assintótica (notação “O”) dos seguintes
fragmentos de programas

1 for(i=1; i<=n; i++) for(i=1; i<=n; i++) for(i=1; i<=n; i++)


2 for(j=1; j<=n; j++) for(j=1; j<=i; j++) for(j=1; j<=i; j++)
3 for(k=1; k<=n; k++) for(k=1; k<=j; k++) for(k=1; k<=3; k++)
4 x = x + 1; x = x + 1; x = x + 1;
(a) (b) (c)

1 for(i=1; i<=n; i++) for(i=1; i<=n; i++) i = 1;


2 if(i % 2 == 0) if(i == n) while(i <= n)
3 x = x + 1; x = x + 1; { x = x + 1;
4 else else i = i + 1;
5 x = x - 1; x = x - 1; }
(d) (e) (f)
Respostas: Somente a análise assintótica
(a) O(n3)
(b) O(n3)
(c) O(n2)
(d) O(n)
(e) O(n)
(f) O(n)

2. Sejam os seguintes fragmentos de programas nos quais i e j são variáveis inteiras, B é uma
matriz de inteiros e n, p, m são variáveis inteiras positivas digitadas pelo usuário, sendo p
múltiplo de 2 :
fragmento 1: fragmento 2:

for ( i=0 ; i<m ; i++ ){


j=0 ; i=1;
while ( j<n ) { while (i<p )
B[ i ][ j ] = 5 * ( i + j ) ; i=i*2;
j = j+1 ;
}
}
Para os fragmentos dados, pede-se:
a) Faça a análise por operações primitivas;
b) Faça a análise assintótica (notação “O”) .

1
Lista I Introdução à Computação II, 5954006

3. Sejam os seguintes fragmentos de programas nos quais i, j, x, n são variáveis inteiras, sendo
que n é uma variável positiva digitada pelo usuário:

fragmento 1: fragmento 2:

i=0; for ( i=0 ; i < n ; i++ )


while (i < n ) { for ( j = i-2 ; j < i ; j++ )
if (i > 8) x=i+j;
x = x+1;
i++;
}

Para os fragmentos dados, pede-se:


a) Faça a análise por operações primitivas;
b) Faça a análise assintótica (notação “O”) .

4. Faça a análise assintótica (notação “O”) de um procedimento que multiplica duas matrizes
quadradas An,n e Bn,n? E para duas matrizes An,m e Bm,r?
Resposta: Admitindo-se o algoritmo convencional de multiplicação de matrizes, a
resposta deve ser próxima de O(n3) para matrizes quadradas. Para matrizes não
quadradas, O(nrm).

5. Dadas n variáveis booleanas x1, x2, ..., xn deseja-se imprimir todas as possíveis combinações
de valores lógicos que elas podem assumir. Por exemplo, se n = 2, haverá quatro
possibilidades: verdadeiro/verdadeiro, verdadeiro/falso, falso/verdadeiro, falso/falso.
Escreva um procedimento para executar essa tarefa. Qual a ordem de grandeza da
complexidade na notação “O”?
Resposta: Em geral, O(2n).

6. Escreva um procedimento para calcular:

n n!  n  1  n  1 
        
 m  m!( n  m)!  m   m  1

Qual a ordem de grandeza da complexidade na notação “O” do procedimento?


Resposta: Em geral, O(n)

Você também pode gostar