// Last edited on 2001-05-15 22:59:56 by mc726 // Classe "ancestral" de todos os no´s do grafo. O djikstra ve apenas no´s import Grafo; import Ponto; public abstract class Nodo { // Atributos permanentes: public Grafo grafo; // Grafo que possui deste nó protected Nodo[] Prox; protected double[] Custo; protected Ponto Posicao; // Campos de trabalho para o algoritmo de Dijkstra: public double custoTot; // Custo total mínimo do início mais próximo até aqui. public Nodo prev; // Nodo anterior no caminho mínimo até aqui. public int indice; // Posicao deste nodo no "heap". public static double CUSTO_INFINITO = Grafo.CUSTO_INFINITO; public final Nodo[] prox() // Obtém o vetor de nós sucessores, calculando-os se necessário. { if (Prox == null) { inicializa(); } return Prox; } public final double[] custo() // Custos de passar do nó corrente para cada sucessor { if (Prox == null) { inicializa(); } return Custo; } public final Ponto posicao() // Posicao do Nodo no mapa, para fins de desenho { if (Prox == null) { inicializa(); } return Posicao; } public abstract void inicializa(); // Define os campos "Prox", "Custo", e "Posicao" deste nó. // Pressupõe que todos os Nodos do grafo foram alocados, e que as // tabelas "grafo.trIni", "grafo.trMid", etc. já foram preenchidas. É // chamado automaticamente por "prox", "custo", e "posicao". }