artigo arvores genericas

5
1 _________________________ * [email protected] Cursando 3º período do curso de bacharelado em sistemas de informação 2007.1 pela universidade Potiguar - UNP Árvores Genéricas - Conceito, Estrutura e Implementação Cledson Francisco Silva * Resumo: Esse artigo tem por objetivo apresentar uma visão dos conceitos das árvores genéricas, estudando sua estrutura e implementando seus principais métodos. Palavras-chave: Árvores Genéricas, Estrutura arvores Genéricas, Implementação de Árvores Genéricas, Inclusão em Arvores Genéricas, Exclusão em Arvores Genéricas, Busca em Arvores Genéricas, Nodos em Arvores Genéricas. 1. Conceito Árvore é um conjunto de elementos não vazio e finito, dos quais um dos elementos é chamado de raiz e os restantes dos elementos estão divididos em subconjuntos. As arvores genéricas podem ter 1 ou mais filhos, ligados a cada no, formando sub estruturas. 2. Estrutura No caso da árvore genérica não existe restrição no numero de filhos. Cada nó pode ter um número arbitrário de filhos. Essa estrutura pode ser usada, por exemplo, para representar uma árvore de diretórios. O nó de uma árvore é formado por valor, referencia ao primeiro filho e referencia ao próximo irmão.

Upload: mayara-marques

Post on 16-Dec-2015

8 views

Category:

Documents


0 download

DESCRIPTION

Artigo Arvores GenericasCledson Francisco Silva

