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 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()
Graphpublic int edgeCount()
Graphpublic int size()
Graphpublic boolean isEmpty()
Graphpublic void clear()
Graphpublic boolean isDirected()
GraphisDirected in interface Graph<V,E>public java.util.Set<GraphNode<V>> getNodes()
Graphpublic boolean addNode(GraphNode<V> node)
Graphpublic boolean removeNode(GraphNode<V> node)
GraphremoveNode in interface Graph<V,E>node - il nodo da rimuoverepublic boolean containsNode(GraphNode<V> node)
GraphcontainsNode 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)
GraphgetAdjacentNodes in interface Graph<V,E>node - il nodo di cui cercare i nodi adiacentipublic java.util.Set<GraphNode<V>> getPredecessorNodes(GraphNode<V> node)
GraphgetPredecessorNodes in interface Graph<V,E>node - il nodo di cui cercare i nodi successoripublic java.util.Set<GraphEdge<V,E>> getEdges()
Graphpublic boolean addEdge(GraphEdge<V,E> edge)
Graphpublic boolean removeEdge(GraphEdge<V,E> edge)
GraphremoveEdge in interface Graph<V,E>edge - l'arco da rimuoverepublic boolean containsEdge(GraphEdge<V,E> edge)
GraphcontainsEdge in interface Graph<V,E>edge - l'arco da cercarepublic java.util.Set<GraphEdge<V,E>> getEdges(GraphNode<V> node)
Graphpublic java.util.Set<GraphEdge<V,E>> getIngoingEdges(GraphNode<V> node)
GraphgetIngoingEdges in interface Graph<V,E>node - il nodo di cui determinare tutti gli archi entrantipublic int getDegree(GraphNode<V> node)
Graphpublic 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)
GraphgetEdgesBetween 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)