• Non ci sono risultati.

A tale scopo introduciamo il concetto di matrice di adiacenza di un grafo.

N/A
N/A
Protected

Academic year: 2021

Condividi "A tale scopo introduciamo il concetto di matrice di adiacenza di un grafo."

Copied!
1
0
0

Testo completo

(1)

Matematica Discreta

Lezione del giorno 9 marzo 2009

Problema: costruire un algoritmo che, fissati due vertici v, w in un grafo (orientato o non orientato) permetta di calcolare il numero di cammini da v a w.

A tale scopo introduciamo il concetto di matrice di adiacenza di un grafo.

Sia dato un grafo (orientato o non orientato) con n vertici. Ordiniamo in modo arbitrario i vertici:

x

1

, x

2

, x

3

,……., x

k

Costruiamo poi una matrice quadrata kxk (quindi con k righe, k colonne) in cui facciamo corrispondere ordinatamente le righe e le colonne ai vertici del grafo (la prima riga e la prima colonna al vertice x

1

, la seconda riga e la seconda colonna al vertice x

2

, e così via)

In ogni casella della matrice, all’incrocio fra la riga i e la colonna j, poniamo il valore numerico che indica il numero di archi che vanno dal vertice x

i

(associato alla riga i) al vertice x

j

(associato alla colonna j).

La matrice ottenuta è detta appunto matrice di adiacenza del grafo.

Essa naturalmente dipende dalla scelta dell’ordine in cui sono elencati i vertici.

La matrice di adiacenza é anche uno dei modi più efficienti per memorizzare un grafo in un computer: essa descrive pienamente la struttura del grafo.

Esempi.

Dato il seguente grafo non orientato con 4 vertici {x

1

, x

2

, x

3

, x

4

} e 7 archi:

x

1

x

2

x

3

x

4

la sua matrice di adiacenza 4x4 (rispetto all’ordine x

1

, x

2

, x

3

, x

4

dei vertici) è la seguente:









0 0 1 1

0 0 2 2

1 2 0 1

1 2 1 0

Notiamo che la diagonale è tutta formata da valori 0: i valori nella diagonale corrispondono agli archi che uniscono un vertice con sé stesso, e in un grafo non orientato non sono permessi cappi.

Si può osservare che in un grafo orientato ogni arco (non avendo un verso) collega reciprocamente i

due vertici estremi, quindi nelle matrice di adiacenza il valore numerico nella casella di riga i e

colonna j coincide con quello nella casella di riga j e colonna i (ossia la matrice di adiacenza di un

grafo orientato è simmetrica rispetto alla diagonale “principale” che va da alto-sinistra a basso-

destra). Nell’esempio precedente si nota appunto tale simmetria rispetto alla diagonale principale:

(2)









0 0 1 1

0 0 2 2

1 2 0 1

1 2 1 0

Dato invece, per esempio, il grafo orientato con 4 vertici x

1

, x

2

, x

3

, x

4

e 7 archi:

x

1

x

2

x

3

x

4

la sua matrice di adiacenza 4x4 (rispetto all’ordine x

1

, x

2

, x

3

, x

4

dei vertici) è la seguente:









1 0 1 0

0 1 0 0

0 2 0 1

1 0 0 0

(possiamo notare che essa non è simmetrica rispetto alla diagonale principale).

Ovviamente la matrice di adiacenza fornisce informazioni solo sull’esistenza di archi fra vertici, e non in modo diretto sull’esistenza di cammini: illustreremo ora un algoritmo che risolve tale problema.

Prodotto righe per colonne di matrici

Siano date 2 matrici M,N aventi come elementi nelle caselle dei valori numerici, e supponiamo che M sia un matrice nxm, ed N una matrice mxt (notare che il numero di colonne di M coincide con il numero di righe di N).

Siano a

ij

il generico elemento di M (all’incrocio fra riga i e colonna j) e b

ij

l’analogo elemento di N.

Definiremo ora una nuova matrice nxt, detta prodotto righe per colonne di M per N (e indicata con MxN). Per costruire il generico elemento c

ij

(in riga i e colonna j) della matrice prodotto MxN procediamo in questo modo: fissiamo la generica riga i della matrice M

a

i1

, a

i2

, …………., a

im

e la generica colonna j della matrice N b

1j

, b

2j

, …………, b

mj

e consideriamo il numero ottenuto moltiplicando ordinatamente gli elementi della riga di M per quelli della colonna di N e sommando i risultati: tale numero (detto prodotto della riga i di M per la colonna j di N) sarà il generico elemento c

ij

della matrice MxN all’incrocio fra riga i e colonna j.

Dunque:

cij = a

i1

b

1j

+ a

i2

b

2j

+ ……. +a

im

b

mj

Esempio: siano date le seguenti matrici rispettivamente 2x3 e 3x4:

M=



 

 1 1 2

2 0

1

N=





3 0 2 1

3 1 1 4

0 1 1 2

(3)

Il prodotto righe per colonne MxN sarà una matrice 2x4:

MxN=



 

?

?

?

?

?

?

?

?

Per calcolare per esempio l’elemento c

12

all’incrocio della riga 1 e della colonna 2 di MxN, si considera il “prodotto” della riga 1 di M per la colonna 2 di M, ottenuto dalla somma dei prodotti degli elementi della riga 1 di M per quelli della colonna 2 di N, ottenendo:

c

12

=1•1+0•(-1)+(-2)•2= -3.

Analogamente si calcolano gli altri 7 elementi della matrice prodotto MxN.

Potenza di una matrice quadrata

Se M è una matrice numerica quadrata nxn (quindi con eguale numero di righe e di colonne), possiamo calcolare il prodotto righe per colonne MxM ottenendo ancora una matrice quadrata nxn, indicata con M

2

e detta potenza di base M ed esponente 2. Analogamente possiamo calcolare il prodotto righe per colonne M

2

xM ottenendo una matrice nxn, indicata con M

3

e detta potenza di base M ed esponente 3. Iterando il procedimento, per ogni naturale n>2 possiamo calcolare il prodotto righe per colonne M

n-1

xM ottenendo ancora una matrice nxn, indicata con M

n

e detta potenza di base M ed esponente n. Convenzionalmente porremo M

1

=M.

Dimostreremo che, se M è la matrice di adiacenza di un grafo, la matrice potenza M

n

di base M ed

esponente n (calcolata con il prodotto righe per colonne) contiene le informazioni sui cammini di

lunghezza n fra 2 qualunque vertici del grafo.

Riferimenti

Documenti correlati

Date le seguenti matrici A e B, dire se sia possibile calcolare il prodotti AB e BA.. In caso sia

Se le righe (colonne) di una matrice quadrata A formano un insieme di vettori linearmente dipendenti, allora A ` e singolare... Proof.. Il rango di una matrice non cambia se essa

Si dimostri la regola di Cramer del III

Si verifica che questa e’ davvero una

Si e’ mostrato come il determinante sorga in modo naturale dallo studio della singolarita’ di una matrice, venendo a stabilire che una matrice A e’ non singolare se e solo se il

[r]

Una matrice quadrata in cui tutti gli elementi con indici diversi sono nulli si dice

In seguito useremo la seguente convenzione: quando un vettore v viene consid- erato come vettore colonna, verra’ indicato con lo stesso simbolo v, quando un vettore v viene