Exerc - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

Exerc

Description:

Exerc cios An lise de algoritmos & Ordena o Eduardo Laber Cap 2- Tardos Exerc cio 3 f2 – PowerPoint PPT presentation

Number of Views:56
Avg rating:3.0/5.0
Slides: 31
Provided by: EduardoS3
Category:
Tags: basic | exerc

less

Transcript and Presenter's Notes

Title: Exerc


1
ExercíciosAnálise de algoritmos Ordenação
  • Eduardo Laber

2
Cap 2- Tardos
  • Exercício 3
  • f2 lt f3 lt f6 lt f1 ltf4 ltf5

3
Cap 2- Tardos
  • Exercício 4
  • g3 lt g4 lt g1 lt g5 lt g2 lt g7 lt g6

4
Cap 2- Tardos
  • Exercício 5
  • Verdadeiro, assumindo g(n)gt1.
  • log f(n) lt log (c.g(n)) lt
  • log c log g(n) lt d log g(n) para d gt log c
  • Falso. f(n)4n2 e g(n)n2
  • Verdadeiro. f(n)2 lt c2 g(n) 2 lt d.g(n) 2 para
    dgtc.

5
Cap 2- Tardos
  • Exercício 6
  • O(n3)
  • Para mostrar ?(n3), considere i variando de 1 a
    n/4 e j variando de n/4 a n
  • For i1,2,...,n do
  • Bi,i?Ai
  • For i1,2,...,n
  • For ji1,i2,...,n
  • Bi,j ?Bi,j-1Aj
  • O(n2)

6
Cap 2- Tardos
  • Exercício 8
  • Enquanto o primeiro vazo não quebra, jogar de
    alturas n0.5, 2n0.5,, n0.5 n0.5
  • Se ele quebrar ao jogar de altura i.n0.5
  • Jogar de alturas (i-1)n0.5 , (i-1)n0.5 1 ,
    (i-1)n0.5 2, até ele quebrar
  • Total de passo lt 2n0.5

7
Exercícios Extras
  • Escreva o pseudo-código da operacão de remover o
    elemento Ai de um heap armazenado em um vetor
    A1..n

8
Exercício
  • Projete um algoritmo para fazer um merge de k
    listas ordenadas que execute em O(n log k), aonde
    n é o total de elementos nas k listas

9
Solução
  • Seja L(1),...,L(k) as k listas
  • Remova o primeiro elemento de cada lista e
    construa um heap com eles O(k)
  • Para i1,...,n
  • Remova o menor elemento do heap e insira na lista
    ordenada. Assuma que este elemento veio da lista
    j O(log k)
  • Remova o primeiro elemento da lista L(j) e insira
    no heap. O(log k)

10
Exercício
  • Mostre como ordenar n inteiros no intervalo
    1,n2 em tempo linear O(n)

11
Solução
  • Solução
  • Crie vetores B e C com n posições, indexadas de 0
    a n-1. Cada posição pode armazenar uma lista de
    inteiros
  • Percorra o vetor A inserindo Ai na lista Bi
    mod n.
  • Para i variando de 0 a n-1
  • Para cada elemento x da lista Bi faça
  • Insira x no final da lista C x div n
  • Para i variando de 0 até n-1
  • Para cada elemento x da lista Ci faça
  • Imprima x

12
Exercício
  • A) Mostre que para fazer o merge de duas listas
    com n elementos é necesário realizar pelo menos
    2n-1 comparações no pior caso.
  • B) Mostre que para fazer o merge de duas listas,
    uma com n elementos e outra com m elementos, é
    necesário realizar pelo menos comparações
    no pior caso.

13
Solução
  • Considere as duas listas A a(1)lt ... lt a(n) e
    Bb(1) lt ... lt b(n) de n elementos
  • Seja X a ordem
  • a(1)ltb(1)lta(2)ltb(2) lt...lta(n)ltb(n)
  • Seja Y(j), j1,...,n, a ordem idêntica a ordem X,
    exceto pelo fato que a(j) gt b(j)
  • Seja Z(j), j2,..,n, a ordem idêntica a ordem X,
    exceto pelo fato que a(j) lt b(j-1)

14
Solução
  • Se o algoritmo não comparar a(j) com b(j) ele não
    tem como diferenciar X de Y(j)
  • Se o algoritmo não comparar a(j) com b(j-1) ele
    não tem como diferenciar X de Z(j)
  • Logo são necessárias 2n-1 comparações

