Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014
Informacje podstawowe 1. Konsultacje: pokój 144. 2. Ćwiczenia tablicowe: dwa kolokwia w ciągu semestru, kolokwium zbiorcze na ostatnich zajęciach. 3. Wykład: test na przedostatnich zajęciach, wpisy i kolokwium poprawkowe na zajęciach ostatnich.
Zakres materiału 1. Wprowadzenie do teorii grafów 2. Języki formalne 3. Automaty skończone 4. Elementy teorii obliczeń 5. Elementy kombinatoryki
Wprowadzenie do teorii grafów 1. Mapy drogowe 2. Sieci komputerowe 3. Dokumenty hipertekstowe 4. Obwody elektryczne, hydrauliczne itp. 5. Struktura programu
Grafy prosty, ogólny i digraf Grafy Graf prosty to niepusty zbiór skończony wierzchołków V (G) i skończony zbiór krawędzi E(G) łączących pary tych wierzchołków. Określoną parę wierzchołków łączy co najwyżej jedna krawędź. Graf, w którym dopuszczalne jest występowanie więcej niż jednej krawędzi łączącej dwa wierzchołki a także krawędzie łączące wierzchołek ze samym sobą (pętle) to graf ogólny. Graf skierowany (digraf) to niepusty, skończony zbiór wierzchołków (V (D)) i skończona rodzina A(D) par uporządkowanych elementów ze zbioru V (D) (pary te są często nazywane łukami).
Grafy prosty
Grafy ogólny
Graf skierowany - digraf
Dalsze definicje Stopień wierzchołka to liczba krawędzi wychodzących z danego wierzchołka. Trasa (ścieżka) jest to linia, po której można przejść z jednego wierzchołka do innego. Droga (ścieżka prosta) to taka trasa na której żaden wierzchołek nie występuje więcej niż raz. Cykl to taka droga, w której pierwszy i ostatni wierzchołek są takie same.
Przykłady grafów Graf pusty - graf, w którym zbiór krawędzi jest zbiorem pustym, każdy wierzchołek jest w nim izolowany. Oznaczany jest symbolem N n, gdzie n jest liczbą wierzchołków.
Przykłady grafów Graf pełny - graf, w którym każda para wierzchołków jest połączona krawędzią. Oznaczany jest symbolem K n, gdzie n jest liczbą wierzchołków.
Przykłady grafów Grafe cykliczny - to graf spójny, regularny stopnia 2 (oznaczany C n, gdzie n jest liczbą wierzchołków). Jeżeli zostanie usunięta jedna krawędź z grafu cyklicznego to powstanie graf liniowy (oznaczany P n, gdzie n jest liczbą wierzchołków). Jeżeli zostanie utwrzony graf z grafu C n 1 poprzez wstawienie jednego wierzchołka i połączenie go z wszystkimi pozostałymi to powstanie graf nazywany kołem (oznaczany W n, gdzie n jest liczbą wierzchołków).
Przykłady grafów Graf regularny - graf, w którym każdy wierzchołek ma ten sam stopień. Grafem regularnym stopnia r (grafem r-regularnym) nazywany jest graf, w którym każdy wierzchołek ma stopień r.
Przykłady grafów Graf dwudzielny - graf, w którym zbiór wierzchołków można podzielić na dwa rozłączne zbiory, tak aby każda krawędź łączyła parę wierzchołków wziętych z jednego i drugiego zbioru. Oznaczany jest K m,n, gdzie m to liczba wierzchołków czarnych a n białych (na rysunku jest graf K 2,3 ).
Izomorfizm Izomorficzność grafów Grafy są izomorficzne jeżeli istnieje wzajemnie jednoznaczna odpowiedniość pomiędzy ich wierzchołkami taka, że liczba krawędzi łączących dane dwa wierzchołki z jednego grafu jest równa liczbie krawędzi łączących odpowiadające im wierzchołki z drugiego grafu.
Izomorfizm
Spójność Istnieje możliwość połączenia dwóch grafów, jeżeli oznaczy się pierwszy graf jako G 1 natomiast drugi jako G 2 i założy się, że zbiory ich wierzchołków są rozłączne to można wówczas przedstawić graf, którego wierzchołki i krawędzie będą wierzchołkami i krawędziami z obu grafów. Graf jest spójny, gdy nie można go przedstawić w postaci sumy grafów (w przeciwnym razie jest niespójny).
Sąsiedztwo Dwa wierzchołki grafu G - x i y są sąsiednie, jeżeli istnieje krawędź xy, która je łączy (x i y są incydentne z tą krawędzią). Dwie krawędzie są sąsiednie jeśli mają wspólny wierzchołek.
Podgrafy Podgraf Podgraf grafu G to graf, którego wszystkie wierzchołki należą do V (G), a krawędzie należą do E(G).
Reprezentacja macierzowa Reprezentacja w postaci rysunku nie jest zawsze wygodna, szczególnie, gdy istnieje potrzeba przechowywania dużych grafów. Graf można przestawić w postaci macierzy sąsiedztwa o wymiarze n n (n jest liczbą wierzchołków), każda komórka z wiersza i-tego i j-tej kolumny tej tablicy pokazuje ile jest krawędzi łączących i z j. Można również przedstawienie macierzy incydencji. Komórka z wiersz i-tego i j-tej kolumny w tej macierzy pokazuje czy wierzchołek i jest incydentny z krawędzią j (zazwyczaj wpisuje się 1 jeśli jest albo 0 jeśli nie jest).
Reprezentacja macierzowa 1 1 2 6 5 7 2 4 M = 4 A = 3 0 1 0 1 1 0 1 2 0 1 0 1 1 2 1 1 3 1 0 0 0 1 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1 1
Reprezentacja grafów w postaci komputerowej 1. Przykład prezentuje graf zapisany za pomocą języka C++. 2. Zaimplementowano klasę Graph. 3. Graf jest przechowywany w pamięci komputera jako wektor wektorów liczb całkowitych dodatnich. 4. W celu oszczędzenia pamięci przechowywana jest w pamięci górna macierz trójkątna (dlaczego jest to możliwe?).
Literatura Do napisania materiałów wykorzystano: 1. R.J. Wilson Wprowadzenie do teorii grafów, PWN 2008 2. R. Sedgewick Algorytmy w C++ - grafy, Wydawnictwo RM 2003