Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLevi Belmonte Farias Alterado mais de 8 anos atrás
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]
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.