• Non ci sono risultati.

1 Numero di cammini in un grafo

N/A
N/A
Protected

Academic year: 2021

Condividi "1 Numero di cammini in un grafo"

Copied!
7
0
0

Testo completo

(1)

Enumerazione di cammini e di cicli in un grafo

Fabrizio Pugliese

Abstract

Come applicazione della matrice d’adiacenza, ricaviamo alcune formule per il calcolo del numero di cammini e cicli di lunghezza fissata.

1 Numero di cammini in un grafo

Sia G = (V, E) un grafo (semplice non orientato) con n vertici v

1

, . . . , v

n

ed m lati, e sia A : F → F il suo operatore d’adiacenza, definito da

A(f )(v)

def

= X

z∼v

f (z),

per ogni v ∈ V e per ogni funzione f : V → R; sia A(G) = ka

ir

(G)k

ni,r=1

la matrice d’adiacenza, cio`e la matrice di A rispetto alla base di F formata dalle funzioni caratteristiche χ

1

, . . . , χ

n

dei vertici, cio`e

a

ir

(G) = a

ri

(G) = A(G)(χ

r

)(v

i

)

Ricordiamo che il numero di passeggiate di lunghezza k dal vertice v

i

al vertice v

j

`e

w

kij

(G) = a

(k)ij

(G), dove

A

k

(G)

def

= A(G) · A(G) · · · A(G) =

° °

°a

(k)ij

(G)

° °

°

n

i,j=1

Vogliamo descrivere un ”algoritmo” per calcolare il numero

p

kij

(G) = numero di k-cammini in G fra i vertici v

i

e v

j

A questo scopo denotiamo, per ogni grafo G, per ogni A, B ⊂ V (G) e per ogni k ∈ N, con S

A,Bk

(G) l’insieme dei k-cammini in G con vertice iniziale in A e vertice finale in B. Siano, inoltre, per ogni W ⊂ V (G),

N

W

(G) = {vertici di V

G

\W adiacenti a W } , E

W

(G) = {lati di E

G

incidenti con W } ,

(2)

e sia

G

W

= G\E

W

= (V (G), E(G)\E

W

)

il grafo ottenuto da G sconnettendo tutti i vertici di W (che quindi, in G

W

,

`e un insieme di vertici isolati). E’ facile capire che, dati due vertici distinti v, w ∈ V (G), l’insieme S

v,wk

(G), con k ≥ 2, `e in corrispondenza biunivoca con l’insieme S

k−1v,N

w(G)\{v}

(G

w

) (la corrispondenza `e quella che associa ad ogni k- cammino da v a w il sottocammino formato dai primi k − 1 lati); d’altra parte

`e anche chiaro che S

v,Nk−1

w(G)\{v}

(G

w

) = [

z∈Nw(G)\{v}

S

v,zk−1

(G

w

),

con gli addendi a secondo membro a due a due disgiunti; quindi

¯ ¯S

v,wk

(G) ¯

¯ = ¯

¯ ¯S

v,Nk−1

w(G)\{v}

(G

w

)

¯ ¯

¯ = X

v6=z∈Nw(G)

¯ ¯S

v,zk−1

(G

w

) ¯

¯ ,

cio`e (denotando G

vj

semplicemente con G

j

),

p

kij

(G) = X

n r=1

a

rj

(G) p

k−1ir

(G

j

); (1)

si noti, in particolare, che

p

kii

(G) = 0, per ogni k ∈ N, i ∈ {1, . . . , n}.

Dunque: per calcolare tramite la (1) il numero di k-cammini da v

i

a v

j

nel grafo G devo prima calcolare quanti (k −1)-cammini ci sono, nel grafo G

j

, fra v

i

e ciascun vertice adiacente a v

j

nel grafo G. Riapplicando il procedimento a G

j

mi riduco a calcolare dei p

k−2is

(G

j,r

) con i v

s

adiacenti a v

r

in G

j

e G

j,r

= (G

j

)

r

ottenuto da G sconnettendo v

j

e v

r

(si noti che G

j,r

= G

r,j

); ecc...

Naturalmente, ad ogni passo di questo algoritmo ricorsivo il numero di p

hiq

(G

j,r,...

) da calcolare cresce, a volte anche ”esponenzialmente”, ma d’altra parte i grafi G

