7

Cálculo Numérico: Interpolação Polinomial com Bubble Sort

Embed Size (px)

DESCRIPTION

Trabalho com a finalidade de estimar o tempo de execução do algoritmo de ordenação interna bubble sort utilizando conceitos de cálculo numérico.

Citation preview

Page 1: Cálculo Numérico: Interpolação Polinomial com Bubble Sort

Universidade Federal de Ouro Preto

Instituto de Ciências Exatas e Biológicas

Departamento de Computação

Cálculo Numérico

Primeiro Trabalho Prático

Johnnatan Messias P. Afonso

Professor - José Álvaro Tadeu Ferreira

Ouro Preto5 de maio de 2010

Page 2: Cálculo Numérico: Interpolação Polinomial com Bubble Sort

Sumário

1 De�nição do Problema 1

2 Modelagem Matemática 1

3 Solução Numérica 1

4 Obtenção dos Resultados 1

4.1 Primeira Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.2 Segunda Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24.3 Terceira Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34.4 Quarta Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34.5 Quinta Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34.6 O Resultado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

5 Análise dos Resultados 4

6 Bubble Sort 4

Lista de Figuras

1 Tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Tabela dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Pontos escolhidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Lista de Programas

1 Algoritmo BubbleSort . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2

Page 3: Cálculo Numérico: Interpolação Polinomial com Bubble Sort

1 De�nição do Problema

Realizando testes com o método de ordenação BubbleSort obteve-se o seguinteresultado de tempo, em segundos, para as quantidades de elementos a serem orde-nados:

Figura 1: Tabela

Através dessa tabela de resultados deseja-se obter uma estimativa de tempo paraque o algoritmo ordene 95.000 elementos.

2 Modelagem Matemática

A função é crescente no intervalo x = [25000;150000], logo podemos resolver esseproblema utilizando interpolação polinomial.

3 Solução Numérica

Utilizarei o Método das Diferenças Divididas para estimar o tempo para ordenar95000 (noventa e cinco mil) elementos de um vetor, uma vez que esse método realizamenos operações aritméticas quando comparado ao Método de Lagrange.

4 Obtenção dos Resultados

Figura 2: Tabela dos Resultados

O polinômio interpolador é:

p(x) = y0 + (x−x0)DY0 + (x−x0)(x−x1)D2Y0 + (x−x0)(x−x1)(x−x2)D

3Y0 +(x−x0)(x−x1)(x−x2)(x−x3)D

4Y0 + (x−x0)(x−x1)(x−x2)(x−x3)(x−x4)D5Y0

1

Page 4: Cálculo Numérico: Interpolação Polinomial com Bubble Sort

Sabe-se que:

DrYi =Dr−1Yi+1 −Dr−1Yi

Xi+r −Xi

;

