20
Grafi PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

Grafi

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 2: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

2

Bibliografia

T.H. Cormen, C.E. Leiserson, R.L. RivestIntroduction to Algorithms, McGrawHill

Capitoli: 5 – solo paragrafo 5.4

23 – tranne paragrafi 23.4 e 23.5 24 – tutto25 – tranne 25.3, 25.4 e 25.527 – tranne 27.4 e 27.5

8Esiste anche la versione italiana edita daJackson Libri

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 3: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

3

Grafi 8I grafi sono una particolare struttura dati

usata spesso in informatica

8Algoritmi che lavorano su grafi sono spesso fondamentali in molti campi dell’informatica (si pensi alla gestione di reti di computer)4Relazioni tra classi nei linguaggi OO4Reti di trasporto4Grafo del Web

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 4: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

4

Grafi

8Per studiare ed analizzare tale struttura dati cominceremo a considerare4Rappresentazione dei grafi

4Algoritmi che “navigano” il grafo nel senso che cercano di ottenere informazioni strutturali sul grafo

•Simili alle visite preorder/inorder/postorder in un albero

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 5: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

5

Grafi

8Un grafo G=(V,E) è una coppia di insiemiV= insieme dei verticiE= insieme dei collegamenti tra i vertici

45

1 2

3

E={(1,2),(2,3),(2,4),(3,4),(4,5),(5,1)

(2,1),(3,2),(4,2),(4,3),(5,4),(1,5)}

grafo non direzionatoEs:

V={1,2,3,4,5}

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 6: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

6

Grafi

V={1,2,3,4,5,6}

E={(1,2),(1,4),(2,5),(3,6),(4,2),(5,3),(5,4),(6,6)}

grafo direzionatoEs:

54

1 2 3

6

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 7: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

7

Ulteriori definizioni – 1

8Pseudografo: 4L’insieme degli archi E contiene anche

coppie (vi, vi) dette cappi

8Percorso in un grafo: 4Insieme di k vertici v1, v2,… .., vk tali che

(vi, vi+1) ∈E e v1 ≠ v2 ≠ v3 … ≠ vk

8Circuito in un grafo: 4Insieme di k vertici v1, v2,… .., vk tali che

(vi, vi+1) ∈E e v1= vk

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 8: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

8

Ulteriori definizioni – 2

8Ciclo in un grafo: 4Insieme di k vertici v1, v2,… .., vk tali che

(vi, vi+1) ∈E e v1 ≠ v2 ≠ v3 … ≠ vk-1 e v1=vk

8G’=(V’,E’) sottografo di G=(V,E) se e solo se4V’ ⊆ V ed E’ ⊆ E.

8grado(v): #di archi incidenti in v8Se (vi, vj) ∈ E, allora

4 vi adiacente a vj

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 9: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

9

Ulteriori definizioni – 3

8Un grafo completo, indicato con Kn è un grafo in cui sono presenti tutti gli archi.4Numero di archi in Kn : n(n-1)/2

8Grafo pesato: 4Grafo in cui ad ogni arco e è associato un

valore reale w

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 10: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

10

Ulteriori esempi

Esempi di grafi: (a-d) grafi; (c) un grafo completo K4; (e) un multigrafo; (f) uno pseudografo; (g) un circuito in un grafo orientato; (h) un ciclo in un grafo orientato

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 11: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

11

Rappresentazione dei grafi

8Un grafo può essere rappresentato in due modi 4Liste di adiacenza

•È il metodo preferito quando il grafo è sparso (pochi archi) e cioè quando |E|<<|V|2

4Matrici di adiacenza•È il metodo preferito quando il grafo è denso

(molti archi)e cioè |E|≈|V|2

•O quando è necessario sapere velocemente se un arco è presente o meno nel grafo

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 12: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

12

Liste di adiacenza

8Consiste di un array Adj con |V| elementi, uno per ogni vertice, tale che4Se u ∈ V è Adj[u] contiene il puntatore

alla lista dei nodi v ∈V tali che (u,v)∈E

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 13: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

13

Liste di adiacenza

45

1 2

3

2 5

1 3 4

2 4

1 4

2 3 5

1

2

3

4

5

8Nel grafo non direzionato4La somma della lunghezza della lista è 2|E|

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 14: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

14

Liste di adiacenza

2

5

6

43

6

2

41

2

3

4

5

654

1 2 3

6

8Nel grafo direzionato4La somma della lunghezza della lista è |E|

8Lo spazio richiesto dalla lista di adiacenza (direzionanto o non) è O(max{V,E})=O(V+E)

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 15: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

15

Liste di adiacenza

8La rappresentazione mediante liste di adiacenza può essere facilmente adattata a rappresentare grafi pesati, cioè grafi tali che a ciascun arco è associato un peso:4w : E à R w(u,v)=peso associato all’arco (u,v)

8Al record associato ad un vertice v della lista del vertice u si può aggiungere un ulteriore campo “peso” che contiene proprio w(u,v)

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 16: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

16

Ulteriore esempio

Rappresentazioni di grafi. Un grafo (a) rappresentato con una lista di adiacenza b) e c).

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 17: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

17

Matrici di adiacenza

8Consiste in una matrice A di dimensioni |V| x |V| tale che 4A[u,v] = 1 se (u,v) ∈ E,

0 altrimenti

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 18: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

18

Matrice di adiacenza

45

1 2

3

1

2

3

4

5

54321

0 1

1

0

0

0

1

0 0 1

1 1 0

0 1 0

1 1

1 0

0 1

0 1 0

1

2

3

4

4321

0 1

0

0

0

0

0

0 1

0 0

0 0

1 0 0

5 0 0 1 1

6 0 0 0 0

5

0

1

0

0

0

0

6

0

0

1

0

0

1

54

1 2 3

6

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 19: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

19

Matrice di adiacenza

8Lo spazio richiesto è O(|V|2) indipendentemente dal numero di archi

8In un grafo non-direzionato (u,v)=(v,u) allora4 A è simmetrica rispetto alla diagonale principale,

A=AT

8Anche nel caso di matrice di adiacenza può essere rappresentato un grafo pesato; basta porre 4A[u,v]=w(u,v) se (u,v) ∈E

nil altrimenti

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

Page 20: Grafi - UNISAcaprera.dia.unisa.it/LASD/SLIDE/0304/F01Grafi.pdf · 2003-09-30 · 8I grafi sono una particolare struttura dati usata spesso in informatica ... •Simili alle visite

LASD 2 003-04

20

Può essere implementato

in O(1)

Vantaggi e Svantaggi

8Lista di adiacenza: memoria O(|E|)Vantaggi: permette di scorrere i nodi adiacenti a v in O(grado(v))Svantaggi: inserimenti e cancellazioni su liste concatenate in O(grado(v))

8Matrice di adiacenza: memoria O(|V|2)Vantaggi: Inserimenti e cancellazioni in O(1)Svantaggi: permette di scorrere i nodi adiacenti a v in O(|V|)

PDF created with FinePrint pdfFactory trial version http://www.fineprint.com