Como criar um potencial de soma de logs
Vamos considerar o algoritmo BST que, para cada acesso ao elemento x , ele reorganiza apenas elementos no caminho de pesquisa P de x chamado before-path, em alguma árvore chamada after-tree. Para qualquer elemento a , sejam s ( a ) e s ′ ( a ) o tamanho da subárvore enraizada em um antes e depois do rearranjo, respectivamente. Assim s ( um ) e s ' ( um ) podem diferir sse um ∈ P .UMAxPxumas ( a )s′( Um )umas ( a )s′( Um )a ∈ P
Além disso, UMA apenas reorganiza constantemente muitos elementos no caminho de pesquisa a qualquer momento. Vamos chamar esse tipo de algoritmo de algoritmo "local". Por exemplo, a árvore splay é local. Reorganiza apenas no máximo 3 elementos por vez em zig, zigzig e zig-zag.
Agora, qualquer algoritmo local que crie "muitas" folhas na árvore posterior, como a árvore splay, tem a seguinte propriedade legal.
Podemos criar um mapeamento tal quef: P→ P
- Existem linearmente muitos , onde s ′ ( f ( a ) ) ≤ s ( a ) / 2 .a ∈ Ps′( f( a ) ) ≤ s ( a ) / 2
- Há constantemente muitos , onde s ′ ( f ( a ) ) pode ser grande, mas trivialmente no máximo n .a ∈ Ps′( f( Um ) )n
- Outros elementos , s ′ ( f ( a ) ) ≤ s ( a ) .a ∈ Ps′( f( a ) ) ≤ s ( a )
Podemos ver isso desdobrando a mudança do caminho da pesquisa. O mapeamento é realmente bastante natural. Este artigo, Uma visão geométrica global da distribuição , mostra precisamente os detalhes de como ver a observação acima.
Depois de conhecer esse fato, é muito natural escolher o potencial da soma de logs. Porque podemos usar a alteração potencial dos elementos do tipo 1 para pagar todo o rearranjo. Além disso, para elementos de outro tipo, temos que pagar pela alteração potencial no máximo logarítmica. Portanto, podemos derivar o custo amortizado do logaritmo.
Acho que a razão pela qual as pessoas pensam que isso é "magia negra" é que a análise anterior não "desdobra" a mudança geral do caminho de pesquisa e vê o que realmente acontece em uma única etapa. Em vez disso, eles mostram a mudança de potencial para cada "transformação local" e mostram que essas mudanças em potencial podem ser magicamente telescópicas.
PS O artigo ainda mostra algumas limitações do potencial da soma de logs. Ou seja, pode-se provar a satisfação do lema do acesso via potencial soma-de-logs apenas para o algoritmo local.
Interpretação do potencial da soma dos logs
Existe outra maneira de definir o potencial do BST no artigo de Georgakopoulos e McClurkin, que é essencialmente o mesmo que o potencial da soma de logs no artigo de Sleator Tarjan. Mas isso me dá uma boa intuição.
Agora mudo para a notação do papel. Atribuímos um peso a cada nó u . Seja W ( u ) a soma do peso da subárvore de u . (Esse é apenas o tamanho da subárvore de u quando o peso de cada nó é um.)w ( u )vocêW( U )vocêvocê
Agora, em vez de definir a classificação nos nós, definimos a classificação nas arestas, que eles chamaram de fator de progresso .
p f( e ) = log( W( u ) / W( V ) ) .
E o potencial da árvore éS
Φ ( S) = ∑e ∈ Sp f( E ) .
Esse potencial tem uma interpretação natural: se durante uma pesquisa atravessamos uma aresta ( u , v ) , reduzimos o espaço de pesquisa dos descendentes de para os descendentes de v , uma redução franca de W ( u ) / W ( v ) . Nosso fator de progresso é uma medida logarítmica desse 'progresso', daí seu nome. [Da seção 2.4]vocêvW( u ) / W( V )
Observe que esse é quase o potencial do Sleator Tarjan e é aditivo nos caminhos.
editar: Acontece que essa definição alternativa e a intuição por trás dela foram descritas há muito tempo por Kurt Mehlhorn. Veja seu livro "Estruturas de dados e algoritmos" Volume I, Seção III. 6.1.2 Árvores de exibição, páginas 263 - 274.