• Non ci sono risultati.

Un grafo G é costituito da una coppia di insiemi (V, A) dove

N/A
N/A
Protected

Academic year: 2021

Condividi "Un grafo G é costituito da una coppia di insiemi (V, A) dove"

Copied!
42
0
0

Testo completo

(1)

Introduzione ai grafi

(2)

Grafi

Un grafo G é costituito da una coppia di insiemi (V, A) dove

V é detto insieme dei nodi e A é detto insieme di archi ed é

un sottinsieme di tutte le possibili coppie di nodi in V . Se le

coppie di nodi sono ordinate, il grafo é detto orientato, se

non sono ordinate é detto non orientato.

(3)

Un esempio

Grafo G con insieme di nodi

V = {a, b, c, d, e}, insieme di archi

A = {(a, b); (a, c); (b, c); (b, e); (c, d); (d, b)}

G grafo orientato: coppie ordinate e quindi, ad esempio, la coppia (a, b) é diversa dalla coppia (b, a)

G non orientato: coppie non ordinate e quindi, ad esempio,

la coppia (a, b) e la coppia (b, a) sono equivalenti tra loro.

(4)

Definizione

Dato un grafo orientato G = (V, A) e un arco (i, j) ∈ A

diremo che il nodo i é predecessore del nodo j e che il

nodo j é successore del nodo i . Nel caso di un grafo non

orientato G = (V, A) , dato un arco (i, j) ∈ A diremo che il

nodo i e il nodo j sono tra loro adiacenti.

(5)

Rappresentazione grafica

Nodi → punti nel piano

Archi → linee che congiungono i punti/nodi dell’arco (con una freccia dal primo nodo verso il secondo nel caso di grafo orientato)

a

b

c d

e

(6)

Liste di adiacenza

Ad ogni nodo del grafo é associata la lista dei suoi

successori (se il grafo é orientato) o dei suoi adiacenti (se il grafo é non orientato).

Grafo orientato

a : (b, c) b : (c, e) c : (d) d : (b) e : ∅ Grafo non orientato

a : (b, c) b : (a, c, d, e) c : (a, b, d) d : (b, c) e : (b)

(7)

Matrice di incidenza nodo-arco

Matrice con tante righe quanti sono i nodi e tante colonne

quanti sono gli archi. Nella colonna relativa ad un arco (i, j)

avremo tutte le componenti 0 tranne quelle che si trovano

nella riga i e nella riga j . Se il grafo é non orientato queste

due componenti sono entrambe pari a +1, se é orientato la

componente relativa al nodo predecessore i é pari a +1,

quella relativa al nodo successore é -1.

(8)

Nell’esempio

Grafo orientato

(a, b) (a, c) (b, c) (b, e) (c, d) (d, b)

a 1 1 0 0 0 0

b -1 0 1 1 0 -1

c 0 -1 -1 0 1 0

d 0 0 0 0 -1 1

e 0 0 0 -1 0 0

(9)

Continua

Grafo non orientato

(a, b) (a, c) (b, c) (b, e) (c, d) (d, b)

a 1 1 0 0 0 0

b 1 0 1 1 0 1

c 0 1 1 0 1 0

d 0 0 0 0 1 1

e 0 0 0 1 0 0

(10)

Archi adiacenti e cammini

Due archi che hanno un nodo in comune sono detti adiacenti. Nell’esempio (a, b) e (a, c) sono adiacenti.

Dato un grafo G = (V, A) , una sequenza di m + 1 nodi s 0 → s 1 → s 2 → · · · → s m

tali che per ogni i = 1, . . . , m si ha:

(s i −1 , s i ) ∈ A oppure (s i , s i −1 ) ∈ A

(l’alternativa é superflua nel caso non orientato) é detto

cammino nel grafo. Possiamo vedere anche un cammino di lunghezza m come una sequenza di archi a due a due

adiacenti.

(11)

Continua

Il numero m di archi del cammino é detto lunghezza del cammino.

Un cammino é detto semplice se nessun arco é percorso

piú di una volta, elementare se nessun nodo viene toccato

piú di una volta.

(12)

Esempi di cammini

a → b → d → c

cammino elementare di lunghezza 3; il cammino a → b → c → d → b → e

cammino semplice ma non elementare di lunghezza 5 a → b → c → d → b → a → c

cammino che non é né semplice né elementare di

lunghezza 6.

(13)

Cicli

Un cammino semplice

s 0 → s 1 → s 2 → · · · → s m