TRANSCRIPT

  • 1

    _________________________ * [email protected] Cursando 3 perodo do curso de bacharelado em sistemas de informao 2007.1 pela universidade Potiguar - UNP

    rvores Genricas - Conceito, Estrutura e Implementao

    Cledson Francisco Silva *

    Resumo: Esse artigo tem por objetivo apresentar uma viso dos conceitos das rvores genricas, estudando sua estrutura e implementando seus principais mtodos. Palavras-chave: rvores Genricas, Estrutura arvores Genricas, Implementao de rvores Genricas, Incluso em Arvores Genricas, Excluso em Arvores Genricas, Busca em Arvores Genricas, Nodos em Arvores Genricas. 1. Conceito rvore um conjunto de elementos no vazio e finito, dos quais um dos elementos chamado de raiz e os restantes dos elementos esto divididos em subconjuntos. As arvores genricas podem ter 1 ou mais filhos, ligados a cada no, formando sub estruturas. 2. Estrutura

    No caso da rvore genrica no existe restrio no numero de filhos. Cada n pode ter um nmero arbitrrio de filhos. Essa estrutura pode ser usada, por exemplo, para representar uma rvore de diretrios.

    O n de uma rvore formado por valor, referencia ao primeiro filho e

    referencia ao prximo irmo.

  • 2

    As folhas, que so identificadas como sendo ns com sub-rvores vazios o nulos. 3. Implementao Existem duas estruturas bsicas na arvore. O no e a arvore propriamente dita.

    O no contem uma instancia do pai e do seu irmo mais prximo,em algumas literaturas defendem uma instancia do pai no n.

    A arvore contem as estruturas de manipulao dos ns. Obs: Para implementao ser utilizada a linguagem JAVA.

    Classe No(Atributos) public class No { public Object valor; private No irmao; private No filho = null; } Classe Arvore(atributos): public class Arvore { private No raiz; private No sel; } Classe Arvore(Mtodos): -Adicionar No -Metodo Principal

    public void addNo(No pai, No filho) { navegaAdd(raiz, pai, filho); }

    -Metodo Auxiliar(1)

    private void navegaAdd(No aux, No pai, No filho) { if (aux.equals(pai)) { insere(aux, filho); } else { No p = aux.getFilho(); while (p != null) { navegaAdd(p, pai, filho); p = p.getIrmao(); } } }

    -Metodo Auxiliar(2)

    private void insere(No pai, No filho) { if (pai.getFilho() != null) { pai.getFilho().setPai(null); } filho.setIrmao(pai.getFilho()); filho.setPai(pai);

  • 3

    pai.setFilho(filho); }

    -Imprimir Nos -Metodo Principal

    public void imprime() { imprimePre(raiz); }

    -Metodo Auxiliar private void imprimePre(No a) { System.out.print("(" + a.getValor()); No p = a.getFilho(); while (p != null) { imprimePre(p); p = p.getIrmao(); } System.out.print(")"); }

    -Localizar No -Metodo Principal

    public No localizaNo(Object valor) { navegaLocalizaNo(raiz, valor); return sel; }

    -Metodo Auxiliar private void navegaLocalizaNo(No aux, Object valor) { if (valor == aux.getValor()) { sel = aux; } else { No n = aux.getFilho(); while (n != null) { navegaLocalizaNo(n, valor); n = n.getIrmao(); } } }

    -Exclir No -Metodo Principal

    public void excluirNo(Object valor) { System.out.println("\nExcluir "+valor); if (this.raiz.getValor() == valor) { this.raiz = null; } else { navegaExcluirNo(raiz, valor); } }

    -Metodo Auxiliar private void navegaExcluirNo(No aux, Object valor) { if (aux.getFilho() != null && valor == aux.getFilho().getValor()) { aux.setFilho(aux.getFilho().getIrmao()); } else { No n = aux.getFilho(); while (n != null) { navegaExcluirNo(n, valor); if (n.getIrmao() != null && n.getIrmao().getValor() == valor) {

  • 4

    n.setIrmao(n.getIrmao().getIrmao()); } n = n.getIrmao(); } } }

    4. Aplicaes de rvores Genricas em Jogos. Um exemplo de aplicao para rvores genricas so jogos de tabuleiro. Nessas rvores esto representadas as possibilidades de jogadas para um jogador a partir de um estado do jogo. Partindo da construo de uma rvore de jogo pode-se determinar qual a melhor prxima jogada a fazer tendo-se como critrio a funo Avalia que retorna um valor representando quo bom um estado do jogo (posio do tabuleiro) para um determinado jogador. Tomemos, por exemplo, a funo Avalia para o jogo da velha como sendo o nmero de linhas, colunas e diagonais que ainda esto "abertas" para um jogador, menos o nmero de linhas, colunas e diagonais abertas para o seu adversrio (o valor mximo deve ser atribudo para uma posio ganhadora = 9; e um valor mnimo para a posio perdedora = -9).

    O problema com a funo Avalia que ela calcula estaticamente o valor de uma posio do tabuleiro sem levar em conta as possveis futuras jogadas do adversrio e do prprio jogador. Se for possvel prever por antecipao o desenrolar do jogo, a escolha da melhor prxima jogada melhoraria consideravelmente. O nvel de previso de uma rvore corresponde ao nmero de jogadas futuras a considerar a partir de um dado estado do jogo, e, na verdade, corresponde profundidade da rvore. Quanto maior o nvel de previso, maior a quantidade de memria exigida (para armazenar a rvore com suas numerosas possibilidades), mas menor a probabilidade de se escolher uma m jogada. rvore de jogo com nvel de previso 1. Funo Avalia aplicada nas folhas. Aps a construo da rvore com um determinado nvel de previso, para avaliar a melhor jogada para um jogador j basta:

    avaliar as posies nas folhas da rvore com a funo de avaliao esttica Avalia;

    para cada n correspondendo vez do jogador j escolher o valor mximo dos filhos;

    para cada n correspondendo vez do adversrio de j escolher o valor mnimo dos filhos (supondo que o adversrio far a jogada que pior para j).

    Este mtodo conhecido como MINIMAX

  • 5

    5. Comentrio Final O conceito de arvores pode ser mais aprofundado tendo em vista a amplitude das situaes complexas que elas tendem a resolver. Um exemplo o trato dos filhos rfos, estruturas restantes que sobram aps a deleo de um determinado n.

    Com o conceito de listas encadeadas e das arvores binrias, constituem basicamente a estrutura fsica e conceitual das arvores genricas. Sendo a opo de vrios ns estando interligados a um ramo a filosofia formal da estrutura das arvores genricas. As principais linguagens como JAVA, DELPHI, .NET. Implementam as suas prprias estruturas de arvores, sem fugirem da estrutura bsica das arvores genricas.

    REFERNCIAS

    [1] Universidade Potiguar. Manual de Normalizao Bibliogrfica, Natal, RN, 2004. 111p. [2] Deitel, II M. Java, como programar H.M Deitel e P. J. Deitel, Porto Alegre/RS: Bookman, 2001.