j,r,...

diventano sempre pi` u semplici a mano a mano che sconnet- tiamo vertici da G.

Sarebbe bello poter trovare delle formule esplicite per i p

kij

(G) in funzione della matrice d’adiacenza A(G) e delle sue potenze. Purtroppo non `e semplice farlo se k non `e basso, comunque facciamo qualche calcolo per k = 2, 3, 4 . . . . Evidentemente, vale

p

1ij

(G) = a

ij

(G), (2)

passiamo a k = 2. Applicando (1) si ha

p

2ij

(G) = X

n r=1

a

rj

(G)p

1ir

(G

j

);

ma, per la (2) applicata al caso G = G

j

, si ha

p

1ir

(G

j

) = a

ir

(G

j

) = (1 − δ

ij

) (1 − δ

rj

) a

ir

(G), (3)

(3)

e sostituendo nell’espressione precedente si ottiene p

2ij

(G) = (1 − δ

ij

) X

r

(1 − δ

rj

) a

rj

(G)a

ir

(G)

= (1 − δ

ij

) (

a

(2)ij

X

r

a

ir

(G)δ

rj

a

rj

(G) )

,

cio`e, tenendo conto che a

jj

(G) = 0,

p

2ij

(G) = (1 − δ

ij

) a

(2)ij

(G), (4) come c’era da aspettarsi (una 2-passeggiata fra vertici distinti `e ovviamente un 2-cammino).

Passiamo a k = 3. Sempre applicando la (1) e tenendo conto di (4) si ottiene

p

3ij

(G) = X

n r=1

a

rj

(G)p

2ir

(G

j

), (5)

con p

2ir

(G

j

) data dalla (4) sostituendo G con G

j

: p

2ir

(G

j

) = (1 − δ

ir

) a

(2)ir

(G

j

) ; dobbiamo valutare gli elementi di A

2

(G

j

), sfruttando (3):

a

(2)ir

(G

j

) = X

n s=1

a

is

(G

j

)a

sr

(G

j

)

= (1 − δ

ij

) (1 − δ

rj

) X

s

(1 − δ

sj

) a

is

(G)a

sr

(G) (6)

= (1 − δ

ij

) (1 − δ

rj

)

³

a

(2)ir

(G) − a

ij

(G)a

jr

(G)

´

(si osservi che (1 − δ

sj

)

2

= 1 − δ

sj

); quindi, p

2ir

(G

j

) = (1 − δ

ir

) (1 − δ

ij

) (1 − δ

rj

) ³

a

(2)ir

(G) − a

ij

(G)a

jr

(G) ´

(7) sostituendo nella (5) otteniamo:

p

3ij

(G) = (1 − δ

ij

) X

n r=1

(1 − δ

ir

) (1 − δ

rj

) a

rj

(G) n

a

(2)ir

(G) − a

ij

(G)a

jr

(G) o

che con semplici passaggi (in cui si sfrutta il fatto che a

ii

= 0, che a

3ij

= a

ij

e che P

r

a

ir

`e uguale al grado d

i

del vertice v

i

) diventa p

3ij

(G) = (1 − δ

ij

) n

a

(3)ij

(G) − a

ij

(G)(d

i

(G) + d

j

(G) − 1) o

(8)

(4)

Studiamo il caso k = 4. Sempre applicando la (1) si ha p

4ij

(G) = X

r

a

rj

(G)p

3ir

(G

j

); (9)

d’altra parte, per la (8) vale p

3ir

(G

j

) = (1 − δ

ir

) n

a

(3)ir

(G

j

) − a

ir

(G

j

)(d

i

(G

j

) + d

r

(G

j

) − 1) o

, (10) con

d

i

(G) = a

(2)ii

grado del vertice v

i

nel grafo G; evidentemente vale

d

i

(G

j

) = (1 − δ

ij

) (d

i

(G) − a

ij

(G)) ; (11) a

ir

(G

j

) `e dato dalla (3), resta da calcolare la matrice A

3

(G

j

):

a

(3)ir

(G

j

) = X

s

a

is

(G

j

)a

(2)sr

(G

j

)

= (1 − δ

ij

) (1 − δ

rj

) X

s

(1 − δ

sj

) a

is

(G) n

a

(2)sr

(G) − a

sj

(G)a

jr

(G) o

,

cio`e, in definitiva,

