Lista zadań nr 1.

Transkrypt

Lista zadań nr 1.
Inżynieria Danych 2016
Algorytmy grafowe
Przypomnienie podstawowych pojęć z teorii grafów
Lista 1
Dla podanych poniżej grafów G1 –G5 , rozwiązać zadania 1–4.
G1 = ({v1 , v2 , . . . , v6 }, {{v1 , v2 }, {v1 , v3 }, {v1 , v4 }, {v1 , v6 }, {v2 , v3 }, {v3 , v4 }, {v3 , v5 }, {v4 , v5 }, {v4 , v6 }})
G2 = ({v1 , v2 , . . . , v10 }, {{v1 , v2 }, {v1 , v5 }, {v1 , v6 }, {v2 , v3 }, {v2 , v7 }, {v3 , v4 }, {v3 , v8 }, {v4 , v5 }, {v4 , v9 },
{v5 , v10 }, {v6 , v8 }, {v6 , v9 }, {v7 , v9 }, {v7 , v10 }, {v8 , v10 }})
G3 = ({v1 , v2 , . . . , v8 }, {{v1 , v2 }, {v1 , v4 }, {v1 , v6 }, {v1 , v8 }, {v2 , v3 }, {v2 , v5 }, {v3 , v7 }})
G4 = ({v1 , v2 , . . . , v8 }, {{v1 , v2 }, {v1 , v4 }, {v1 , v6 }, {v2 , v3 }, {v2 , v7 }, {v3 , v4 }, {v3 , v8 }, {v4 , v5 }, {v5 , v6 },
{v5 , v8 }, {v6 , v7 }, {v7 , v8 }})
G5 = ({v1 , . . . , v6 }, {{v1 , v2 }, {v1 , v3 }, {v1 , v4 }, {v1 , v5 }, {v2 , v3 }, {v2 , v6 }, {v3 , v6 }, {v3 , v6 }, {v4 , v5 }, {v5 }})
1. Wskazać, które z powyższych grafów (graph) to grafy proste (simple graph). Podać liczby wierzchołków
(vertex/vertices) i krawędzi (edge), wskazać w każdym z tych grafów drogę (path) długości 4 (o ile
istnieje), łańcuch (chain) długości 8 (o ile istnieje), cykle (cycle/circle) długości 3, 4 (o ile istnieją).
2. Wyznaczyć w grafie G1 następujące podgrafy (subgraph) (o ile istnieją): podgraf rozpinający (spanning
subgraph) rozmiaru 4, podgraf rozpinający, będący grafem 2-regularnym, drzewo rozpinające (spanning tree), podgraf indukowany (induced subgraph) przez zbiór wierzchołków S, dla następujących
zbiorów S: {v1 , v2 , v3 }, {v1 , v3 , v4 , v6 }.
Wyznaczyć G1 − v1 , G3 − {v2 , v3 }, G1 − e, gdzie e = {v1 , v2 }.
3. Podać maksymalny i minimalny stopień wierzchołka (vertex degree) w grafie Gi . Określić, czy Gi to
graf regularny i wyznaczyć ciąg stopni wierzchołków grafu Gi (dla i = 1, . . . , 5).
4. Wskazać, który z grafów Gi (i = 1, . . . , 5) jest spójny (connected), dwudzielny (bipartite), jest drzewem
(tree).
5. Dla tych grafów Gi (i = 1, . . . , 5), które są proste, wyznaczyć dopełnienie (complement) Gi .
Reprezentacje grafów
6. Dane są macierze sąsiedztw (adjacency matrix) grafów Gi = (V, E), V = {v1 , . . . , v|V (Gi )| } (i = a, b, c):







(a) A(Ga ) = 















(c) A(Gc ) = 








0
1
2
1
0
0
1
1
1
0
1
0
0
1
1
0
2
1
0
1
1
1
0
1
1
0
1
0
1
1
0
2
0
0
1
1
1
1
1
3
0
1
1
1
1
0
1
0
1
1
0
0
1
1
0
1
1
0
1
2
3
0
1
0

0
1
1
0
0
1
0
1
0
1
1
0
0
0
1
0
1
0
0
0
1
0
0
1
0
1
0
0
0
0
0
0
1
0
1
0
0
0
0
1
0
1
0
1
0
1
0
0
1
0
1
0
1
0
1
0
1
0
0
0
0
1
0
0
0
1
0
1
0
0
1
0
0
0
0
0
1
0
1
0
0
0
0
0
1
0
0
1
0
1


0 1 1




 1 0 1

 1 1 0

 (b) A(Gb ) = 


 1 1 1



 1 1 0



1 0 0
1
0
0
1
0
0
0
0
1
0
1
1
1
0
1
1
1
1
0
1
0
1
1
0
0
1
1
0


















.








Dla grafów Ga , Gb i Gc , podać liczbę wierzchołków i krawędzi grafu, znaleźć macierz incydencji grafu (incidence matrix) oraz listy sąsiedztw (adjacency lists), podać maksymalny i minimalny stopień
wierzchołka, wyznaczyć ciąg stopni wierzchołków.
1





7. Dana jest macierz incydencji grafu G = (V, E), V = {v1 , . . . , v6 }: M(G) = 



