A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Estudo de caso: Insertion Sort Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Capítulo 10.

Apresentações semelhantes


Apresentação em tema: "Estudo de caso: Insertion Sort Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Capítulo 10."— Transcrição da apresentação:

1 Estudo de caso: Insertion Sort Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Capítulo 10

2 Insertion Sort É um algorítimo de ordenação simples Caso de estudo envolvendo seqüência O número de comparações é proporcional a média

3 Insertion Sort Predicado em ordem crescente up as = (  i, j: 0  #as · i ≤ j => as[i] ≤ as[j] )  Exemplo de programa : var as : seq Z; con A; and A = bag as · as: [ up as].

4 Insertion Sort Pré e pos-condição similares  as: [up as↑0, up as↑N] Exemplo:  var k : N · k:= 0; as, k: [k = 0, up as↑k, k =N]  I = k ≤ N ^ up as↑k · as, k: [I, I ^ k = N]  “invariant I, variant N - k ” do k ≠ N  as, k: [k K0] od

5 Atribuição para seqüências As[i]:=E as[i:=E][j] = E, quando i=j

6 Removendo Invariante local No final do refinamento precisamos retirar a invariante. Isto só pode ser feito se for garantido que ela foi mantida. No nosso caso a invariante é: A= bag as

7 Usando a definição do sort var as : seq N Z; con A; and A = bag as as: [up as]  var k: N k := 0; as, k:[k=0, up as  k, k = N]  “iterate up” do k /= N -> as: [k < N  up as  k, up as  (k+1)]; (iii) k := k+1 od Nesse instante, o tipo de algoritmo é usado para refinar a especificação segundo suas necessidades.

8 Usando a definição do sort Objetivo: Refinar a especificação do corpo do laço para implementar a idéia de que, tendo uma seqüência de comprimento k ordenada, obter uma outra de comprimento k + 1 também ordenada. pre = up as  k pos = up as  (k + 1)

9 Usando a definição do sort Tornando a pre e pos-condições similares: up as  (k+1)  up as  k  as  k  as[k]

10 Usando a definição do sort Definindo predicados: (iii)  P = as  (k + 1) J = P  l  P[l] K = P[l]  P  (l + 1) var l : N As, l : [up P\{k}, l  k  up P\{l}  J  K]


Carregar ppt "Estudo de caso: Insertion Sort Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Capítulo 10."

Apresentações semelhantes


Anúncios Google