Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Estruturas de Dados: Objetivos e Conceitos Básicos, Notas de aula de Estruturas de Dados e Algoritmos

Os objetivos do estudo de estruturas de dados e conceitos básicos, como algoritmos, instâncias de problemas, recursividade e complexidade de algoritmos. O texto inclui bibliografia e exercícios.

Tipologia: Notas de aula

2020

Compartilhado em 06/10/2020

guilherme-clementino-de-sa-menezes
guilherme-clementino-de-sa-menezes 🇧🇷

1 documento

1 / 39

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27

Pré-visualização parcial do texto

Baixe Estruturas de Dados: Objetivos e Conceitos Básicos e outras Notas de aula em PDF para Estruturas de Dados e Algoritmos, somente na Docsity!

Estruturas de Dados - Objetivos

  • Estudar algoritmos capazes de armazenar e recuperar informações na memória do computador de forma otimizada.
  • Definir métricas para determinar o desempenho de algoritmos destes algoritmos.

Conceitos Básicos

  • Algoritmo – Procedimento computacional bem definido e finito que, a partir de um valor (ENTRADA) produz uma resposta como saída.
  • Exemplo de problema computacional.
    • Problema da ordenação de uma sequência de números. - Entrada: sequência de n números a 1 , ..., an_._ - Saída: permutação da entrada tal que a´ 1 £ ... £ a´n. 31, 41, 59, 26, 41, 58 à Entrada 26, 31, 41, 41, 58, 59 à Saída

Conceitos Básicos

  • Instância de um problema: É formada por todos os dados de entrada (satisfazendo todas as restrições impostas pelo problema) necessários para calcular uma solução.
  • Algoritmo correto: É o algoritmo que resolve qualquer instancia do problema.

Exercício

  • Problema das Torres de Hanoi – São dados 3 pinos A,B e C, n discos de tamanho diferentes, empilhados em ordem decrescente de diâmetro no pino A. Mover a pilha do pino A para o pino B, um disco de cada vez, sendo que é proibido empilhar um disco maior em cima de um menor.

Avaliação de algoritmos

  • Como comparar algoritmos?
  • 1ª Idéia – Comparar o tempo de execução.
    • Não é válida uma vez que parâmetros como o desempenho da máquina e até mesmo a técnica de programação interferem nos resultados.
  • 2ª Idéia – Mapear cada algoritmo em uma função matemática que “represente” o desempenho do algoritmo.

Complexidade de Algoritmos

  • A complexidade de tempo de um algoritmo é o estudo do número de operações elementares executadas até sua conclusão.
  • A complexidade de espaço é o estudo da quantidade de memória necessária para resolver o problema.

Comparação entre Complexidades

  • Seja P um problema, A 1 e A 2 dois algoritmos que resolvem P. Qual o mais eficiente?
  1. Comparar o número de operações executadas em uma instância pode levar a falsas conclusões.
  • Exemplo: Ordenação método da bolha e merge sort. Para a sequência: 10, 9, 15, 12.

Ordenação - Método da Bolha

  • Exemplo
    • 10, 9, 15, 12 - troca
    • 9, 10, 15, 12 – ok
    • 9, 10, 15, 12 – troca
    • 9, 10, 12, 15 – ok
    • 9, 10, 12, 15 – ok
    • 9, 10, 12, 15 – ok, sequência ordenada em 6 comparações

Merge sort

  • 10, 9, 15, 12 – dividir vetor ½
  • 10, 9 – ½ 15, 12 – ½
  • 10 9 15 12 - Merge
  • 9, 10 12, 15 – Merge
  • 9, 10, 12, 15
  • Passos: Divisão 1 + 2 = 3 Merge 4 + 4 = 8

Conclusões

  • De fato, se eu concluir assim, a conclusão será equivocada ...
  • Qual o motivo disto?
  • A razão disto decorre de que o estudo de uma instância é totalmente inconclusivo.

Ordens assintóticas

  • A complexidade assintótica é definida pelo crescimento da complexidade para entradas suficientemente grandes.
  • Definição: sejam f e g funções reais. A função g é uma cota assintótica superior (cas) para f sss ($ n 0 Î N," n ³ n 0 ) f ( n ) £ g ( n )

Notação O

  • A notação O define uma cota assintótica superior.
  • Em geral diz-se que f é O ( g ) sse Existe c Î R; c g ( n ) é CAS para f ( n )
  • Exemplo g ( n ) = 3 n 2 e f ( n ) = 7 n +13. Pode-se afirmar que f é O ( g ).
  • É usual utilizar-se f = O ( g ) para dizer que f é O ( g ).

O Que muda com a notação O?

  • Com a notação O , podemos desprezar constantes.
  • Vejamos:
    • f(n) = 3n-10 é cota assintótica superior de g(n) = 2n.
    • Entretanto, o comportamento de g(n) = 2n é diferente de f(n)?
    • Não, ambas são funções lineares.