in cui primo e ultimo nodo coincidono (cioé s m = s 0 ) viene detto ciclo di lunghezza m . Se omettendo l’ultimo nodo s m

si ottiene un cammino elementare, si parla di ciclo elementare.

Nell’esempio

a → b → c → a

é un ciclo elementare di lunghezza 3.

(14)

Cammini e cicli orientati

In un grafo orientato un cammino o un ciclo s 0 → s 1 → s 2 → · · · → s m

( s m = s 0 nel caso di un ciclo) in cui tutti gli archi sono

percorsi secondo il loro orientamento, ovvero si ha che per ogni i = 1, . . . , m :

(s i −1 , s i ) ∈ A

viene detto orientato, altrimenti si dice non orientato.

(15)

Nell’esempio

a → b → c cammino orientato

b → a → c cammino non orientato

a → b → c → a ciclo non orientato

b → c → d → b

ciclo orientato.

(16)

Componenti connesse

Dati due nodi i e j di un grafo G , se esiste un cammino da i a j allora si dice che j é accessibile da i .

Relazione tra i nodi "é accessibile da" → relazione di

equivalenza (soddisfa le tre proprietá ri¤essiva, simmetrica e transitiva).

Classi di equivalenza → componenti connesse del grafo.

Un grafo é detto connesso se ha un’unica componente

connessa (cioé se tutti i nodi sono accessibili tra loro)

(17)

Individuazione componenti connesse

Inizializzazione Poni W = V e r = 1 .

(18)

Individuazione componenti connesse

Inizializzazione Poni W = V e r = 1 .

Passo 1 Seleziona i ∈ W e poni S = {i} e T r = ∅ .

(19)

Individuazione componenti connesse

Inizializzazione Poni W = V e r = 1 .

Passo 1 Seleziona i ∈ W e poni S = {i} e T r = ∅ .

Passo 2 Seleziona j ∈ S . Poni

S = (S \ {j}) ∪ {k 6∈ T r : (k, j) ∈ A o (j, k) ∈ A}.

e T r = T r ∪ {j} .

(20)

Individuazione componenti connesse

Inizializzazione Poni W = V e r = 1 .

Passo 1 Seleziona i ∈ W e poni S = {i} e T r = ∅ .

Passo 2 Seleziona j ∈ S . Poni

S = (S \ {j}) ∪ {k 6∈ T r : (k, j) ∈ A o (j, k) ∈ A}.

e T r = T r ∪ {j} .

Passo 3 Se S = ∅ , vai al Passo 4. Se T r ∪ S = W , poni

T r = T r ∪ S e vai al Passo 4. Altrimenti ritorna al Passo

2.

(21)

Individuazione componenti connesse

Inizializzazione Poni W = V e r = 1 .

Passo 1 Seleziona i ∈ W e poni S = {i} e T r = ∅ .

Passo 2 Seleziona j ∈ S . Poni

S = (S \ {j}) ∪ {k 6∈ T r : (k, j) ∈ A o (j, k) ∈ A}.

e T r = T r ∪ {j} .

Passo 3 Se S = ∅ , vai al Passo 4. Se T r ∪ S = W , poni T r = T r ∪ S e vai al Passo 4. Altrimenti ritorna al Passo 2.

Passo 4 Poni W = W \ T r . Se W = ∅ , allora T 1 , T 2 , . . . , T r

(22)

Forte accessibilitá

Un nodo j é detto fortemente accessibile da i se esiste un cammino orientato da i a j .

Relazione "é fortemente accessibile da" non é una

relazione di equivalenza (non vale la proprietá di simmetria) Un grafo in cui ogni nodo é fortemente accessibile da tutti gli altri é detto fortemente connesso.

L’esistenza in un grafo di un ciclo orientato che tocca tutti i nodi del grafo garantisce che il grafo sia fortemente

connesso.

(23)

Sottografi

Dato un grafo G = (V, A) e un sottinsieme A ⊆ A , un grafo G = (V, A ) é detto grafo parziale di G . Dati V ′′ ⊆ V e

A ′′ ⊆ A(V ′′ ) = {(i, j) ∈ A : i ∈ V ′′ , j ∈ V ′′ }

il grafo G ′′ = (V ′′ , A ′′ ) viene detto sottografo di G . In

particolare, se A ′′ = A(V ′′ ) il sottografo viene detto

sottografo indotto da V ′′ .

(24)

Nell’esempio

G = (V, A ) con

A = {(a, b); (b, c); (b, e); (c, d); (d, b)}

grafo parziale di G

G ′′ = (V ′′ , A ′′ ) con V ′′ = {a, b, d} e A ′′ = {(a, b)}

