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