a

(3)ir

(G

j

) = (1 − δ

ij

) (1 − δ

rj

) n

a

(3)ir

(G) − a

jr

(G)a

(2)ij

(G) − a

ij

(G)a

(2)rj

(G) o

(12) Sostituendo (11) e (12) in (10) si ottiene

1

p

3ir

(G

j

) = (1 − δ

ir

) (1 − δ

ij

) (1 − δ

rj

) n

a

(3)ir

− a

(2)ij

a

rj

− a

ij

a

(2)rj

− a

ir

(d

i

+ d

r

− a

ij

− a

rj

− 1) o (13)

Sostituendo in (9) si ottiene

p

4ij

= (1 − δ

ij

) (

a

(4)ij

− a

(2)ij

(d

i

+ d

j

− 3a

ij

− 2) − a

ij

³

a

(3)ii

+ a

(3)jj

´

X

r

d

r

a

ir

a

rj

)

1Spesso, nel seguito di questo appunto, ometteremo la specificazione ”da 1 a n” nelle sommatoie con tale range e la specificazione ”(G)” per le grandezze relative a tale grafo

(5)

2 Numero dei cicli in un grafo.

Per ogni intero k, denotiamo con C

jk

il numero di k-cicli passanti per il vertice v

j

e con C

k

(G) il numero totale di k-cicli nel grafo; evidentemente,

C

k

(G) = 1 k

X

n j=1

C

jk

(14)

Per calcolare C

jk

possiamo utilizzare la formula

C

jk

= 1 2

X

i,r

(1 − δ

ir

) a

ij

a

rj

p

k−2ir

(G

j

) ; (15)

infatti, un k-ciclo passante per v

j

`e individuato da due vertici v

i

, v

r

adiacenti a v

j

e da un (k − 2)-cammino da v

i

a v

r

non passante per v

j

(il fattore 1/2 deriva dal fatto che scambiando v

i

con v

r

il k-ciclo non cambia). Notiamo che, combinando (14) con (15) e con (1), si ottiene

C

k

(G) = 1 2k

X

i,j

a

ij

p

k−1ij

= 1

2k T r (AP

k−1

) ,

che si sarebbe potuta ricavare direttamente considerando che: 1) ogni k-ciclo passante per il lato v

i

v

j

`e la somma di tale lato con un (k − 1)-cammino da v

i

a v

j

; 2) sommando il numero di cicli di cui al punto 1) su tutte le coppie ordinate (v

i

, v

j

) tali che v

i

∼ v

j

, ogni ciclo risulta contato 2k volte (perch`e contiene k lati e pu`o essere percorso in due versi distinti).

Tornando alle formule (14), (15), consideriamo il caso pi` u semplice, k = 3;

per la (14), il numero di triangoli nel grafo G `e:

C

3

(G) = 1 3

X

n j=1

C

j3

;

d’altra parte, applicando (15) si ha C

j3

= 1

2 X

i,r

(1 − δ

ir

) a

ij

a

rj

p

1ir

(G

j

) ,

che, ricordando (3), ci fornisce il numero dei triangoli passanti per v

j

: C

j3

= 1

2 X

i,r

(1 − δ

ir

) (1 − δ

ij

) (1 − δ

rj

) a

ij

a

rj

a

ir

= 1 2

X

i,r

a

ij

a

rj

a

ir

= 1

2 a

(3)jj

;

(6)

dunque, il numero totale di triangoli in G `e C

3

(G) = 1

6 T rA

3

Consideriamo il caso k = 4; la (15) diventa

C

j4

= X

i,r

(1 − δ

ir

) a

ij

a

rj

p

2ir

(G

j

); (16)

ora, applicando la (4) al grafo G

j

e tenendo conto di (6), si ottiene p

2ir

(G

j

) = (1 − δ

ir

) (1 − δ

ij

) (1 − δ

rj

) n

a

(2)ir

− a

ij

a

rj

o

che sostituita in (16) ci d`a C

j4

= 1

2 X

i,r

(1 − δ

ir

) (1 − δ

ij

) (1 − δ

rj

) a

ij

a

rj

n

a

(2)ir

− a

ij

a

rj

o

; (17)