0
1
1
0
0
0
1
0
1
0
0
0
1
1
0
0
0
0
0
0
1
0
1
0
0
0
0
1
0
1
0
0
0
1
1
0
0
0
0
0
1
1





.



Znaleźć macierz sąsiedztw A(G) grafu G, podać listy sąsiedztw tego grafu.
Podstawowe klasy grafów
8. Przedstawić graficznie grafy Kn , Kn , Pn , Cn , Pn , Cn (dla n = 1, . . . , 5), Ks,t (dla 1 ¬ s ¬ t ¬ 4).
Dla każdego z nich wyznaczyć liczbę wierzchołków, liczbę krawędzi, minimalny i maksymalny stopień
wierzchołka.
9. Przedstawić graficznie wszystkie nieizomorficzne (non-isomorphic) grafy proste o liczbie wierzchołków
3, 4. Wskazać wśród nich grafy dwudzielne oraz drzewa.
Ciągi grafowe
Twierdzenie 1 (Havel (1955), Hakimi (1962)) Niech c = (s, d1 , . . . , dk ) będzie nierosnącym ciągiem liczb całkowitych (s ­ d1 ­ d2 ­ · · · ­ dk ). Wówczas c jest ciągiem grafowym wtedy i tylko wtedy
gdy ciąg
c0 = (d1 − 1, . . . , ds − 1, ds+1 , . . . , dk )
jest ciągiem grafowym.
Algorytm Havel-Hakimi (czy dany nierosnący ciąg liczb całkowitych jest grafowy?)
INPUT: nierosnący ciąg liczb całkowitych c = (d1 , . . . , dn );
OUTPUT: odpowiedź na pytanie: Czy c jest grafowy?
(1) Jeżeli d1 = · · · = dn = 0, to ciąg jest grafowy.
(2) Jeżeli d1 < 0, to ciąg nie jest grafowy.
(3) Uporządkuj ciąg nierosnąco.
(4) Usuń z ciągu pierwszą (największą) liczbę, czyli d1 i odejmij 1 od kolejnych d1 liczb ciągu.
(5) Wróć do punktu (1).
10. Sprawdzić, które z poniższych ciagów są ciagami grafowymi (zastosować algorytm Havla-Hakimiego).
Dla ciągów, które są grafowe, skonstruować grafy je realizujące. (Mówimy, że graf prosty G realizuje
ciąg c, jeżeli c jest ciągiem stopni grafu G.)
• (5, 4, 4, 3, 3, 3, 2, 1),
• (5, 5, 4, 3, 2, 2, 2, 1),
• (5, 5, 4, 4, 2, 2, 1, 1),
• (5, 5, 5, 4, 2, 1, 1, 1).
Własności grafów i drzew
11. Uzasadnić, czy prawdziwe jest stwierdzenie: Jeżeli u, v są jedynymi wierzchołkami stopnia nieparzystego w grafie G, to w G istnieje u − v-droga.
12. Pokazać, że jeżeli w grafie T każde dwa wierzchołki są połączone dokładnie jedną drogą to (1) T nie
zawiera cyklu; (2) T jest drzewem.
13. Uzasadnij, czy prawdziwe jest stwierdzenie: Każde drzewo ma co najmniej dwa liście (leaf) (Liść to
wierzchołek stopnia 1 (inaczej, wierzchołek wiszący).)
14. Wykazać, że las T mający k składowych spójności (component) posiada |V (T )| − k krawędzi.
2
Grafy skierowane (digrafy) (directed graphs/digraphs)
D1 = ({v1 , v2 , . . . , v6 }, {(v1 , v6 ), (v2 , v1 ), (v2 , v3 ), (v2 , v6 ), (v3 , v4 ), (v5 , v4 ), (v6 , v4 ), (v6 , v5 )}).
D2 = ({v1 , v2 , . . . , v7 }, {(v1 , v2 ), (v1 , v3 ), (v2 , v3 ), (v3 , v1 ), (v3 , v4 ), (v4 , v1 ), (v3 , v5 ), (v5 , v6 ), (v6 , v7 ), (v7 , v5 )}).
15. Dla podanych digrafów D1 i D2 wskazać: cykl (skierowany) długości 3, 4, drogę (skierowaną) długości 4,
ciagi stopni wejścia (in-degree) wierzchołków (indeg(v)) oraz stopni wyjścia (out-degree) (outdeg(v)).
Wskaż, o ile istnieją, wierzchołki o stopniu wejścia 0 (źródło source), o stopniu wyjścia 0 (ujście sink).
Wyznacz macierze sąsiedztw oraz listy sąsiedztw tych digrafów.
16. Które z digrafów D1 i D2 są spójne (connected), silnie spójne (strongly connected)?
17. Dla digrafu D1 , wyznacz digraf przeciwny (reverse).
18. Wskaż dwa digrafy nieizomorficzne, których grafy szkieletowe są izomorficzne.
19. Dla digrafów D1 i D2 odpowiedz na pytanie, czy dany digraf jest acykliczny (acyclic) (dag directed
acyclic graph) i wyznacz porządek topologiczny (topological ordering), o ile istnieje. Zastosuj Algorytm
2.4.
3

Podobne dokumenty