15
Exercício
  • Perdido em uma terra muito distante, você se
    encontra em frente a um muro de comprimento
    infinito para os dois lados (esquerda e direita).
    Em meio a uma escuridão total, você carrega um
    lampião que lhe possibilita ver apenas a porção
    do muro que se encontra exatamente à sua frente
    (o campo de visão que o lampião lhe proporciona
    equivale exatamente ao tamanho de um passo seu).
    Existe uma porta no muro que você deseja
    atravessar. Supondo que a mesma esteja a n passos
    de sua posição inicial (não se sabe se à direita
    ou à esquerda), elabore um algoritmo para
    caminhar ao longo do muro que encontre a porta em
    O(n) passos. Considere que n é um valor
    desconhecido (informação pertencente à
    instância). Considere que a ação composta por dar
    um passo e verificar a posição do muro
    correspondente custa O(1).

16
Solução
  • p0
  • Enquanto não encontrar o muro
  • Ande até a posição 2p. Se encontrar o muro no
    caminho pare
  • Ande até a posição -2p. Se encontrar o muro pare
  • p
  • Fim Enquanto
  • Assuma que a porta esta na posição n. Seja p
    tal que 2p-1ltnlt2p
  • O algoritmo anda no máximo 3 2p1 4 .2p1 para
    encontrar o muro. Esse valor é menor que 14 n.

17
Exercício
  • Analise a complexidade do algoritmo abaixo
  • Leia(n)
  • x ? 0
  • Para i ? 1 até n faça
  • Para j ? i1 até n faça
  • Para k ? 1 até j-i faça
  • x? x 1

18
Exercício
  • Projete o algoritmo mais eficiente que você
    conseguir para encontrar a mediana de um vetor de
    n elementos. Análise sua complexidade.

19
Solução
  • Ordene os elementos e retorne o elemento n/2 da
    lista ordenada
  • Complexidade O(n log n)
  • Mais adiante no curso mostraremos um algoritmo
    O(n)

20
Exercício
  • Dizemos que um vetor P1..m ocorre em um vetor
    T1..n se  P1..m    Ts1..sm  para
    algum s. O valor de um tal s é um deslocamento
    válido.
  • Projete um algoritmo para encontrar todos os
    deslocamentos válidos de um vetor e analise sua
    complexidade.

21
Exercício
  • Seja A1..n um vetor que pode conter números
    positivos e negativos.
  • Projete um algoritmo com complexidade O(n3)
    determinar os índices i e j, com iltj, tal que
    Ai ...Aj é máximo. Tente reduzir a
    complexidade para O(n2), depois para O(n log n) e
    então para O(n)

22
Exercício
  • Resolvas as equações abaixo encontrando uma
    função f(n) tal que T(n) ?(f(n))
  • T(n)2.T(n/2) n2 para ngt1 T(1)1
  • T(n) 2.T(n/2) n, para ngt1 T(1)1
  • T(n)T(n/2) 1, para ngt1 T(1)1
  • T(n)T(n/2) n, para ngt1 T(1)1

23
Exercício
  • Seja uma matriz quadrada A com n2 números
    inteiros que satisfaz as segintes propriedades
  • Ai,j lt Ai1,j para 1ltiltn-1 e 1ltjltn
  • Ai,jltAi,j1, para 1ltiltn e 1ltjltn-1
  • a) Dado um elemento x, descreva um procedimento
    eficiente para determinar se x pertence a A ou
    não. Analise a complexidade do algoritmo
    proposto.
  • b) Mostre que este problema é ?(n)

24
Solução
  • a) Considere o procedimento abaixo
  • Seja y o elemento do canto superior direito da
    matriz. Compara y e x
  • Se xgty, descarte a primeira linha e aplique o
    procedimento recursivamente para matriz restante.
  • Se xlty, descarte a última coluna e aplique o
    procedimento recursivamente para matriz restante.
  • Se xy devolva a posição de y

25
Solução
  • Análise
  • A cada passo o número de linhas ou de colunas da
    matriz diminui de 1, portanto o algoritmo executa
    no máximo 2n passos.

26
Solução
  • Lower Bound
  • Considere a seguinte entrada matriz
  • Ai,j 0 se ijltn1,
  • Ai,j n1 se ijgtn1
  • Ai,j é um inteiro entre 1 e n se ijn1
  • Se x é um número entre 1 e n que não pertence a
    A, qualquer algoritmo tem que examinar todas as
    entradas Ai,j, com ijn1 para concluir que x
    não esta em A. Logo, o problema é ?(n)

27
Exercício
  • Seja Aa(1) lt .... lt a(n) uma lista de números
    reais. A proximidade entre a(i) e a(j) é definida
    como a(i)-a(j).
  • a) Dados os inteiros j e k, encontre os k
    elementos de A mais próximos de Aj em O(k).

28
Exercício
  • Seja A1..n um vetor com n números positivos e
    seja SiA1...Ai.
  • Encontre o índice i que minimiza
  • Minimiza Si (Ai1 ... An)

29
Exercício
  • Mostre que

30
Solução
Write a Comment
User Comments (0)
About PowerShow.com