ora, il prodotto dei primi tre fattori `e della forma (1 − δ

ir

+ termini contenenti δ

ij

o δ

rj

), e questi ultimi termini non contano perch`e vanno moltiplicati per a

ij

a

rj

, che si

annulla quando i = j oppure r = j; dunque la (17) si riduce a C

j4

= 1

2 X

i,r

(1 − δ

ir

) a

ij

a

rj

n

a

(2)ir

− a

ij

a

rj

o

= 1 2

(

a

(4)jj

− d

2j

X

i

a

ij

d

i

+ d

j

)

;

ma allora la (14) diventa

C

4

(G) = 1 4

X

j

C

j4

= 1 8

 

T rA

4

− 2 X

j

d

2j

+ 2 X

j

d

j

 

= 1 8 T r

n

A

4

− 2 b d

2

+ b d o

,

essendo b d = kd

i

δ

ij

k l”operatore diagonale associato alla funzione grado d.

Consideriamo ora il caso k = 5, i calcoli sono analoghi ai precedenti, solo un

(7)

po’ pi` u lunghi... Il numero di 5-cicli passanti per il vertice v

j

`e C

j5

= 1

2 X

i,r

(1 − δ

ir

) a

ij

a

rj

p

3ir

(G

j

)

= 1 2

X

i,r

(1 − δ

ir

) (1 − δ

ij

) (1 − δ

rj

) a

ij

a

rj

n

a

(3)ir

− a

(2)ij

a

rj

− a

ij

a

(2)rj

− a

ir

(d

i

+ d

r

− a

ij

− a

rj

− 1) o

= 1 2

X

i,r

(1 − δ

ir

− δ

ij

− δ

rj

+ · · · − δ

ir

δ

ij

δ

rj

) a

ij

a

rj

n

a

(3)ir

− a

(2)ij

a

rj

− a

ij

a

(2)rj

− a

ir

(d

i

+ d

r

− a

ij

− a

rj

− 1) o

= 1 2

X

i,r

(1 − δ

ir

) a

ij

a

rj

n

a

(3)ir

− a

(2)ij

a

rj

− a

ij

a

(2)rj

− a

ir

(d

i

+ d

r

− a

ij

− a

rj

− 1) o

;

nell’ultimo passaggio si `e sfruttato il fatto che, quando i = j oppure r = j, il fattore a

ij

a

rj

si annulla; quindi, nello sviluppo della sommatoria a penultimo membro, si annullano tutte le ”sottosommatorie” contenenti i fattori δ

ij

o δ

rj

; sviluppando l’ultimo membro si ottiene

C

j5

= 1 2

(

a

(5)jj

− 2a

(3)jj

d

j

− 2 X

i

d

i

a

ij

a

(2)ij

+ 5a

(3)jj

X

i

a

(3)ii

a

ij

)

;

applicando la (14) per k = 5 otteniamo il numero totale di 5-cicli in G:

C

5

(G) = 1 10

T rA

5

+ 5T rA

3

− 5 X

j

d

j

a

(3)jj

= 1 10 T r ³

A

5

+ 5A

3

− 5 b dA ´

Riferimenti

Documenti correlati

scegliere il vertice di G da prendere in esame di volta in volta, utilizzando il costo del cammino minimo di ciascun vertice come valore su cui costruire la priorità degli

● L'algoritmo di Bellman e Ford determina i cammini di costo minimo anche in presenza di archi con peso negativo. – Però non devono esistere cicli di

Se si vuole modificare il problema restringendo l’insieme di cammini a cammini disgiunti anche nei nodi, bisogna modificare il grafo in un grafo orientato in cui ogni arco

Anche attraverso la GIORNATA NAZIONALE DEI CAMMINI che da sette anni viene organizzata annualmente nella prima domenica di maggio (domenica 3 maggio 2015 si

Mostrare come il problema di determinare un piano di rinnovo del macchinario di costo totale netto minimo (acquisti + manutenzione + ricavato per il periodo di 5 anni) pu`o

[r]

Per n=1 la tesi del Teorema è vera perché (per costruzione della matrice di adiacenza) il numero degli archi (e quindi dei cammini di lunghezza 1) con estremi i vertici v,w

Per n=1 la tesi del Teorema è vera perché (per costruzione della matrice di adiacenza) il numero degli archi (e quindi dei cammini di lunghezza 1) con estremi i vertici v,w