Sobes.tech
Junior — Middle

Come si possono rappresentare e descrivere le connessioni e le relazioni tra i vertici in una struttura a grafo?

sobes.tech AI

Risposta dell'AI

Le connessioni e le relazioni tra i vertici in una struttura di grafo sono generalmente descritte tramite archi. I principali modi di rappresentare un grafo:

  • Lista di adiacenza: per ogni vertice si conserva una lista dei vertici vicini con cui è collegato. È un metodo efficiente per grafi sparsi.

  • Matrice di adiacenza: un array bidimensionale in cui l'elemento [i][j] indica la presenza (e possibilmente il peso) di un arco tra i vertici i e j. Utile per grafi densi.

  • Lista di archi: semplicemente una lista di tutti gli archi, dove ogni arco contiene informazioni sui vertici iniziali e finali (e peso, se presente).

Ad esempio, in Java, un grafo può essere rappresentato così:

class Graph {
    private Map<Integer, List<Integer>> adjacencyList = new HashMap<>();

    void addEdge(int from, int to) {
        adjacencyList.computeIfAbsent(from, k -> new ArrayList<>()).add(to);
        // Per un grafo non orientato, aggiungere l'arco inverso
        // adjacencyList.computeIfAbsent(to, k -> new ArrayList<>()).add(from);
    }
}

In questo modo, le connessioni tra vertici sono modellate tramite archi, e la struttura dati viene scelta in base al compito e alle caratteristiche del grafo.