Class Graph<TN,​TA>


  • public class Graph<TN,​TA>
    extends java.lang.Object
    Graph e' la rappresentazine di un grafo pesato
    Version:
    2.1 20/12/12 eliminato spazi dai nomi dei nodi eliminato eventuali duplicazione di nomi dei nodi 21/12/13 aggiunta la creazione e tramite coppie di nodi 12/2/2016 aggiunta la linearizzazione dei grafi aciclici 21/11/2018 corretto l'inizializzazione con coppie senza pesi
    • Constructor Summary

      Constructors 
      Constructor Description
      Graph()
      crea un Graph vuoto
      Graph​(java.io.BufferedReader br)
      Crea un Graph prelevando da un BufferedReader la descrizione di un grafo in due formati.
      Graph​(java.io.BufferedReader br, Graph<TN,​TA> og)
      Crea un Graph prelevando da un BufferedReader la descrizione di un grafo in due formati.
      Graph​(java.io.Reader r)
      Crea un Graph prelevando da un Reader la descrizione di un grafo in due formati.
      Graph​(java.io.Reader r, Graph<TN,​TA> og)
      Crea un Graph prelevando da un Reader la descrizione di un grafo in due formati.
      Graph​(java.lang.String[][] couples)
      crea un Graph partendo dall’elenco delle coppie di nodi unite da un arco.
      Graph​(java.lang.String[][] couples, double[] prices)
      crea un Graph partendo dall’elenco delle coppie di nodi unite da un arco.
      Graph​(java.lang.String[] name, int[][] matAd)
      crea un Graph fornendo la matrice di adiacenza del grafo e la matrice contente i nomi dei nodi
      Graph​(java.lang.String[] name, int[][] matAd, double[][][] p)
      crea un Graph fornendo la matrice di adiacenza del grafo pesato, la matrice dei pesi degli archi e la matrice contente i nomi dei nodi
    • Method Summary

      Modifier and Type Method Description
      Arc<TN,​TA> addArc​(Arc<TN,​TA> arc)
      Aggiunge un arco al grafo
      Arc<TN,​TA> addArc​(java.lang.String sorg, java.lang.String dest)
      Aggiunge un arco al grafo
      Arc<TN,​TA> addArc​(java.lang.String sorg, java.lang.String dest, double price)
      Aggiunge un arco al grafo.
      Arc<TN,​TA> addArc​(Node<TN> sorg, Node<TN> dest)
      Aggiunge un arco al grafo
      Arc<TN,​TA> addArc​(Node<TN> sorg, Node<TN> dest, double price)
      Aggiunge un arco al grafo con un certo prezzo
      boolean addNode​(java.lang.String name)
      Aggiunge un nodo al grafo
      Matrix adjacency()
      Ritorna la matrice di adiacenza del grafo
      boolean connected​(java.lang.String[] path)
      Dice se il percorso costituito dalla sequenza di nodi indicati esiste
      Matrix connections()
      Ritorna la matrice dei collegamenti del grafo
      boolean coordOk​(int i, int j)
      Controlla se i due indici dei nodi sono validi per il grafo
      double costs​(java.lang.String[] path)
      Calcola il costo di un percorso costituito dalla sequenza di nodi indicati, se esiste
      int degree()
      Ritorna l'ordine del grafo
      int findNode​(java.lang.String nn)
      Ritorna l'indice di un nodo del grafo dato il nome
      int findNode​(Node<TN> node)
      Ritorna l'indice di un nodo del grafo
      Arc<TN,​TA> getArc​(int i, int j)
      Ritorna l'arco compreso da due nodi
      Arc<TN,​TA> getArc​(java.lang.String from, java.lang.String to)
      Ritorna l'arco compreso da due nodi
      Node<TN> getNode​(int i)
      Ritorna il nodo dato l'indice
      Node<TN> getNode​(java.lang.String name)
      Ritorna il nodo dato il nome
      java.lang.String[] getNodes()
      Ritorna la matrice dei nodi
      boolean isConnected​(java.lang.String from, java.lang.String to)
      Dice se due nodi sono connessi
      boolean linearise()
      Linearizza il grafo (Bisogna ancora risolvere la linearizzazione di piu' di due passi)
      void load​(java.io.BufferedReader br)
      Carica un Graph prelevando da un BufferedReader la descrizione di un grafo in due formati.
      void load​(java.io.BufferedReader br, Graph<TN,​TA> og)
      Carica un Graph prelevando da un BufferedReader la descrizione di un grafo in due formati.
      void load​(java.io.Reader r)
      Carica un Graph prelevando da un Reader la descrizione di un grafo in due formati.
      void load​(java.io.Reader r, Graph<TN,​TA> og)
      Carica un Graph prelevando da un Reader la descrizione di un grafo in due formati.
      java.lang.String[] longestPath​(java.lang.String from)
      Ritorna la sequenze dei nomi dei nodi che costituiscono il cammino col maggiore numero di passi di costo inferiore da un nodo
      java.lang.String[] longestShortPath​(java.lang.String from)
      Ritorna la sequenze dei nomi dei nodi che costituiscono il cammino di costo inferiore col maggiore numero di passi senza cicli da un nodo
      static void main​(java.lang.String[] ar)
      Applicazione di prova.
      java.lang.String[] minLengthPath​(java.lang.String from, java.lang.String to)
      Ritorna la sequenze dei nomi dei nodi che costituiscono il cammino di lunghezza minima tra due nodi
      java.lang.String[] minPath​(java.lang.String from, java.lang.String to, int type)
      Ritorna la sequenze dei nomi dei nodi che costituiscono il cammino minimo tra due nodi
      double minPathCost​(java.lang.String[] path)
      Ritorna il costo minimo del cammino selezionando l'arco di costo minimo nel caso di archi multipli tra due nodi
      java.lang.String[] minPricePath​(java.lang.String from, java.lang.String to)
      Ritorna la sequenze dei nomi dei nodi che costituiscono il cammino di prezzo minimo tra due nodi
      boolean removeArc​(Arc<TN,​TA> ar)
      Cancella un arco dal grafo
      boolean removeArc​(java.lang.String from, java.lang.String to)
      Cancella tutti gli archi che collegano due nodi del grafo
      boolean removeNode​(java.lang.String nome)
      Rimuove un nodo dal grafo
      boolean renameNode​(java.lang.String name, java.lang.String newName)
      Cambia il nome di un nodo
      void reset()
      Azzera le matrici di adiacenza e delle connessioni
      void save​(java.io.Writer w)
      + Salva la matrice di adiacenza del grafo nel GraphPanel su un Writer in un formato che prevede che la prima riga letta contenga il numero di nodi e la successiva � una riga vuota e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente c'� la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|'
      void save​(java.io.Writer w, boolean labels)
      + Salva la matrice di adiacenza del grafo su un Writer in un formato che prevede che eventualmente la prima riga scritta contenga il numero di nodi e la successiva contiene l'elenco dei nomi dei nodi e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente c'e' la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|'
      void saveMatrix​(java.io.Writer w)
      Salva la successione delle potenze della matrice d'adiacenza del grafo e delle matrici delle connessioni
      java.lang.String toString()
      Ritorna una stringa rappresentante il grafo come sua matrice di adiacenza.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Graph

        public Graph()
        crea un Graph vuoto
      • Graph

        public Graph​(java.lang.String[] name,
                     int[][] matAd)
        crea un Graph fornendo la matrice di adiacenza del grafo e la matrice contente i nomi dei nodi
        Parameters:
        name - la matrice dei nomi dei nodi
        matAd - la matrice di adiacenza del grafo in cui i le righe e le colonne hanno lo stesso ordine dei nomi
      • Graph

        public Graph​(java.lang.String[] name,
                     int[][] matAd,
                     double[][][] p)
        crea un Graph fornendo la matrice di adiacenza del grafo pesato, la matrice dei pesi degli archi e la matrice contente i nomi dei nodi
        Parameters:
        name - la matrice dei nomi dei nodi
        matAd - la matrice di adiacenza del grafo in cui le righe e le colonne hanno lo stesso ordine dei nomi
        p - la matrice dei pesi del grafo in cui i le righe e le colonne hanno lo stesso ordine dei nomi
      • Graph

        public Graph​(java.lang.String[][] couples)
        crea un Graph partendo dall’elenco delle coppie di nodi unite da un arco.
        Parameters:
        couples - una matrice dove ogni riga è una coppia di nomi di nodi collegati tramite un arco
      • Graph

        public Graph​(java.lang.String[][] couples,
                     double[] prices)
        crea un Graph partendo dall’elenco delle coppie di nodi unite da un arco.
        Parameters:
        couples - una matrice dove ogni riga è una coppia di nomi di nodi collegati tramite un arco
        prices - una matrice dove ogni elemento è il costo del corrispondente arco
      • Graph

        public Graph​(java.io.Reader r)
        Crea un Graph prelevando da un Reader la descrizione di un grafo in due formati. Nel primo il formato prevede che la prima riga letta contenga il numero di nodi e la successiva riga contiene l'elenco dei nomi dei nodi e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente puo' esserci la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|' Nel secondo formato invece sono elencati su ogni riga la coppia di nodi connessi da un arco ed eventualmente il costo dell'arco. Il nome del primo nodo non può essere un numero intero
        Parameters:
        r - il Reader da cui viene prelevato il grafo
      • Graph

        public Graph​(java.io.Reader r,
                     Graph<TN,​TA> og)
        Crea un Graph prelevando da un Reader la descrizione di un grafo in due formati. Nel primo il formato prevede che la prima riga letta contenga il numero di nodi e la successiva riga contiene l'elenco dei nomi dei nodi e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente puo' esserci la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|' Nel secondo formato invece sono elencati su ogni riga la coppia di nodi connessi da un arco ed eventualmente il costo dell'arco. Il nome del primo nodo non può essere un numero intero
        Parameters:
        r - il Reader da cui viene prelevato il grafo
        og - il grafo da includere, null se un grafo nuovo
      • Graph

        public Graph​(java.io.BufferedReader br)
        Crea un Graph prelevando da un BufferedReader la descrizione di un grafo in due formati. Nel primo il formato prevede che la prima riga letta contenga il numero di nodi e la successiva riga contiene l'elenco dei nomi dei nodi e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente puo' esserci la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|' Nel secondo formato invece sono elencati su ogni riga la coppia di nodi connessi da un arco ed eventualmente il costo dell'arco. Il nome del primo nodo non può essere un numero intero
        Parameters:
        br - il BufferedReader da cui viene prelevato il grafo
      • Graph

        public Graph​(java.io.BufferedReader br,
                     Graph<TN,​TA> og)
        Crea un Graph prelevando da un BufferedReader la descrizione di un grafo in due formati. Nel primo il formato prevede che la prima riga letta contenga il numero di nodi e la successiva riga contiene l'elenco dei nomi dei nodi e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente puo' esserci la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|' Nel secondo formato invece sono elencati su ogni riga la coppia di nodi connessi da un arco ed eventualmente il costo dell'arco. Il nome del primo nodo non può essere un numero intero
        Parameters:
        br - il BufferedReader da cui viene prelevato il grafo
        og - il grafo da includere, null se un grafo nuovo
    • Method Detail

      • load

        public void load​(java.io.Reader r)
        Carica un Graph prelevando da un Reader la descrizione di un grafo in due formati. Nel primo il formato prevede che la prima riga letta contenga il numero di nodi e la successiva riga contiene l'elenco dei nomi dei nodi e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente puo' esserci la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|' Nel secondo formato invece sono elencati su ogni riga la coppia di nodi connessi da un arco ed eventualmente il costo dell'arco. Il nome del primo nodo non può essere un numero intero
        Parameters:
        r - il Reader da cui viene prelevato il grafo
      • load

        public void load​(java.io.Reader r,
                         Graph<TN,​TA> og)
        Carica un Graph prelevando da un Reader la descrizione di un grafo in due formati. Nel primo il formato prevede che la prima riga letta contenga il numero di nodi e la successiva riga contiene l'elenco dei nomi dei nodi e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente puo' esserci la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|' Nel secondo formato invece sono elencati su ogni riga la coppia di nodi connessi da un arco ed eventualmente il costo dell'arco. Il nome del primo nodo non può essere un numero intero
        Parameters:
        r - il Reader da cui viene prelevato il grafo
        og - il grafo da includere, null se un grafo nuovo
      • load

        public void load​(java.io.BufferedReader br)
        Carica un Graph prelevando da un BufferedReader la descrizione di un grafo in due formati. Nel primo il formato prevede che la prima riga letta contenga il numero di nodi e la successiva riga contiene l'elenco dei nomi dei nodi e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente puo' esserci la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|' Nel secondo formato invece sono elencati su ogni riga la coppia di nodi connessi da un arco ed eventualmente il costo dell'arco. Il nome del primo nodo non può essere un numero intero
        Parameters:
        br - il BufferedReader da cui viene prelevato il grafo
      • load

        public void load​(java.io.BufferedReader br,
                         Graph<TN,​TA> og)
        Carica un Graph prelevando da un BufferedReader la descrizione di un grafo in due formati. Nel primo il formato prevede che la prima riga letta contenga il numero di nodi e la successiva riga contiene l'elenco dei nomi dei nodi e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente puo' esserci la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|' Nel secondo formato invece sono elencati su ogni riga la coppia di nodi connessi da un arco ed eventualmente il costo dell'arco. Il nome del primo nodo non può essere un numero intero
        Parameters:
        br - il BufferedReader da cui viene prelevato il grafo
        og - il grafo da includere, null se un grafo nuovo
      • save

        public void save​(java.io.Writer w)
        + Salva la matrice di adiacenza del grafo nel GraphPanel su un Writer in un formato che prevede che la prima riga letta contenga il numero di nodi e la successiva � una riga vuota e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente c'� la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|'
        Parameters:
        w - il Writer su cui viene salvato il grafo
      • save

        public void save​(java.io.Writer w,
                         boolean labels)
        + Salva la matrice di adiacenza del grafo su un Writer in un formato che prevede che eventualmente la prima riga scritta contenga il numero di nodi e la successiva contiene l'elenco dei nomi dei nodi e nelle righe successive sono conservati i valori della matrice di adiacenza dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi Successivamente c'e' la matrice dei pesi dove le colonne e le righe conservano lo stesso ordine dei nomi dei nodi e gli elementi sono i valori dei singoli archi separati da '|'
        Parameters:
        w - il Writer su cui viene salvato il grafo
        labels - se true indica anche il numero di nodi e le etichette delle righe della matrice di adiacenza, altrimenti no.
      • saveMatrix

        public void saveMatrix​(java.io.Writer w)
        Salva la successione delle potenze della matrice d'adiacenza del grafo e delle matrici delle connessioni
        Parameters:
        w - il Writer su cui viene salvato il grafo
      • coordOk

        public boolean coordOk​(int i,
                               int j)
        Controlla se i due indici dei nodi sono validi per il grafo
        Parameters:
        i - la riga dell'arco
        j - la colonna dell'arco
        Returns:
        true se gli indici dei nodi dell'arco sono validi, false altrimenti
      • getArc

        public Arc<TN,​TA> getArc​(java.lang.String from,
                                       java.lang.String to)
        Ritorna l'arco compreso da due nodi
        Parameters:
        from - il nome del nodi di partenza
        to - il nome del nodo di arrivo
        Returns:
        l'arco
      • getArc

        public Arc<TN,​TA> getArc​(int i,
                                       int j)
        Ritorna l'arco compreso da due nodi
        Parameters:
        i - l'indice del nodi di partenza
        j - l'indice del nodo di arrivo
        Returns:
        l'arco
      • removeArc

        public boolean removeArc​(Arc<TN,​TA> ar)
        Cancella un arco dal grafo
        Parameters:
        ar - l'arco da cancellare
        Returns:
        true se ci sono altri archi tra gli stessi nodi, false altrimenti
      • removeArc

        public boolean removeArc​(java.lang.String from,
                                 java.lang.String to)
        Cancella tutti gli archi che collegano due nodi del grafo
        Parameters:
        from - in nome del nodo di partenza
        to - in nome del nodo di arrivo
        Returns:
        true se sono stati rimossi archi tra i nodi, false altrimenti
      • addArc

        public Arc<TN,​TA> addArc​(Arc<TN,​TA> arc)
        Aggiunge un arco al grafo
        Parameters:
        arc - l'arco da aggiungere
        Returns:
        l'arco
      • addArc

        public Arc<TN,​TA> addArc​(Node<TN> sorg,
                                       Node<TN> dest)
        Aggiunge un arco al grafo
        Parameters:
        sorg - il nodo di partenza
        dest - il nodo di destinazione
        Returns:
        l'arco
      • addArc

        public Arc<TN,​TA> addArc​(Node<TN> sorg,
                                       Node<TN> dest,
                                       double price)
        Aggiunge un arco al grafo con un certo prezzo
        Parameters:
        sorg - il nodo di partenza
        dest - il nodo di destinazione
        price - il prezzo dell'arco
        Returns:
        l'arco
      • addArc

        public Arc<TN,​TA> addArc​(java.lang.String sorg,
                                       java.lang.String dest)
        Aggiunge un arco al grafo
        Parameters:
        sorg - il nome del nodo di partenza
        dest - il nome del nodo di destinazione
        Returns:
        l'arco
      • addArc

        public Arc<TN,​TA> addArc​(java.lang.String sorg,
                                       java.lang.String dest,
                                       double price)
        Aggiunge un arco al grafo. Se i nodi collegati non esistono vengon creati
        Parameters:
        sorg - il nome del nodo di partenza
        dest - il nome del nodo di destinazione
        price - il prezzo dell'arco
        Returns:
        l'arco
      • getNode

        public Node<TN> getNode​(int i)
        Ritorna il nodo dato l'indice
        Parameters:
        i - l'indice del nodo
        Returns:
        il nodo
      • getNode

        public Node<TN> getNode​(java.lang.String name)
        Ritorna il nodo dato il nome
        Parameters:
        name - il nome del nodo
        Returns:
        il nodo
      • renameNode

        public boolean renameNode​(java.lang.String name,
                                  java.lang.String newName)
        Cambia il nome di un nodo
        Parameters:
        name - il vecchio nome del nodo
        newName - il nuovo nome del nodo
        Returns:
        true se il grafo e' cambiato, false altrimenti
      • removeNode

        public boolean removeNode​(java.lang.String nome)
        Rimuove un nodo dal grafo
        Parameters:
        nome - il nome del nodo
        Returns:
        true se il grafo e' cambiato, false altrimenti
      • addNode

        public boolean addNode​(java.lang.String name)
        Aggiunge un nodo al grafo
        Parameters:
        name - il nome del nodo
        Returns:
        true se il grafo e' cambiato, false altrimenti
      • findNode

        public int findNode​(java.lang.String nn)
        Ritorna l'indice di un nodo del grafo dato il nome
        Parameters:
        nn - il nome del nodo
        Returns:
        l'indice del nodo
      • findNode

        public int findNode​(Node<TN> node)
        Ritorna l'indice di un nodo del grafo
        Parameters:
        node - il nodo
        Returns:
        l'indice del nodo
      • getNodes

        public java.lang.String[] getNodes()
        Ritorna la matrice dei nodi
        Returns:
        la matrice dei nomi dei nodi
      • reset

        public void reset()
        Azzera le matrici di adiacenza e delle connessioni
      • degree

        public int degree()
        Ritorna l'ordine del grafo
        Returns:
        l'ordine del grafo
      • isConnected

        public boolean isConnected​(java.lang.String from,
                                   java.lang.String to)
        Dice se due nodi sono connessi
        Parameters:
        from - il nodo di partenza
        to - il nodo di arrivo
        Returns:
        true se i due nodi sono connessi, false altrimenti
      • adjacency

        public Matrix adjacency()
        Ritorna la matrice di adiacenza del grafo
        Returns:
        la matrice di adiacenza del grafo
      • connections

        public Matrix connections()
        Ritorna la matrice dei collegamenti del grafo
        Returns:
        la matrice dei collegamenti del grafo
      • linearise

        public boolean linearise()
        Linearizza il grafo (Bisogna ancora risolvere la linearizzazione di piu' di due passi)
        Returns:
        true se il grafo viene modificato, false altrimenti
      • costs

        public double costs​(java.lang.String[] path)
        Calcola il costo di un percorso costituito dalla sequenza di nodi indicati, se esiste
        Parameters:
        path - il percorso da verificare
        Returns:
        il costo del percorso, se esiste la connessione lungo il percorso, un valore infinito altrimenti
      • connected

        public boolean connected​(java.lang.String[] path)
        Dice se il percorso costituito dalla sequenza di nodi indicati esiste
        Parameters:
        path - il percorso da verificare
        Returns:
        treu se esiste la connessione lungo il percorso, false altrimenti
      • minLengthPath

        public java.lang.String[] minLengthPath​(java.lang.String from,
                                                java.lang.String to)
        Ritorna la sequenze dei nomi dei nodi che costituiscono il cammino di lunghezza minima tra due nodi
        Parameters:
        from - il nodo di partenza
        to - il nodo di arrivo
        Returns:
        la sequenza dei nomi dei nodi che costituiscono il cammino di lunghezza minima tra i due nodi
      • minPricePath

        public java.lang.String[] minPricePath​(java.lang.String from,
                                               java.lang.String to)
        Ritorna la sequenze dei nomi dei nodi che costituiscono il cammino di prezzo minimo tra due nodi
        Parameters:
        from - il nodo di partenza
        to - il nodo di arrivo
        Returns:
        la sequenza dei nomi dei nodi che costituiscono il cammino di prezzo minimo tra i due nodi
      • minPath

        public java.lang.String[] minPath​(java.lang.String from,
                                          java.lang.String to,
                                          int type)
        Ritorna la sequenze dei nomi dei nodi che costituiscono il cammino minimo tra due nodi
        Parameters:
        from - il nodo di partenza
        to - il nodo di arrivo
        type - se il valore e' PRICE viene effettuata la ricerca sul percorso di prezzo minimo, se il valore e' LEN viene effettuata la ricerca sul percorso pi� breve.
        Returns:
        la sequenza dei nomi dei nodi che costituiscono il cammino minimo tra i due nodi
      • longestShortPath

        public java.lang.String[] longestShortPath​(java.lang.String from)
        Ritorna la sequenze dei nomi dei nodi che costituiscono il cammino di costo inferiore col maggiore numero di passi senza cicli da un nodo
        Parameters:
        from - il nodo di partenza
        Returns:
        la sequenza dei nomi dei nodi che costituiscono il cammino di costo inferiore col maggiore numero di passi senza cicli da un nodo
      • longestPath

        public java.lang.String[] longestPath​(java.lang.String from)
        Ritorna la sequenze dei nomi dei nodi che costituiscono il cammino col maggiore numero di passi di costo inferiore da un nodo
        Parameters:
        from - il nodo di partenza
        Returns:
        la sequenza dei nomi dei nodi che costituiscono il cammino col maggiore numero di passi di costo inferiore da un nodo
      • minPathCost

        public double minPathCost​(java.lang.String[] path)
                           throws java.lang.NullPointerException
        Ritorna il costo minimo del cammino selezionando l'arco di costo minimo nel caso di archi multipli tra due nodi
        Parameters:
        path - il cammino di cui calcolare il costo
        Returns:
        il costo del cammino
        Throws:
        java.lang.NullPointerException - se mancano archi sul percorso
      • toString

        public java.lang.String toString()
        Ritorna una stringa rappresentante il grafo come sua matrice di adiacenza.
        Overrides:
        toString in class java.lang.Object
        Returns:
        la stringa rappresentante il grafo
      • main

        public static void main​(java.lang.String[] ar)
        Applicazione di prova.
        Parameters:
        ar - viene ignorato