Matematyczne Podstawy Informatyki

Transkrypt

Matematyczne Podstawy Informatyki
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
I
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ź.
I
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.
I
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
I
Stopień wierzchołka to liczba krawędzi wychodzących z
danego wierzchołka.
I
Trasa (ścieżka) jest to linia, po której można przejść z jednego
wierzchołka do innego.
I
Droga (ścieżka prosta) to taka trasa na której żaden
wierzchołek nie występuje więcej niż raz.
I
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
Nn , 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 Kn , gdzie n jest
liczbą wierzchołków.
Przykłady grafów
I
Grafe cykliczny - to graf spójny, regularny stopnia 2
(oznaczany Cn , gdzie n jest liczbą wierzchołków).
I
Jeżeli zostanie usunięta jedna krawędź z grafu cyklicznego to
powstanie graf liniowy (oznaczany Pn , gdzie n jest liczbą
wierzchołków).
I
Jeżeli zostanie utwrzony graf z grafu Cn−1 poprzez wstawienie
jednego wierzchołka i połączenie go z wszystkimi pozostałymi
to powstanie graf nazywany kołem (oznaczany Wn , 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
I
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.
I
Oznaczany jest Km,n , gdzie m to liczba wierzchołków czarnych
a n białych (na rysunku jest graf K2,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ść
I
Istnieje możliwość połączenia dwóch grafów, jeżeli oznaczy się
pierwszy graf jako G1 natomiast drugi jako G2 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.
I
Graf jest spójny, gdy nie można go przedstawić w postaci
sumy grafów (w przeciwnym razie jest niespójny).
Sąsiedztwo
I
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ą).
I
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
I
Reprezentacja w postaci rysunku nie jest zawsze wygodna,
szczególnie, gdy istnieje potrzeba przechowywania dużych
grafów.
I
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.
I
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
2
1
6
5
2
7
4
4




A=




M=
1
1
0
0
3
3
0
1
1
0
0
1
0
1
1
0
1
2
0
0
1
1
0
1
0
1
0
0
0
1
1
2
1
1
1
0
0
1





0
1
0
1
0
1
0
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