Trabalho Da Disciplina ED1 - Parte 2 e 3
Trabalho Da Disciplina ED1 - Parte 2 e 3
Trabalho Da Disciplina ED1 - Parte 2 e 3
Objetivo geral: o objetivo do trabalho disciplinar é compreender que, para uma mesma
estrutura de dados, há tempos de execuções diferentes para as mesmas operações quando
comparado as soluções que utilizam memória sequencial ou memória dinâmica.
Objetivo da parte 3: A terceira parte do trabalho tem como objetivo comparar os resultados
coletados sobre o tempo de execução entre as estruturas implementadas usando memória
sequencial (parte 1 do trabalho) e memória dinâmica (parte 2).
Passos:
1) Baixar e alterar o código da estrutura de dados correspondente.
2) executar três vezes o programa considerando 1.000 números
- Inserir elementos na estrutura (ao inserir o elemento deve ser exibido na tela do
usuário)
- Listar os elementos na estrutura
- Remover os elementos da estrutura (ao remover o elemento deve ser exibido na tela
do usuário)
Observação: anotar o tempo de execução (em clocks) para cada uma das funções
chamadas na ordem definida no roteiro.
3) executar o passo 2 considerando 3.000, 5.000, 10.000 e 25.000 números, anotando o tempo
(emitido pela alteração no código) separadamente.
Nesta segunda parte do trabalho, cada grupo deverá continuar o estudo sobre a estrutura de
dados da primeira parte: lista, fila ou pilha. Ou seja, NÃO mudar de estrutura.
Dica 1: para a geração de números aleatórios na linguagem C é possível utilizar a função rand()
da biblioteca stdlib.h . Entretanto, essa função gera números reais aleatórios. Como sugestão
para geração de números inteiros aleatórios, utilize a função a seguir:
Dica 2: para poder calcular a quantidade de clocks que uma função irá demorar para ser
executada, utilize a função clock da biblioteca time.h conforme exemplo a seguir.
1) O grupo deverá analisar e comparar com a Tabela 1 com a Tabela 2. Analisando o campo
média, observe: Em quais quantidades de elementos e em quais operações a implementação
usando memória sequencial teve tempo menor? Em quais quantidades de elementos e em
quais operações a implementação usando memória dinâmica teve tempo menor?
2) Discutir considerando o tempo de execução, as seguintes hipóteses:
- Para a fila
F1. Considerando a operação inserir em uma fila, o tempo de execução desta operação
implementada em memória sequencial é menor do que o tempo de execução desta operação
na implementação com memória dinâmica.
F2. Considerando a operação remover em uma fila, o tempo de execução desta operação
implementada em memória dinâmica é menor do que o tempo de execução desta operação na
implementação com memória sequencial.
F3. Considerando a operação imprimir em uma fila, o tempo de execução desta operação
implementada em memória sequencial é menor do que o tempo de execução desta operação
na implementação com memória dinâmica.
- Para a pilha
P1. Considerando a operação inserir em uma pilha, o tempo de execução desta operação
implementada em memória sequencial é menor do que o tempo de execução desta operação
na implementação com memória dinâmica.
P2. Considerando a operação remover em uma pilha, o tempo de execução desta operação
implementada em memória sequencial é menor do que o tempo de execução desta operação
na implementação com memória dinâmica.
P3. Considerando a operação imprimir em uma pilha, o tempo de execução desta operação
implementada em memória sequencial é menor do que o tempo de execução desta operação
na implementação com memória dinâmica.
- Para a lista
L1. Considerando a operação inserir em uma lista, e considerando a posição do elemento a ser
inserido definida aleatoriamente, o tempo de execução desta operação implementada em
memória dinâmica é menor do que o tempo de execução desta operação na implementação
com memória sequencial.
L2. Considerando a operação remover em uma lista, e considerando a posição do elemento a
ser removido definida aleatoriamente, o tempo de execução desta operação implementada
em memória dinâmica é menor do que o tempo de execução desta operação na
implementação com memória sequencial.
L3. Considerando a operação imprimir em uma lista, o tempo de execução desta operação
implementada em memória sequencial é menor do que o tempo de execução desta operação
na implementação com memória dinâmica.
Modelo de Relatório de Estudo de Estrutura de Dados
Estudo da Estrutura de Dados ( ) Lista ( ) Fila ( ) Pilha
Alunos: ____________________________________
____________________________________
____________________________________
____________________________________
Introdução
Estrutura de dados é um modo particular de armazenar e organizar os dados em um
computador de modo que possam ser usados eficientemente. Existem diferentes formas de
organização, que são adequadas a diferentes tipos de aplicação e algumas são altamente
especializadas, destinando-se a algumas tarefas específicas. Destacamos neste trabalho a
estrutura de dados COLOCAR NOME DA ESTRUTURA, EXPLICAR A ESTRUTURA.
A eficiência da estrutura pode ser mensurada por meio do tempo de execução (por
exemplo, em milissegundos ou por clocks do processador) e, em alguns casos, o número de
movimentações que ela realiza para a inserção ou remoção de um novo elemento na estrutura.
Entretanto, essas variáveis variam conforme a solução de implementação usada, podendo
utilizar memória sequencial ou memória dinâmica. Cabe ao programador conhecer as diferenças
e eficiência de cada implementação para poder escolher a melhor solução para o seu programa.
Objetivo
Este trabalho visa apresentar dados relacionados ao tempo de execução das operações
básicas da estrutura de dados COLOCAR NOME DA ESTRUTURA considerando a
implementação que utiliza memória sequencial e que utiliza memória dinâmica, com o objetivo
de se compreender a eficiência das duas implementações.
Metodologia
Para obter os dados de eficiência das duas versões da estrutura de dados proposta,
definiu-se coletar o tempo de execução em unidades de clock de processador. Como essa
unidade varia conforme os recursos dos processadores modernos, optou-se por executar cada
teste três vezes e calcular a média das mensurações realizadas, que será utiliza durante a
discussão dos dados.
Este trabalho optou por implementar as duas soluções em linguagem C, cujo código
das operações inserir, remover e listar usando memória sequencial estão disponíveis a seguir:
Tabela 1 – Tempo de execução em clocks na estrutura de dados com 1.000, 3.000, 5.000, 10.000
e 25.000 elementos considerando as operações de inserção, remoção e listagem para a
implementação da estrutura de dados usando memória sequencial
Tabela 2 – Tempo de execução em clocks na estrutura de dados com 1.000, 3.000, 5.000, 10.000
e 25.000 elementos considerando as operações de inserção, remoção e listagem para a
implementação da estrutura de dados usando alocação dinâmica
- Para a pilha
P1. Considerando a operação inserir em uma pilha, o tempo de execução desta operação
implementada em memória sequencial é menor do que o tempo de execução desta operação na
implementação com memória dinâmica.
P2. Considerando a operação remover em uma pilha, o tempo de execução desta operação
implementada em memória sequencial é menor do que o tempo de execução desta operação na
implementação com memória dinâmica.
P3. Considerando a operação imprimir em uma pilha, o tempo de execução desta operação
implementada em memória sequencial é menor do que o tempo de execução desta operação na
implementação com memória dinâmica.
- Para a lista
L1. Considerando a operação inserir em uma lista, e considerando a posição do elemento a ser
inserido definida aleatoriamente, o tempo de execução desta operação implementada em
memória dinâmica é menor do que o tempo de execução desta operação na implementação com
memória sequencial.
L2. Considerando a operação remover em uma lista, e considerando a posição do elemento a ser
removido definida aleatoriamente, o tempo de execução desta operação implementada em
memória dinâmica é menor do que o tempo de execução desta operação na implementação com
memória sequencial.
L3. Considerando a operação imprimir em uma lista, o tempo de execução desta operação
implementada em memória sequencial é menor do que o tempo de execução desta operação na
implementação com memória dinâmica.