{i = 0, 1, 2, ..., n

r = 0, 1, 2, ..., n− r(1)

SendoD0Yi = Yi ; i = 0, 1, 2, ..., n (2)

Então podemos calcular as diferenças divididas de ordem 1, 2, 3, 4 e 5 nesse caso:

4.1 Primeira Ordem

DYi =Yi+1 − Yi

Xi+1 −Xi

, i = 0, 1, 2, ..., n− 1 (3)

DY0 =Y1 − Y0

X1 −X0

= 0, 000773 (4)

DY1 =Y2 − Y1

X2 −X1

= 0, 00147 (5)

DY2 =Y3 − Y2

X3 −X2

= 0, 00213 (6)

DY3 =Y4 − Y3

X4 −X3

= 0, 00252 (7)

DY4 =Y5 − Y4

X5 −X4

= 0, 00358 (8)

4.2 Segunda Ordem

D2Yi =DYi+1 −DYi

Xi+2 −Xi

, i = 0, 1, 2, ..., n− 2 (9)

D2Y0 =DY1 −DY0

X2 −X0

= 0, 000000012 (10)

D2Y1 =DY2 −DY1

X3 −X1

= 0, 000000011 (11)

D2Y2 =DY3 −DY2

X4 −X2

= 0, 000000009 (12)

D2Y3 =DY4 −DY3

X5 −X3

= 0, 000000021 (13)

2

Page 5: Cálculo Numérico: Interpolação Polinomial com Bubble Sort

4.3 Terceira Ordem

D3Yi =D2Yi+1 −D2Yi

Xi+3 −Xi

, i = 0, 1, 2, ..., n− 3 (14)

D3Y0 =D2Y1 −D2Y0

X3 −X0

= −1, 3x10−14 (15)

D3Y1 =D2Y2 −D2Y1

X4 −X1

= −2, 5x10−14 (16)

D3Y2 =D2Y3 −D2Y2

X5 −X2

= 1, 714x10−13 (17)

4.4 Quarta Ordem

D4Yi =D3Yi+1 −D3Yi

Xi+4 −Xi

, i = 0, 1, 2, ..., n− 4 (18)

D4Y0 =D3Y1 −D3Y0

X4 −X0

= −1, 26x10−19 (19)

D4Y1 =D3Y2 −D3Y1

X5 −X1

= 1, 785x10−18 (20)

4.5 Quinta Ordem

D5Yi =D4Yi+1 −D4Yi

Xi+5 −Xi

, i = 0, 1, 2, ..., n− 5 (21)

D5Y0 =D4Y1 −D4Y0

X5 −X0

= −1, 528x10−23 (22)

4.6 O Resultado

Para calcular a estimativa de tempo foram escolhidos os pontos:(80000;77,80),(100000;120,40),(120000;170,90).

Figura 3: Pontos escolhidos

3

Page 6: Cálculo Numérico: Interpolação Polinomial com Bubble Sort

Portanto:

p(x) = 77, 80+(x−80000)(0, 00213)+(x−80000)(x−100000)(0, 000000009) (23)

p(95000) = 77, 80+(95000−80000)(0, 00213)+(95000−80000)(95000−100000)(0, 000000009)(24)

p(95000) = 109,075 ∼= 109 segundos

5 Análise dos Resultados

O resultado obtido é coerente com o polinômio do problema, uma vez que 95000 ∈[80000; 100000] e ainda, de forma correspondente, 109 ∈ [77, 80; 120, 40].

6 Bubble Sort

BubbleSort é um simples método de ordenação que veri�ca todas as posições dovetor a �m de ordená-lo, comparando todos os elementos.

Para esse trabalho utilizou-se o seguinte algoritmo em C:

void BubbleSort (TArray∗ pA){

int i , j ;TItem aux ;

5 for ( i =0; i<pA−>Size −1; i++){

for ( j =1; j<pA−>Size−i ; j++){

i f (pA−>Pos i t i on s [ j ] . key<pA−>Pos i t i on s [ j −1] . key )10 {

aux = pA−>Pos i t i on s [ j ] ;pA−>Pos i t i on s [ j ]=pA−>Pos i t i on s [ j −1] ;pA−>Pos i t i on s [ j−1]=aux ;

}15 }

}}

Programa 1: Algoritmo BubbleSort

Ainda é possível otimizá-lo bastando-se incluir uma variável "troca"que veri-�que se houve uma troca de posições dos elementos do vetor, diminuindo o temponecessário para a execução do algoritmo bem como o número de comparações.

Possui ordem de complexidade em número de comparações On2, isto é:

O(n) =n−2∑i=0

n− i− 1 =n−2∑i=0

n−n−2∑i=0

i−n−2∑i=0

1 =n2 − n

2(25)

[1]Na prática esse algoritmo não é comumente utilizado para ordenação de uma

grande quantidade de elementos, uma vez que é muito lento para execução, por isso

4

Page 7: Cálculo Numérico: Interpolação Polinomial com Bubble Sort

frequentemente, em computação, utiliza-se o método QuickSort. O QuickSort é oalgoritmo de ordenação interna (Memória RAM) mais rápido que se conhece e emseu melhor caso possui ordem de complexidade n log(n), ou seja, O(n log(n)). [2]

Referências

[1] David Menotti. Algoritmos e Estruturas de Dados I: Ordenação I SelectSort,

InsertSort, BubbleSort. 2009.

[2] David Menotti. Algoritmos e Estruturas de Dados I: Ordenação III QuickSort.2009.

5