Arvore Binaria em arquivo

491 views
Skip to first unread message

Gilciel Almeida

unread,
Sep 27, 2010, 10:10:47 PM9/27/10
to rails-br
Sou iniciante em RoR e queria fazer um 'programa' utilizando o
conceito de arvore binaria, mas so que utilizando arquivos.
Se alguem puder me ajudar enviando alguma referencia/codigo.

Rafael Uchôa

unread,
Sep 29, 2010, 8:17:34 AM9/29/10
to rails-br
Cara, não tem muito mistério. Vc vai fazer em Ruby uma arvore binária
como se fizesse em qualquer outro linguagem. ;)
O que o Ruby pode te ajudar bastante é na manipulação de arquivos.
Dá uma olhada na api do File e semelhantes. http://ruby-doc.org/core/classes/File.html

[]s

Gilciel Almeida

unread,
Oct 4, 2010, 8:23:34 PM10/4/10
to rails-br
Rafael, blz
irei verificar o link que voce me mandou, mas acho que não me
expliquei direito:
Seria o seguinte:

1 - Fiz a insereçao dos registros na tabela (estrutura (NOME STRING,
PESQUERDA NUMERICO, PDIREITA NUMERICO)
2 - O problema que estou tendo é na leitura, segue exemplo do da
leitura

leOrdenado (lRaiz)
Se Raiz <> 0
leOrdenado(lraiz.pesquerda)
Imprime Nome
leOrdenado(lRaiz.pdireita)
FimSe

Isso funcionada que é uma beleza, na memoria (pois o recursividade)
armazena a informação em uma pilha, mas quando se vai utilizar a
leitura de registros de uma tabela ele não consegue voltar ao registro
anterior.
3 - Este é o meu problema ? Se souber como fazer ou tiver algum
material a respeito, me mande o link ou atraves do meu e-mail.

Desde ja agradeoc

On 29 set, 09:17, Rafael Uchôa <ucho...@googlemail.com> wrote:
> Cara, não tem muito mistério. Vc vai fazer em Ruby umaarvorebinária
> como se fizesse em qualquer outro linguagem. ;)
> O que o Ruby pode te ajudar bastante é na manipulação de arquivos.
> Dá uma olhada na api do File e semelhantes.http://ruby-doc.org/core/classes/File.html
>
> []s
>
> On Sep 27, 11:10 pm, Gilciel Almeida <gilcielr...@gmail.com> wrote:
>
> > Sou iniciante em RoR e queria fazer um 'programa' utilizando o
> > conceito dearvorebinaria, mas so que utilizando arquivos.

Pedro Belo

unread,
Oct 4, 2010, 9:44:03 PM10/4/10
to rail...@googlegroups.com
Binary trees só são eficientes em memória né. Se você precisa
persistir árvores mas mantendo características de árvores binárias
você provavelmente precisa implementar alguma variação de BTree.

Mas é para aprendizado isso? Se você só quer algo de boa performance
vale a pena é claro delegar a implementação da árvore pro banco de
dados (que acabam implementando btrees de todo jeito).


2010/10/4 Gilciel Almeida <gilci...@gmail.com>:

> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
> Para cancelar a inscrição nesse grupo, envie um e-mail para rails-br+u...@googlegroups.com.
> Para obter mais opções, visite esse grupo em http://groups.google.com/group/rails-br?hl=pt-BR.
>
>

Wilker

unread,
Oct 4, 2010, 9:39:27 PM10/4/10
to rail...@googlegroups.com
Cara, eu ja fiz isso em CoffeeScript: http://github.com/wilkerlucio/huffman_js/blob/master/src/tree.coffee

Nesse arquivo tem como eu faço pra encodar a arvore binaria (no meu caso ela é utilizada para algoritmo de Huffman, mas voce pode usar da mesma forma).

Oque eu fiz foi encodar os dados da arvore em arrays simples e depois salvar encodado em JSON (no meu seria para transferencia web).

No final vc vai ter um monte de arrays em JSON aninhados (onde nas pontas tem os valores), mas é uma forma bem facil de salvar e ler os dados ;)
---
Wilker Lúcio
Ruby on Rails Consultant
Bit Zesty
http://www.bitzesty.com
Blog: http://wilker-dev.com
+55 81 87417674


2010/10/4 Gilciel Almeida <gilci...@gmail.com>

Marcello Henrique

unread,
Oct 4, 2010, 9:50:31 PM10/4/10
to rail...@googlegroups.com
Olá Gilciel,

Estava eu fazendo alguns testes de conceito para uma máquina de busca,
fiz a árvore binária, árvore trie e tabela hash, acredito que esteja
fazendo isso para estudos também...
Estou anexando os arquivos que fiz, dê uma olhada no código, eu criei
o main.rb porque fazia alguns brenchmarks das outras estruturas e você
precisara de um arquivo de texto o modo de uso é:

$ ruby main.rb dados.txt

Ahh, você pode gerar o grafo da sua árvore se tiver o ruby-graphviz instalado.
Abraços

2010/10/4 Gilciel Almeida <gilci...@gmail.com>:

> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
> Para cancelar a inscrição nesse grupo, envie um e-mail para rails-br+u...@googlegroups.com.
> Para obter mais opções, visite esse grupo em http://groups.google.com/group/rails-br?hl=pt-BR.
>
>

--
Marcello Henrique
Blog - http://faraohh.wordpress.com
Associação Software Livre de Goiás (www.aslgo.org.br)
Cercomp - UFG (www.cercomp.ufg.br)

dados.txt
main.rb
BinaryTree.rb

Marcello Henrique

unread,
Oct 4, 2010, 9:56:03 PM10/4/10
to rail...@googlegroups.com
Eu fiz alguns testes, para máquinas de busca a árvore binária gasta
O(log(n)) onde o n é a quantidade de elementos no seu vetor e que
dependendo dos casos pode ser ruim, imagine um vetor com 100.000
elementos, a árvore Trie é mais adequada gasta O(m) onde o m é o
tamanho da palavra, o melhor de todos foi a tabela Hash que gasta
O(1), ou seja tempo constante, uma única comparação para encontrar um
elemento.

Abraços.

2010/10/4 Pedro Belo <pedr...@gmail.com>:

--

Reply all
Reply to author
Forward
0 new messages