sottografo di G

G ′′ = (V ′′ , A ′′ ) con V ′′ = {a, b, d} e

A ′′ = {(a, b); (d, b)}

(25)

Grafi bipartiti

Un grafo G = (V, A) si dice bipartito se l’insieme V puó essere partizionato in due sottinsieme V 1 e V 2 (quindi V 1 ∪ V 2 = V e V 1 ∩ V 2 = ∅ ) tali che

∀ (i, j) ∈ A : i ∈ V 1 , j ∈ V 2 oppure i ∈ V 2 , j ∈ V 1 .

Osservazione 1 Un grafo é bipartito se e solo se non

contiene cicli di lunghezza dispari.

(26)

Riconoscimento grafi bipartiti

Passo 0 Poni W = V , C 1 = C 2 = ∅ .

(27)

Riconoscimento grafi bipartiti

Passo 0 Poni W = V , C 1 = C 2 = ∅ .

Passo 1 Seleziona i ∈ W e poni T 1 = {i} , C 1 = T 1 ∪ {i} .

(28)

Riconoscimento grafi bipartiti

Passo 0 Poni W = V , C 1 = C 2 = ∅ .

Passo 1 Seleziona i ∈ W e poni T 1 = {i} , C 1 = T 1 ∪ {i} .

Passo 2 Poni

T 2 = {k ∈ V \C 2 : ∃ i ∈ T 1 tale che (i, k) ∈ A oppure (k, i) ∈ A}

Poni C 2 = C 2 ∪ T 2 .

(29)

Riconoscimento grafi bipartiti

Passo 0 Poni W = V , C 1 = C 2 = ∅ .

Passo 1 Seleziona i ∈ W e poni T 1 = {i} , C 1 = T 1 ∪ {i} .

Passo 2 Poni

T 2 = {k ∈ V \C 2 : ∃ i ∈ T 1 tale che (i, k) ∈ A oppure (k, i) ∈ A}

Poni C 2 = C 2 ∪ T 2 .

Passo 3 Poni

T 1 = {k ∈ V \C 1 : ∃ i ∈ T 2 tale che (i, k) ∈ A oppure (k, i) ∈ A}

Poni C 1 = C 1 ∪ T 1 .

(30)

Continua

Passo 4 Se C 1 ∩ C 2 6= ∅ , allora il grafo non é bipartito.

Altrimenti vai al Passo 5.

(31)

Continua

Passo 4 Se C 1 ∩ C 2 6= ∅ , allora il grafo non é bipartito.

Altrimenti vai al Passo 5.

Passo 5 Poni W = W \ (C 1 ∪ C 2 ) . Se W = ∅ e T 1 = ∅ , allora il grafo é bipartito con V 1 = C 1 e V 2 = C 2 .

Altrimenti, se T 1 = ∅ , ritorna al Passo 1, se T 1 6= ∅

ritorna al Passo 2.

(32)

Alberi

Sia dato un grafo G = (V, A) con card(V ) = n dove card(V ) denota la cardinalitá (il numero di elementi) dell’insieme V . Si dice che G é un albero se soddisfa le seguenti condizioni (equivalenti tra loro)

1. G é privo di cicli e connesso;

2. G é privo di cicli e card(A) = n − 1 ; 3. G é connesso e card (A) = n − 1 ;

4. esiste un unico cammino elementare che congiunge

ogni coppia di nodi.

(33)

Alberi di supporto

Sia dato un grafo generico G = (V, A) . Si definisce albero di supporto o spanning tree di G un grafo parziale T = (V, A T ) di G (quindi con A T ⊆ A ) che é un albero.

Si noti che un albero di supporto di G deve contenere tutti i

nodi di G e si dovrá avere card (A T ) = card(V ) − 1 .

(34)

Albero di supporto a peso minimo

Funzione peso

w : A → R

Peso di un albero di supporto T = (V, A T ) w(T ) = X

e ∈A

T

w(e).

Albero di supporto a peso minimo:

min

T é albero di supporto w (T )

(35)

Algoritmo greedy

Passo 1 Si ordinino tutti gli m = card(A) archi del grafo in ordine non decrescente rispetto al peso, cioé

w (e 1 ) ≤ w(e 2 ) ≤ · · · ≤ w(e m −1 ) ≤ w(e m ).

Si ponga A T = ∅ e k = 1

(36)

Algoritmo greedy

Passo 1 Si ordinino tutti gli m = card(A) archi del grafo in ordine non decrescente rispetto al peso, cioé

