Академический Документы
Профессиональный Документы
Культура Документы
Fenwick
rvore de Fenwick
UNIFESO
Cincia da Computao - 3 Ano
Projeto e Anlise de Algoritmos
Professor: Rafael Monteiro
Alunos: Rafael Telles
Raphael Rocha
Williams Gomes
Introduo
Proposta por Peter M. Fenwick em 1994.
Conhecida tambm por Binary-Indexed-Tree
(BIT).
O(n .(log.n)) para construo da rvore.
O(log.n) para cada update ou consulta de
soma.
A Tcnica
uma estrutura de dados utilizada para
implementar tabelas de frequncia cumulativas,
comparar, atualizar elementos e calcular somas de
valores prefixos em uma sequncia de nmeros.
Da mesma forma, a frequncia cumulativa pode
ser representada como soma dos conjuntos de
sub-frequncias.
Cada n da rvore armazena a soma de N
elementos, em que N uma potncia de 2. Ex:
rvore(13) = 2 + 2 + 20.
A Tcnica
A posio do ndice da rvore representada
em binrio. Ex: rvore(13) = 1101.
Para descobrirmos a soma acumulada,
alteramos o bit de valor 1 menos significativo
do ndice para zero, at que chegue a posio
zero do array.
A Tcnica
A Tcnica
Estamos a procura da frequncia acumulada do
ndice 13 (para os primeiros 13 elementos).
Suponha que temos um array v com 16 elementos.
v = [1, 0, 2, 1, 1, 3, 0, 4, 2, 5, 2, 2, 3, 1, 0, 2]
Assim, vamos calcular a soma:
soma[13] = rvore [13] + rvore [12] + rvore [8];
soma[1101] = rvore [1101] + rvore [1100] +
rvore [1000].
A Tcnica
Array V com a frequncia acumulada:
V = {1, 1, 2, 4, 1, 4, 0, 12, 2, 7, 2, 11, 3,
4, 0, 29 }
Usa-se complemento de 2 para encontrar o
prximo idx.
A Tcnica
A Tcnica
Para alterarmos o valor de alguma posio,
somamos 1 bit ao bit 1 menos significativo da
posio atual, at chegar a ltima posio do
array.
Vamos alterar o idx (5):
10
11
O Cdigo
13
O Algoritmo
rvores Fenwick: soma de prefixos em tempo O
(log N)
Seja f [ 1 ... N]
Cada subarray comeando no incio de f
chamado um prefixo de f. assim:
14
O Algoritmo
Queremos calcular uma nova matriz F, tambm
de tamanho N, na qual
O Algoritmo
Usar fora-bruta para pesquisar a i-sima soma do
prefixo F[i], seria acumular sequencialmente valores
em f, de f [0] a f [i] leva a complexidade O(N)
As rvores de Fenwick (tambm chamadas de rvores
de indexao binria) oferecem uma soluo
intermediria para atualizar quanto de pesquisa
intensiva.
Ambas as operaes tm uma complexidade de
tempo O (log N).
16
O Algoritmo
Prefix_Sum(TAM, i, f )
soma = v [0];
Enquanto (i = 0) faa
soma + = v [i];
i &= i - 1;
retorne soma;
17
O Algoritmo
Usar fora-bruta para pesquisar a i-sima soma do
prefixo F[i], seria acumular sequencialmente valores
em f, de f [0] a f [i] leva a complexidade O(N)
As rvores de Fenwick (tambm chamadas de rvores
de indexao binria) oferecem uma soluo
intermediria para atualizar quanto de pesquisa
intensiva.
Ambas as operaes tm uma complexidade de
tempo O (log N).
18
Problema Prtico
19
Problema Prtico
20
Problema Prtico
21
Problema Prtico
22
Problema Prtico
23
A representao
24
O Cdigo
25
O Cdigo
26
Concluso
A major cost in adaptive arithmetic data
compression is the maintenance of the table of
cumulative frequencies which is needed in
reducing the range for successive symbols.
Frase
Frase
27
Referncias
http://www.geeksforgeeks.org/binary-indexed-tr
ee-or-fenwick-tree-2/
em 30/10/2016 as 13:52
https://www.topcoder.com/community/data-scienc
e/data-science-tutorials/binary-indexed-trees/
em 30/10/2016 as 16:28
http://algorithmsandme.in/2015/02/binary-index
ed-trees/
em 01/11/16 as 18:47
https://brilliant.org/wiki/fenwick-tree/
Fenwick, Peter M. - A new data structure for
cumulative frequency tables 1994
28