• Non ci sono risultati.

1 Grafo non orientato

N/A
N/A
Protected

Academic year: 2021

Condividi "1 Grafo non orientato"

Copied!
4
0
0

Testo completo

(1)

Azzolini Riccardo 2019-03-12

Grafi

1 Grafo non orientato

Un grafo non orientato è una coppia G =⟨V, E⟩ dove

• V è l’insieme finito dei vertici o nodi;

• E⊆ V(2) è l’insieme dei lati.

Nota: V(2)={U ⊆ V | |U| = 2} è l’insieme dei sottoinsiemi di due elementi di V .

2 Grafo orientato

Un grafo orientato è una coppia G =⟨V, E⟩ dove

• V è l’insieme finito dei vertici o nodi;

• E⊆ V2 è l’insieme degli archi.

3 Numero di lati o archi

Siano G =⟨V, E⟩, n = |V |, m = |E|.

• Per un grafo non orientato, il numero di lati è

0≤ m ≤ n(n− 1) 2

• Per un grafo orientato, il numero di archi è

0≤ m ≤ n2 G si dice

• sparso se m = O(n);

• denso se m = Θ(n2).

1

(2)

4 Sottografo

G =⟨V, E⟩ è un sottografo di G = ⟨V, E⟩ se e solo se

• V ⊆ V , cioè G ha solo vertici presenti in G;

• E ⊆ E ∩ V′(2) se G è non orientato, o E ⊆ E ∩ V′2 se G è orientato, ovvero G ha solo lati/archi che sono presenti in G e collegano vertici appartenenti a V.

5 Cappio

In un grafo orientato, un arco (x, x), cioè da un nodo a se stesso, è chiamato cappio.

6 Adiacenza

Sia G =⟨V, E⟩ un grafo. Un nodo w ∈ V è adiacente a un altro nodo v ∈ V se

• per G non orientato, esiste un lato tra v e w, cioè {v, w} ∈ E;

• per G orientato, esiste un arco da v a w, cioè (v, w)∈ E.

L’insieme di adiacenza di v è l’insieme di tutti i nodi adiacenti a v:

• Adiac(v) ={w | {v, w} ∈ E} se G è non orientato;

• Adiac(v) ={w | (v, w) ∈ E} se G è orientato;

7 Cammino

Un cammino in G = ⟨V, E⟩ è una sequenza di nodi x1, x2, . . . , xk, ciascuno collegato al successivo da un lato/arco, cioè tali che {xi, xi+1} ∈ E (o (xi, xi+1) ∈ E) per ogni 1≤ i < k.

Un cammino x1, x2, . . . , xk ha lunghezza k− 1.

8 Ciclo

Un ciclo in G =⟨V, E⟩ è un cammino x1, x2, . . . , xk che inizia e finisce allo stesso nodo, cioè tale che x1 = xk.

2

(3)

9 Ciclo e cammino semplici

Un ciclo x1, x2, . . . , xk è semplice se e solo se tutti i suoi nodi sono diversi, eccetto il primo e l’ultimo, ovvero

xi = xj ⇐⇒ i = 1 ∧ j = k Un cammino, invece, è semplice se e solo se non contiene cicli.

10 Nodi, grafi e componenti connessi

Un nodo v ∈ V è connesso a un altro nodo w ∈ V , e si scrive v ⋄ w, se in G = ⟨V, E⟩

esiste un cammino da v a w.

G = ⟨V, E⟩ è un grafo connesso se e solo se tutti i suoi nodi sono connessi tra loro, cioè

v⋄ w ∀v, w ∈ V

In un grafo G = ⟨V, E⟩, ⋄ è una relazione binaria riflessiva e transitiva sull’insieme V . Se G è non orientato, ogni cammino si può percorrere in entrambe le direzioni. Di conseguenza,

v⋄ w ⇐⇒ w ⋄ v

ovvero ⋄ è anche simmetrica, e quindi è una relazione di equivalenza, le cui classi di equivalenza, chiamate componenti connesse di G, sono gruppi di nodi tutti connessi tra di loro. L’insieme quoziente V /⋄ è allora l’insieme delle componenti connesse di G.

11 Rappresentazioni

Un grafo G =⟨V, E⟩ può essere rappresentato tramite

liste di adiacenza: una lista di tutti i nodi e, per ciascuno di essi, una lista dei nodi adiacenti;

3

(4)

matrice di adiacenza: una matrice quadrata binaria, nella quale l’elemento aij ha valore 1 se esiste il lato {xi, xj} (o l’arco (xi, xj)), altrimenti ha valore 0.

Osservazione: Se G è non orientato, la matrice è simmetrica rispetto alla diagonale principale e tutti gli elementi su tale diagonale sono 0 (perché i cappi esistono solo nei grafi orientati).

Se n =|V | e m = |E|, allora

• la rappresentazione con liste di adiacenza occupa spazio Θ(n + m), ma richiede tempo O(n)1 per stabilire se esiste un lato/arco;

• la rappresentazione con matrice di adiacenza occupa solitamente più spazio, Θ(n2), ma in compenso permette di stabilire se un lato/arco esiste in tempo O(1).

In pratica, conviene rappresentare

• grafi sparsi mediante liste di adiacenza;

• grafi densi mediante matrice di adiacenza.

Infatti, nel caso di un grafo denso, cioè con m = Θ(n2), anche le liste di adiacenza occuperebbero spazio Θ(n + n2) = Θ(n2), quindi l’uso di una matrice di adiacenza permette di ridurre il tempo necessario per le operazioni pur occupando lo stesso spazio (in termini asintotici).

1Nel caso peggiore è necessario scorrere per intero la lista di nodi, Θ(n), e una lista di adiacenza contenente tutti gli altri nodi, Θ(n).

4

Riferimenti

Documenti correlati

Rio Chierego (e-mail: riochierego@libero.it - sito web:

Si assuma che l’input contenga un grafo indiretto, e quindi che per 11 ciascun arco da i a j esiste anche l’arco da j ad i.. 12 Un grafo è connesso quando esiste un percorso tra

Il contratto, il pri- mo &#34;specifico&#34; in Europa, parte dal presupposto i rider sono lavoratori autonomi, riconosce un compenso orario minimo di 10 euro lorde che scendono a 7

 Con la Legge Moratti del 2003 si stabilisce che sia il Corso in Formazione Primaria sia la SSIS verranno sostituiti da Lauree Specialistiche per l’insegnamento, caratterizzate,

Dovendo rappresentare un grafo G con n nodi ordinati con una lista di adiacenza, si definiscono n liste (una per ogni vertice) riempite nel modo seguente. Per ogni nodo v

current = previous; // aggiorno riferimenti iteratore previous = null; // a subito prima del nodo rimosso if (!hasNext()) // se ho rimosso l'ultimo

current = previous; // aggiorno riferimenti iteratore previous = null; // a subito prima del nodo rimosso if (!hasNext()) // se ho rimosso l'ultimo nodo

Grafo particolare è quello &#34;euleriano&#34;, dal matematico Eulero, che nel 1736 lo utilizzò per risolvere il problema dei ponti di Königsberg: un cammino o percorso è detto di