TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Analise e Complexidade de Algoritmo

Por:   •  9/6/2015  •  Trabalho acadêmico  •  1.688 Palavras (7 Páginas)  •  235 Visualizações

Página 1 de 7

ETAPA 1

Passo 1

Ler o Capítulo 1 – “Introdução”: Seção 1.3; subseções 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 ( ).

Complexidade ômega Ω, theta θ e ômicron O são usados para medir o custo computacional de um algoritmo à medida que a entrada aumenta e exposto em termos de uma função.

Complexidade Ômega (Ω) - Melhor Caso: É o menor tempo de execução em uma entrada de tamanho n. É pouco usado, por ter aplicação em poucos casos.

Exemplo:

Numa lista de n números para encontra-los, assume-se que a complexidade no melhor caso é f(n) = Ω(1), pois se assume que o número estaria logo na topo da lista.

Complexidade Theta (θ) - Caso Médio:Dos três, é o mais difícil de determinar, devendo-se obter a média dos tempos de execução de todas as entradas de tamanho N, ou baseado em probabilidade de determinada condição ocorrer. Deve-se obter a média dos tempos de execução de todas as entradas de tamanho n, ou baseado em probabilidade de determinada condição ocorrer: Em média será necessário visitar n/2 elementos do vetor até encontrar o elemento procurado. Muito difícil de determinar na maioria dos casos.

Exemplo:

f(n)=Ɵ(n/2) Complexidade Ômicron (O) - Pior Caso: Baseia-se no maior tempo de execução sobre todas as entradas de tamanho n.

Exemplo:

Se tivermos uma lista de n números e quisermos encontrar algum deles, assume-se que a complexidade no pior caso é O(n), pois se assume que o número estaria no final da lista.

Esse processo por sua vez é mais utilizado por ser mais fácil, obter o resultado, pois ele se baseia no maior tempo de execução sobre as entrada no tamanho N.

No pior caso será necessário visitar todos os n elementos do vetor até encontrar o elemento procurado. É o método mais fácil de obter. f(n)=0(1)

Passo 3

Usar as medidas de complexidade descritas acima e fazer as seguintes atividades:

1. Comparar uma função linear f(n) com uma função quadrática g(n) e mostrar que f(n) é Ômicron (g(n)), determinando constantes n0 natural e c real positivo;

R= Função Linear faz uma busca em cada elemento entrada, essa forma é mais simples devido a trabalhar apenas em pequenos algoritmos. Função Quadrática trabalha criando um loop dentro de outro loop, processando de dois em dois. Esse algoritmo é indicado em médio para pequenos algoritmos.

f(n) é o(g(n)):

-Função Linear f(n) = n + 2

-Função Quadrática g(n) = n²

f(n)=n+2

g(n)=n²

logo é evidente que:

n+2≤n²

-n² + n ≤ - 2 -> n² - n ≥ 2

Para n ≥ 2 é o(g(n)).

2. Comparar uma função exponencial f(n) com uma função cúbica g(n) e mostrar que f(n) é Ômega (g(n)), determinando constantes n0 natural e d real positivo;

R= Função Exponencial é considerada um algoritmo de muita força devido a utilizar uma abordagem simples para resolver determinados processos. Função Cúbica é parecida com quadrática pois esse trabalha de forma três em três quando o quadrática trabalha de forma dois em dois, esse algoritmo trabalha com loop dentro de mais dois loop.

f(n)Ω(g(n)):

- Função exponencial f(n) = 2n n

- Função cúbica g(n) = n³+2n

f(n)=2n n

g(n)= n³+2n

logo é evidente que:

2n n ≤ n³+2n, e portanto:

Para n ≥ 5 é Ω(g(n).

3. Comparar duas funções quadráticas f(n) e g(n) e mostrar que f(n) é Theta (g(n)), determinando constantes c, d reais positivos e n0 natural.

R= -Função quadrática f(n) = n²+3n+4

-Função quadrática g(n) = 5n²+3² o ≤ c1 f(n) ≤ g(n) o ≤ g(n) ≤ c2 f(n).

Passo 4

Criar um algoritmo que tenha pelo menos dois elementos que sejam comuns a maioria dos algoritmos como, por exemplo, atribuições simples, declarações, laços, laços aninhados, If-Then-Else. Entregar ao professor o Relatório 1 com todos os passos descritos nessa etapa.

RELATÓRIO 1

Procedure verifica _item_lista

(lista: tipolista; x; tipoitem; pos: integer);

Var i; integer;

Begin

I; =1;

Achou :=fale;

While (i a; j--) Verifica se na posição anterior do array é maior que 0 e se é maior que a posição seguinte ex: 4>0 && 4>2, e permanece no array ate que ambas codições sejam falsas

{

array[j + 1] = array[j]; Coloca o numero anterior na posição seguinte ex: {4,2,1,3} muda para {4,4,1,3}

array[j] = a; E por fim coloca o numero que foi armazenado neste caso o 2 na posição anterior ex: {4,4,1,3} para {2,4,1,3}

}

}

}

E faz isso até que o array seja ordenado por completo

- Método por Seleção:

Array{4,2,1,3};

public static void ordenar(int[] array) {

int index_min,

aux;

for (int i = 0; i < array.length; i++) { Começa comparando o primeiro numero

...

Baixar como (para membros premium)  txt (11 Kb)   pdf (85.5 Kb)   docx (19.9 Kb)  
Continuar por mais 6 páginas »
Disponível apenas no TrabalhosGratuitos.com