Universidade Federal de Ouro Preto
Instituto de Ciências Exatas e Biológicas
Departamento de Computação
Cálculo Numérico
Segundo Trabalho Prático
Johnnatan Messias P. Afonso
Rafaella Bicalho da Rocha
Professor - José Álvaro Tadeu Ferreira
Ouro Preto
21 de junho de 2010
Sumário
1 Denição do Problema 1
2 Modelagem Matemática 1
3 Solução Numérica 1
4 Obtenção dos Resultados 2
4.1 1a
Regra de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
4.2 Aplicação do Teorema do Valor Médio . . . . . . . . . . . . . . . . . 3
4.3 O Resultado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
5 Análise dos Resultados 3
6 Bubble Sort 3
Lista de Figuras
1 Tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Tabela dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Lista de Programas
1 Algoritmo BubbleSort . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2
1 Denição do Problema
Realizando testes com o método de ordenação BubbleSort obteve-se o seguinte
resultado 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
médio da execução do algoritmo.
2 Modelagem Matemática
Como a função é contínua no intervalo fechado [a;b] tal que a= 0 e b= 200000,
pode-se utilizar o método de integração numérica.
3 Solução Numérica
Foi utilizado o método de integração 1a
Regra de Simpson, uma vez que o inter-
valo foi dividido em 8 partes de mesmo tamanho de passo 25000.
Para calcular o tempo médio de execução do algoritmo precisaremos aplicar além
da 1a
Regra de Simpson, o Teorema do Valor Médio aplicado a Integrais.
Sendo f é uma função contínua em [a,b], e de acordo com o Teorema do Valor
Médio aplicado a Integrais, então existe um z(a,b), tal que:
f(z) =
1
b − a
b
a
f(x).dx (1)
1
4 Obtenção dos Resultados
Figura 2: Tabela dos Resultados
4.1 1
a Regra de Simpson
200000
0
f(x).dx (2)
Para n = 8:
h =
b − a
n
(3)
logo h = 25000
Pela 1a
Regra de Simpson, temos:
I =
h
3
(Y0 + 4Y1 + 2Y2 + 4Y3 + 2Y4 + 4Y5 + 2Y6 + 4Y7 + Y8) (4)
Considerando que:
(Y0 + 4Y1 + 2Y2 + 4Y3 + 2Y4 + 4Y5 + 2Y6 + 4Y7 + Y8) =
8
i=0
Ci.Yi (5)
8
i=0
Ci.Yi = 5546, 22 (6)
I =
25000
3
8
i=0
Ci.Yi = 46218500 (7)
2
4.2 Aplicação do Teorema do Valor Médio
Pelo Teorema do Valor Médio aplicado a Integrais, temos:
f(z) =
1
200000 − 0
200000
0
f(x).dx (8)
Onde f(z) é o tempo médio gasto para a execução do algoritmo.
4.3 O Resultado
De acordo com os dados anteriores, temos que:
200000
0
f(x).dx = 46218500 (9)
então,
f(z) =
1
200000 − 0
∗ 46218500 (10)
Logo,
f(z) = 231,09 ∼= 231, 1 segundos
5 Análise dos Resultados
O resultado obtido é coerente com o tempo médio previsto para a ordenação de
todos os elementos, uma vez que 231, 1 ∈ [0; 694, 78]
6 Bubble Sort
BubbleSort é um simples método de ordenação que verica todas as posições do
vetor 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; jpA−Size −i ; j++)
{
i f (pA−P o s i t i o n s [ j ] . keypA−P o s i t i o n s [ j −1]. key )
10 {
aux = pA−P o s i t i o n s [ j ] ;
pA−P o s i t i o n s [ j ]=pA−P o s i t i o n s [ j −1];
pA−P o s i t i o n s [ j −1]=aux ;
}
15 }
}
}
Programa 1: Algoritmo BubbleSort
3
Ainda é possível otimizá-lo bastando-se incluir uma variável trocaque veri-
que se houve uma troca de posições dos elementos do vetor, diminuindo o tempo
necessá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
(11)
[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
frequentemente, em computação, utiliza-se o método QuickSort. O QuickSort é o
algoritmo de ordenação interna (Memória RAM) mais rápido que se conhece e em
seu 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.
4

Cálculo Numérico: Integração Numérica com Bubble Sort

  • 1.
    Universidade Federal deOuro Preto Instituto de Ciências Exatas e Biológicas Departamento de Computação Cálculo Numérico Segundo Trabalho Prático Johnnatan Messias P. Afonso Rafaella Bicalho da Rocha Professor - José Álvaro Tadeu Ferreira Ouro Preto 21 de junho de 2010
  • 2.
    Sumário 1 Denição doProblema 1 2 Modelagem Matemática 1 3 Solução Numérica 1 4 Obtenção dos Resultados 2 4.1 1a Regra de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4.2 Aplicação do Teorema do Valor Médio . . . . . . . . . . . . . . . . . 3 4.3 O Resultado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 5 Análise dos Resultados 3 6 Bubble Sort 3 Lista de Figuras 1 Tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Tabela dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Lista de Programas 1 Algoritmo BubbleSort . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2
  • 3.
    1 Denição doProblema Realizando testes com o método de ordenação BubbleSort obteve-se o seguinte resultado 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 médio da execução do algoritmo. 2 Modelagem Matemática Como a função é contínua no intervalo fechado [a;b] tal que a= 0 e b= 200000, pode-se utilizar o método de integração numérica. 3 Solução Numérica Foi utilizado o método de integração 1a Regra de Simpson, uma vez que o inter- valo foi dividido em 8 partes de mesmo tamanho de passo 25000. Para calcular o tempo médio de execução do algoritmo precisaremos aplicar além da 1a Regra de Simpson, o Teorema do Valor Médio aplicado a Integrais. Sendo f é uma função contínua em [a,b], e de acordo com o Teorema do Valor Médio aplicado a Integrais, então existe um z(a,b), tal que: f(z) = 1 b − a b a f(x).dx (1) 1
  • 4.
    4 Obtenção dosResultados Figura 2: Tabela dos Resultados 4.1 1 a Regra de Simpson 200000 0 f(x).dx (2) Para n = 8: h = b − a n (3) logo h = 25000 Pela 1a Regra de Simpson, temos: I = h 3 (Y0 + 4Y1 + 2Y2 + 4Y3 + 2Y4 + 4Y5 + 2Y6 + 4Y7 + Y8) (4) Considerando que: (Y0 + 4Y1 + 2Y2 + 4Y3 + 2Y4 + 4Y5 + 2Y6 + 4Y7 + Y8) = 8 i=0 Ci.Yi (5) 8 i=0 Ci.Yi = 5546, 22 (6) I = 25000 3 8 i=0 Ci.Yi = 46218500 (7) 2
  • 5.
    4.2 Aplicação doTeorema do Valor Médio Pelo Teorema do Valor Médio aplicado a Integrais, temos: f(z) = 1 200000 − 0 200000 0 f(x).dx (8) Onde f(z) é o tempo médio gasto para a execução do algoritmo. 4.3 O Resultado De acordo com os dados anteriores, temos que: 200000 0 f(x).dx = 46218500 (9) então, f(z) = 1 200000 − 0 ∗ 46218500 (10) Logo, f(z) = 231,09 ∼= 231, 1 segundos 5 Análise dos Resultados O resultado obtido é coerente com o tempo médio previsto para a ordenação de todos os elementos, uma vez que 231, 1 ∈ [0; 694, 78] 6 Bubble Sort BubbleSort é um simples método de ordenação que verica todas as posições do vetor 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; jpA−Size −i ; j++) { i f (pA−P o s i t i o n s [ j ] . keypA−P o s i t i o n s [ j −1]. key ) 10 { aux = pA−P o s i t i o n s [ j ] ; pA−P o s i t i o n s [ j ]=pA−P o s i t i o n s [ j −1]; pA−P o s i t i o n s [ j −1]=aux ; } 15 } } } Programa 1: Algoritmo BubbleSort 3
  • 6.
    Ainda é possívelotimizá-lo bastando-se incluir uma variável trocaque veri- que se houve uma troca de posições dos elementos do vetor, diminuindo o tempo necessá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 (11) [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 frequentemente, em computação, utiliza-se o método QuickSort. O QuickSort é o algoritmo de ordenação interna (Memória RAM) mais rápido que se conhece e em seu 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. 4