Estrutura de dados

boa tarde pessoal.

seguinte:

pretendo ler um file de tipo dicionario com a seguinte estrutura:

ababadar:dobrar,enrugar,franzir,preguear,
ababalhado:babado,babujado,molhado,
ababelado:babélico,babêlico,confuso,desordenado,misturado,
ababelar:confundir,desordenar,desorganizar,misturar,
ababeíado:desordenado,

o file ocupa cerca de 1,5m.

gostava de saber qual a vossa opinião sobre a estrutura de dados que devo usar para armazenar toda essa informação.

desde ja obrigado a todos.

Uma vez desenvolvi um tipo de compilador para códigos baseados em inteligência artificial e usei um método que analisava tudo e jogava dentro de um ArrayList… dai a partir deste array fazia toda a brincadeira…

Porém, utilizei isto pois o professor exigiu que usassemos uma estrutura de código própria, se você puder jogar tudo isso ai em XML e utilizar parsers, acho que ficaria bem melhor…

mas em termos de performance será uma boa escolha? Uma vez que esse dicionario vai ser inserido apartir de um file e depois não vai existir + inserções e uma vez que só vai ser necessario para fazer pesquisas.

se eu quiser utilizar isso do xml onde posso ver alguns exemplos praticos?

valew!

se tu vai usar só isso que tá ali…coloca num ArrayList mesmo…ou até em um simples vetor[] =)

o dicionario é um file com 1,5 mega.

por exemplo pra aceder a palavra rato ele teria de correr todo o vector? se for assim fica um pouco ineficiente.

mas caso ele va direto a palavra rato então é uma boa.

um XML acho que seria sua solução:

por exemplo:

<ababadar>
<significado> dobrar </significado>
</ababadar>

dai é só procurar pela tag ababadar e ve o significado, talvez até dê pra melhorar a estrutura desse XML… não sou muito especialista nisso…

dê uma lida nestes tutoriais…

http://www.guj.com.br/java.tutorial.artigo.19.1.guj
http://www.guj.com.br/java.tutorial.artigo.22.1.guj
http://www.guj.com.br/java.tutorial.artigo.144.1.guj

valew galera.

Calma, não é tão simples assim, por exemplo:

Se A significa B, é verdade que B também significa A?

Se A siginifica B e B significa C, é verdade que A também significa C, B significa A e C significa B?

Ou seja, seu dicionário é um dicionário inteligente ou um simples mapeamento de palavra(key) e significados(value) ?

Caso seja inteligente, vc deve implementá-lo com uma estrutura de grafos, caso contrário um simples java.util.Map de String (key) e java.util.List (value) é suficiente!

nao é inteligente não é mesmo um simple mapeamento d palavras.

mas essa estrutura de grafos é como arvore binaria só que com mais ramos?

se for era isso que eu tava procurando na net mas não sabia o nome em ingles :frowning:

se não for pedir muito vc podia me indicar alguns exemplos com esse tipo de estrutura?

muito obrigado.

[quote=“RogerTheRabbit”]nao é inteligente não é mesmo um simple mapeamento d palavras.

  1. mas essa estrutura de grafos é como arvore binaria só que com mais ramos?

se for era isso que eu tava procurando na net mas não sabia o nome em ingles :frowning:

  1. se não for pedir muito vc podia me indicar alguns exemplos com esse tipo de estrutura?

muito obrigado.[/quote]

  1. não, basicamente é um conjunto de nós conectados através de arestas que representam ligações uni ou bidirecionais entre os nós. http://www.inf.ufsc.br/grafos/

  2. // para criar o dicionario e inserir palavras/significados Map dicionario = new HashMap(); String palavra = "ababadar"; List significado = new ArrayList(); significado.add("dobrar"); significado.add("enrugar"); significado.add("franzir"); significado.add("preguear"); dicionario.put(palavra,significado); // para pegar os significados de "ababadar" List sig = (List) dicionario.get("ababadar"); // para verificar se "dobrar" é significado de "ababadar" if (sig.contains("dobrar") { // é significado }
    http://java.sun.com/j2se/1.4.2/docs/api/java/util/Map.html

Pegou o esquema como funciona!?

muito bom! obrigado a todos. Acho que com isso ai ja consigo resolver o problema!

valew!

[quote=“viecili”][quote=“RogerTheRabbit”]1. mas essa estrutura de grafos é como arvore binaria só que com mais ramos?

se for era isso que eu tava procurando na net mas não sabia o nome em ingles :([/quote]

  1. não, basicamente é um conjunto de nós conectados através de arestas que representam ligações uni ou bidirecionais entre os nós. http://www.inf.ufsc.br/grafos/ [/quote]

[color=“indigo”]Mas isso não é uma árvore binária??? :roll: [/color]

[quote=“MarcelaR”][quote=“viecili”][quote=“RogerTheRabbit”]1. mas essa estrutura de grafos é como arvore binaria só que com mais ramos?

se for era isso que eu tava procurando na net mas não sabia o nome em ingles :([/quote]

  1. não, basicamente é um conjunto de nós conectados através de arestas que representam ligações uni ou bidirecionais entre os nós. http://www.inf.ufsc.br/grafos/ [/quote]

[color=“indigo”]Mas isso não é uma árvore binária??? :roll: [/color][/quote]

Você pode usar grafos para implementar uma árvore binária, basta definir as ligações entre os nós com as mesmas regras estipuladas para uma árvore binária.

Definição de Grafos: http://www.inf.ufsc.br/grafos/definicoes/definicao.html

[quote=“viecili”][quote=“MarcelaR”][quote=“viecili”][quote=“RogerTheRabbit”]1. mas essa estrutura de grafos é como arvore binaria só que com mais ramos?

se for era isso que eu tava procurando na net mas não sabia o nome em ingles :([/quote]

  1. não, basicamente é um conjunto de nós conectados através de arestas que representam ligações uni ou bidirecionais entre os nós. http://www.inf.ufsc.br/grafos/ [/quote]

[color=“indigo”]Mas isso não é uma árvore binária??? :roll: [/color][/quote]

Você pode usar grafos para implementar uma árvore binária, basta definir as ligações entre os nós com as mesmas regras estipuladas para uma árvore binária.

Definição de Grafos: http://www.inf.ufsc.br/grafos/definicoes/definicao.html[/quote]

[color=“indigo”]Oi Viecili,

Eu sei o q é um grafo… já peguei essa matéria (por sinal tive q fazer o algorítmo do caminho hamiltoniano em Pascal :yarg:).

Eu só falei isso por conta da sua resposta ao RogerTheRabbit. Ele perguntou se isso era uma árvore binário e vc disse q não e deu exatamente a descrição de uma árvore binária… Foi só um toque. :wink: [/color]

ah… falha minha, não havia prestado atenção na parte q dizia q tinha mais ramos… hehehe