Вы находитесь на странице: 1из 28

rvore de

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

Aonde usar a Fenwick?


Na Prefix Sum
Dada a entrada, obter a soma de valores
prefixos:
x0, x1, x2, ...xn
podemos obter a sequncia de
numeros
triangulares:
y0 = x0 ; y1 = x0 + x1; y2 = x0 + x1 + x2; yn =
x0 + x1 + x2 +...+ xn

11

Aonde usar a Fenwick?


A Fenwick
pode facilitar a manuteno e
atualizar de uma tabela de frequncia
cumulativa usada na compresso de dados e
suporta operaes como:
SUM (a ... b): Soma cumulativa dos elementos
no intervalo [a ... b]
UPDATE (k, v): Incrementa elemento Nth com
uma quantidade v e atualiza a arvore
SCALE_UP (c): Multiplica os elementos por
valor c
SCALE_DOWN(c): Divide os elementos por
12
quantidade c

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

E cada elemento em F seja a soma sobre o


prefixo correspondente de f
15

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;

O ponto crucial de tudo a operao bit a bit


i & (i - 1). Exemplo:

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

Вам также может понравиться