w (e 1 ) ≤ w(e 2 ) ≤ · · · ≤ w(e m −1 ) ≤ w(e m ).

Si ponga A T = ∅ e k = 1

Passo 2 Se card (A T ) = card(V ) − 1 STOP: T = (V, A T ) é

la soluzione. Altrimenti si vada al Passo 3.

(37)

Algoritmo greedy

Passo 1 Si ordinino tutti gli m = card(A) archi del grafo in ordine non decrescente rispetto al peso, cioé

w (e 1 ) ≤ w(e 2 ) ≤ · · · ≤ w(e m −1 ) ≤ w(e m ).

Si ponga A T = ∅ e k = 1

Passo 2 Se card (A T ) = card(V ) − 1 STOP: T = (V, A T ) é la soluzione. Altrimenti si vada al Passo 3.

Passo 3 Se e k non forma cicli con gli archi in A T , lo si aggiunga ad A T , cioé si ponga A T = A T ∪ {e k } .

Altrimenti si lasci A T invariato.

(38)

Algoritmo greedy

Passo 1 Si ordinino tutti gli m = card(A) archi del grafo in ordine non decrescente rispetto al peso, cioé

w (e 1 ) ≤ w(e 2 ) ≤ · · · ≤ w(e m −1 ) ≤ w(e m ).

Si ponga A T = ∅ e k = 1

Passo 2 Se card (A T ) = card(V ) − 1 STOP: T = (V, A T ) é la soluzione. Altrimenti si vada al Passo 3.

Passo 3 Se e k non forma cicli con gli archi in A T , lo si aggiunga ad A T , cioé si ponga A T = A T ∪ {e k } .

Altrimenti si lasci A T invariato.

Passo 4 Si ponga k = k + 1 e si ritorni al Passo 2.

(39)

Altro algoritmo

Inizializzazione Fissato v 1 ∈ V , si ponga U = {v 1 } A T = ∅.

Inoltre, per ogni v ∈ V \ U si ponga:

e v =

( (v, v 1 ) se w(v, v 1 ) ≤ w(v 1 , v )

(v 1 , v ) altrimenti

(40)

Altro algoritmo

Inizializzazione Fissato v 1 ∈ V , si ponga U = {v 1 } A T = ∅.

Inoltre, per ogni v ∈ V \ U si ponga:

e v =

( (v, v 1 ) se w(v, v 1 ) ≤ w(v 1 , v ) (v 1 , v ) altrimenti

Passo 1 Se U = V , allora STOP: l’albero di supporto (V, A T ) é quello a peso minimo. Altrimenti si consideri un nodo v tale che:

w (e v ) = min

v ∈V \U w (e v )

(41)

Continua

Passo 2 Si ponga:

U = U ∪ {v} A T = A T ∪ {e v }.

(42)

Continua

Passo 2 Si ponga:

U = U ∪ {v} A T = A T ∪ {e v }.

Passo 3 Per ogni v ∈ V \ U , si lasci invariato e v se w (v, v), w(v, v) ≥ w(e v ),

altrimenti si ponga:

e v =

( (v, v) se w(v, v) ≤ w(v, v) (v, v) altrimenti

Si ritorni al Passo 1.

Riferimenti

Documenti correlati

verifica dei soggiorni climatici svolti nel 2019 PROPOSTE SOGGIORNI ESTIVI per l’anno 2020 ORDINE DEL GIORNO:. É CONVOCATO

Assessment of the mechanism responsible for the lesion, clinical examination, and the progress of the functional signs over a period of 48 h will guide the diagno- sis of

Di approvare lo schema di “Convenzione per l’utilizzo della soluzione informatica realizzata dalle Camere di Commercio per la gestione telematica delle pratiche

Desejemo-nos uns aos outros jamais perder essa curiosidade infinita – que é própria principalmente da juventude, mas da qual eu também, que sou “quase” velho, preciso para

Isto é o sinal de que ela está a crescer: surpreende em si mesma uma nostalgia intransponível]: as amizades da escola ou da companhia de sábado à noite não me

Les étrangers en situation irrégulière bénéficient de soins ambulatoires et urgents, essentiels ou continus en cas d'une maladie et d'une blessure, et ils sont étendus aux

Oggetto: Determina di impegno di spesa e determina a procedere a richiesta di offerta (RdO), su Mercato Elettronico della Pubblica Amministrazione, per l'acquisizione del servizio

Papà Enrico arriva a casa la sera sempre più stanco, di solito chiede a tutti come è andata la giornata, se hanno fatto i compiti, guarda il cartellone, Ceci