• 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

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

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

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

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