V
- etichette dei nodiE
- etichette degli archipublic class AdjacentListDirectedGraph<V,E> extends java.lang.Object implements Graph<V,E>
Graph<V,E>
per grafi diretti
utilizzando liste di adiacenza per la rappresentazione.
Questa classe non supporta le operazioni di rimozione di nodi e archi e le
operazioni indicizzate di ricerca di nodi e archi.Constructor and Description |
---|
AdjacentListDirectedGraph()
Crea un grafo vuoto.
|
Modifier and Type | Method and Description |
---|---|
boolean |
addEdge(GraphEdge<V,E> edge)
Aggiunge un arco a questo grafo.
|
boolean |
addNode(GraphNode<V> node)
Aggiunge un nodo a questo grafo.
|
void |
clear()
Cancella tutti i nodi e gli archi di questo grafo portandolo ad essere un
grafo vuoto.
|
boolean |
containsEdge(GraphEdge<V,E> edge)
Cerca se c'è un certo arco in questo grafo.
|
boolean |
containsNode(GraphNode<V> node)
Determina se c'è un certo nodo in questo grafo.
|
int |
edgeCount()
Restituisce il numero di archi in questo grafo.
|
java.util.Set<GraphNode<V>> |
getAdjacentNodes(GraphNode<V> node)
Restituisce l'insieme di tutti i nodi adiacenti a un certo nodo.
|
int |
getDegree(GraphNode<V> node)
Restituisce il grado di un nodo, cioè il numero di archi connessi al
nodo.
|
java.util.Set<GraphEdge<V,E>> |
getEdges()
Restituisce l'insieme di tutti gli archi in questo grafo.
|
java.util.Set<GraphEdge<V,E>> |
getEdges(GraphNode<V> node)
Restituisce l'insieme di tutti gli archi connessi a un certo nodo in un
grafo.
|
java.util.Set<GraphEdge<V,E>> |
getEdgesBetween(GraphNode<V> node1,
GraphNode<V> node2)
Restituisce l'insieme degli archi tra due nodi.
|
java.util.Set<GraphEdge<V,E>> |
getEdgesBetween(int index1,
int index2)
Restituisce l'insieme degli archi tra due nodi indicizzati
nell'intervallo
[0, this.nodeCount() - 1] . |
java.util.Set<GraphEdge<V,E>> |
getIngoingEdges(GraphNode<V> node)
Restituisce l'insieme di tutti gli archi entranti in un certo nodo in un
grafo diretto.
|
GraphNode<V> |
getNode(V label)
Restituisce il nodo di questo grafo avente l'etichetta passata.
|
GraphNode<V> |
getNodeAtIndex(int i)
Restituisce il nodo attualmente associato a un certo indice
nell'intervallo
[0, this.nodeCount() - 1] . |
int |
getNodeIndex(V label)
Restituisce un indice unico attualmente associato a un certo nodo
nell'intervallo
[0, this.nodeCount() - 1] . |
java.util.Set<GraphNode<V>> |
getNodes()
Restituisce l'insieme dei nodi di questo grafo.
|
java.util.Set<GraphNode<V>> |
getPredecessorNodes(GraphNode<V> node)
Restituisce l'insieme di tutti i nodi collegati tramite un arco entrante
in un certo nodo in un grafo diretto.
|
boolean |
isDirected()
Determina se questo grafo è diretto oppure no.
|
boolean |
isEmpty()
Determina se questo grafo è vuoto, cioè senza nodi e senza archi.
|
int |
nodeCount()
Restituisce il numero di nodi in questo grafo.
|
boolean |
removeEdge(GraphEdge<V,E> edge)
Rimuove un arco da questo grafo.
|
boolean |
removeNode(GraphNode<V> node)
Rimuove un nodo da questo grafo.
|
int |
size()
Restituisce la dimensione di questo grafo definita come il numero di nodi
più il numero di archi.
|
public AdjacentListDirectedGraph()
public int nodeCount()
Graph
public int edgeCount()
Graph
public int size()
Graph
public boolean isEmpty()
Graph
public void clear()
Graph
public boolean isDirected()
Graph
isDirected
in interface Graph<V,E>
public java.util.Set<GraphNode<V>> getNodes()
Graph
public boolean addNode(GraphNode<V> node)
Graph
public boolean removeNode(GraphNode<V> node)
Graph
removeNode
in interface Graph<V,E>
node
- il nodo da rimuoverepublic boolean containsNode(GraphNode<V> node)
Graph
containsNode
in interface Graph<V,E>
node
- il nodo cercatonode
esiste in questo grafopublic int getNodeIndex(V label)
Graph
[0, this.nodeCount() - 1]
. Questa
funzionalità è tipicamente disponibile se il grafo è rappresentato con
una matrice di adiacenza. Tale indice può anche essere usato per
identificare i nodi in strutture dati esterne come array o liste che
contengono informazioni aggiuntive calcolate, ad esempio, da un algoritmo
sul grafo.
Questa operazione è opzionale.getNodeIndex
in interface Graph<V,E>
label
- l'etichetta del nodo di cui restituire l'indice[0, this.nodeCount() - 1]
attualmente associato al
nodo con etichetta label
. L'indice può cambiare se il
grafo viene modificato togliendo dei nodipublic GraphNode<V> getNodeAtIndex(int i)
Graph
[0, this.nodeCount() - 1]
. Questa
funzionalità è tipicamente disponibile se il grafo è rappresentato con
una matrice di adiacenza.
Questa operazione è opzionale.getNodeAtIndex
in interface Graph<V,E>
i
- l'indice del nodo.public java.util.Set<GraphNode<V>> getAdjacentNodes(GraphNode<V> node)
Graph
getAdjacentNodes
in interface Graph<V,E>
node
- il nodo di cui cercare i nodi adiacentipublic java.util.Set<GraphNode<V>> getPredecessorNodes(GraphNode<V> node)
Graph
getPredecessorNodes
in interface Graph<V,E>
node
- il nodo di cui cercare i nodi successoripublic java.util.Set<GraphEdge<V,E>> getEdges()
Graph
public boolean addEdge(GraphEdge<V,E> edge)
Graph
public boolean removeEdge(GraphEdge<V,E> edge)
Graph
removeEdge
in interface Graph<V,E>
edge
- l'arco da rimuoverepublic boolean containsEdge(GraphEdge<V,E> edge)
Graph
containsEdge
in interface Graph<V,E>
edge
- l'arco da cercarepublic java.util.Set<GraphEdge<V,E>> getEdges(GraphNode<V> node)
Graph
public java.util.Set<GraphEdge<V,E>> getIngoingEdges(GraphNode<V> node)
Graph
getIngoingEdges
in interface Graph<V,E>
node
- il nodo di cui determinare tutti gli archi entrantipublic int getDegree(GraphNode<V> node)
Graph
public java.util.Set<GraphEdge<V,E>> getEdgesBetween(int index1, int index2)
Graph
[0, this.nodeCount() - 1]
. Questa
funzionalità è tipicamente disponibile se il grafo è rappresentato con
una matrice di adiacenza. Nel caso di grafo orientato vengono restituiti
gli archi che hanno come sorgente il nodo corrispondente al primo indice
e come destinazione il nodo corrispondente al secondo indice.
Questa operazione è opzionale.getEdgesBetween
in interface Graph<V,E>
index1
- indice del primo nodo (nodo sorgente in caso di grafo
orientato)index2
- indice del secondo nodo (nodo destinazione in caso di
grafo orientato)public java.util.Set<GraphEdge<V,E>> getEdgesBetween(GraphNode<V> node1, GraphNode<V> node2)
Graph
getEdgesBetween
in interface Graph<V,E>
node1
- primo nodo (nodo sorgente in caso di grafo diretto)node2
- secondo nodo (nodo destinazione in caso di grafo
diretto)