Algorytmy i struktury danych

Wielkość: px
Rozpocząć pokaz od strony:

Download "Algorytmy i struktury danych"

Transkrypt

1 Algorytmy i struktury danych Wykład 10 - Grafy i podstawowe algorytmy grafowe Janusz Szwabiński Plan wykładu: Zagadnienie mostów królewieckich Podstawowe pojęcia Zastosowania grafów Graf jako abstrakcyjny typ danych Reprezentacje grafu macierz sąsiedztwa lista sąsiedztwa lista krawędzi macierz incydencji Implementacja grafu jako typu danych Wyszukiwanie wszerz Studium przypadku - drabina słowna Algorytm wyszukiwania Źródła: większość ilustracji i przykładów pochodzi z "Problem Solving with Algorithms and Data Structures using Python",

2 Zagadnienie mostów królewieckich zagadnienie, nad którym rzekomo głowili się mieszkańcy Królewca rozwiązane przez Leonharda Eulera (w Solutio problematis ad geometriam situs pertinentis w Commentarii academiae scientiarum Petropolitanae, 1741) pierwsza praca z teorii grafów czy można przejść kolejno przez wszystkie mosty tak, żeby każdy przekroczyć tylko raz? odpowiedź brzmi: nie decyduje o tym nieparzysta liczba wylotów mostów zarówno na każdą z wysp, jak i na oba brzegi rzeki graf eulerowski - graf spójny, który można opisać linią ciągłą w taki sposób, aby każda krawędź tego grafu była obwiedziona tylko raz (tzw. cykl Eulera) możliwe tylko wtedy, gdy liczba wierzchołków tego grafu, w których spotyka się nieparzysta liczba krawędzi, wynosi 0 lub 2 aby przejść wszystkie krawędzie grafu i wrócić do punktu wyjścia, nie może on zawierać żadnych węzłów, w których spotyka się nieparzysta liczba krawędzi Pojęcia podstawowe Węzeł (wierzchołek) podstawowy element składowy grafu w teorii grafów - punkt pewnej przestrzeni (zbioru) V, nad którą zbudowany jest graf reprezentuje pewien obiekt może posiadać nazwę (klucz) oraz dodatkowe dane Krawędź podstawowy element składowy grafu w teorii grafów - para wyróżnionych wierzchołków grafu, czyli takich, które są ze sobą połączone (sąsiednie) reprezentuje relacje między obiektami może być jedno- lub dwukierunkowa Graf (graf prosty lub nieskierowany) Graf nieskierowany G składa się z dwóch zbiorów V E, przy czym V jest niepustym zbiorem, którego elementy nazywane są wierzchołkami, a E jest rodziną dwuelementowych podzbiorów zbioru wierzchołków V, zwanych krawędziami, E {{u, v}: u, v V, u v} Graf skierowany Graf skierowany (digraf) składa się z dwóch zbiorów niepustego zbioru wierzchołków V oraz rodziny A par uporządkowanych elementów zbioru V, zwanych krawędziami lub łukami grafu skierowanego. Kolejność wierzchołków w parze wyznacza kierunek

3 krawędzi w przypadku pary v, u łuk biegnie z wierzchołka v do wierzchołka u. Waga wartości przypisane krawędziom mogą określać np.: koszt przejścia między wierzchołkami przepustowość połączenia częstotliwość kontaktów V = v0, v1, v2, v3, v4, v5 (v0, v1, 5), (v1, v2, 4), (v2, v3, 9), (v3, v4, 7), (v4, v0, 1), E = { } (v0, v5, 2), (v5, v4, 8), (v3, v5, 3), (v5, v2, 1) Ścieżka sekwencja wierzchołków połączonych krawędziami w 1, w 2,..., w n, (w i, w i + 1 ) E, 1 i n 1 nieważona długość ścieżki to po prostu liczba krawędzi ważona długość ścieżki to suma wag wszystkich krawędzi składających się na ścieżkę Droga ścieżka, w której wierzchołki są różne (z wyjątkiem ewentualnej równości wierzchołków pierwszego i ostatniego mamy wtedy do czynienia z tzw. cyklem) Cykl droga zamknięta, czyli taka, której koniec (ostatni wierzchołek) jest identyczny z początkiem (pierwszym wierzchołkiem) Graf planarny graf, którego wierzchołki można rozmieścić na płaszczyźnie w taki sposób, aby łączące je krawędzie nie przecinały się In [1]: import planarity edgelist = [('a', 'b'), ('a', 'c'), ('a', 'd'), ('a', 'e'), ('b', 'c'),('b', 'd'),('b', 'e'), ('c', 'd'), ('c', 'e'), ('d', 'e')] print(planarity.is_planar(edgelist)) False

4 In [2]: edgelist.remove(('a','b')) print(planarity.is_planar(edgelist)) True In [3]: print(planarity.ascii(edgelist)) Graf pełny graf prosty, w którym dla każdej pary węzłów istnieje krawędź je łącząca In [4]: %matplotlib inline import networkx as nx G = nx.complete_graph(10) nx.draw_circular(g) Stopień wierzchołka w grafie nieskierowanym liczba kończących się w nim krawędzi w grafie skierowanym: stopień wejściowy - liczba krawędzi kończących się w wierzchołku stopień wyjściowy - liczba krawędzi zaczynających się w wierzchołku stopień to suma stopnia wejściowego i wyjściowego Graf regularny każdy wierzchołek ma taki sam stopień

5 Zastosowania Informatyka reprezentacja struktury programów modelowanie systemów komputerowych modelowanie danych bazy danych kryptografia sieci komputerowe Technika płytki drukowane sieci komunikacyjne Fizyka i chemia modelowanie złożonych cząsteczek modelowanie sieci krystalicznych reprezentacja lokalnych oddziaływań między cząstkami reprezentacja mikrokanałów w ośrodkach porowatych Nauki społeczne grafy wpływu, popularności, współpracy, przyjaźni itp. dynamika opinii epidemie Biologia sieci pokarmowe sieci regulacji genowej sieci metaboliczne oddziaływania między róznymi rejonami mózgu komunikacja międzykomórkowa Kartografia mapy połączeń wyszukiwanie najkrótszych dróg Lingwistyka grafy składniowe grafy semantyczne TextGraphs, WordNet, Słowosieć, i wiele innych... Graf jako abstrakcyjny typ danych Graph() - tworzy nowy pusty graf addvertex(vert) - dodaje węzeł do grafu addedge(fromvert, tovert) - dodaje krawędź (skierowaną) do grafu addedge(fromvert, tovert, weight) - dodaje krawędź ważoną getvertex(vertkey) - znajduje wierzchołek o podanym kluczu getvertices() - lista wszystkich wierzchołków w grafie getedges() - lista wszystkich krawędzi w grafie in - sprawdza przynależność wierzchołka do grafu Reprezentacje grafu istnieje wiele możliwych sposobów reprezentacji grafu najbardziej znane to: macierz sąsiedztwa lista sąsiedztwa lista krawędzi macierz incydencji różnią się one między sobą zajętością pamięci oraz złożonością typowych operacji Macierz sąsiedztwa implementacja w postaci macierzy n n, gdzie n to liczba wierzchołków w grafie każdy wiersz i każda kolumna w macierzy odpowiada jakiemuś wierzchołkowi

6 jeżeli na przecięciu wiersza v z kolumną w zapisana jest jakaś wartość (różna od zera), oznacza to, że istnieje krawędź (v, w) w naturalny sposób uwzględnia wagi krawędzi dla małych grafów duża przejrzystość - od razu widać, które wierzchołki są ze sobą połączone w powyższym przykładzie większość komórek jest pusta: niezbyt wydajne zarządzanie pamięcią w przypadku grafów "rzadkich" rozsądne dla grafów zbliżonych do pełnych złożoność pamięciowa: O(n 2 ) złożoność typowych operacji: wstawianie krawędzi: O(1) usuwanie krawędzi: O(1) sprawdzanie krawędzi: O(1) Lista sąsiedztwa lista wszystkich wierzchołków każdy z wierzchołków zawiera listę swoich sąsiadów złożoność pamięciowa: O(n + m), gdzie m to liczba krawędzi typowe operacje: wstawianie krawędzi: O(1) usuwanie krawędzi: czas wyszukiwania na liście uporządkowanej sprawdzanie krawędzi: czas wyszukiwania na liście uporządkowanej Lista krawędzi lista wszystkich krawędzi występujących w grafie

7 złożoność pamięciowa: O(m) typowe operacje: wstawianie krawędzi: O(1) usuwanie krawędzi: O(m) sprawdzanie krawędzi: O(m) (w przypadku list nieuporządkowanych) Macierz incydencji macierz M o rozmiarze n m niektórzy autorzy używają odwrotnej konwencji znaków w przypadku grafów nieskierowanych oba wierzchołki oznaczamy jako początek krawędzi! macierz incydencji pozwala również reprezentować pętle (m ij = 2), ale komplikuje to przetwarzanie macierzy bez problemu pozwala reprezentować krawędzie wielokrotne złożoność pamięciowa: O(n + m) typowe operacje: sprawdzanie, czy wierzchołek należy do krawędzi: O(1) sprawdzanie krawędzi: O(m) wstawianie krawędzi: O(1) usuwanie krawędzi: O(m)

8 Implementacja grafu jako typu danych w Pythonie najlepszym kandydatem do zaimplementowania listy sąsiedztwa jest... słownik stworzymy dwie klasy: Vertex - reprezentacja wierzchołka w grafie Graph - lista wierzchołków In [5]: class Vertex: def init (self,key): self.id = key self.connectedto = {} #lista sąsiedztwa z wagami def addneighbor(self,nbr,weight=0): self.connectedto[nbr] = weight def str (self): return str(self.id) + ' connectedto: ' + str([x.id for x in self.connectedto]) def getconnections(self): return self.connectedto.keys() def getid(self): return self.id def getweight(self,nbr): return self.connectedto[nbr] In [6]: class Graph: def init (self): self.vertlist = {} self.numvertices = 0 def addvertex(self,key): self.numvertices = self.numvertices + 1 newvertex = Vertex(key) self.vertlist[key] = newvertex return newvertex def getvertex(self,n): if n in self.vertlist: return self.vertlist[n] else: return None def contains (self,n): return n in self.vertlist def addedge(self,f,t,cost=0): if f not in self.vertlist: nv = self.addvertex(f) if t not in self.vertlist: nv = self.addvertex(t) self.vertlist[f].addneighbor(self.vertlist[t], cost) def getvertices(self): return self.vertlist.keys() def iter (self): return iter(self.vertlist.values()) Przykładowa sesja: In [7]: g = Graph() for i in range(6): g.addvertex(i)

9 In [8]: g.vertlist Out[8]: {0: < main.vertex at 0x7f00c2ceb358>, 1: < main.vertex at 0x7f00c2ceb400>, 2: < main.vertex at 0x7f00c2ceb438>, 3: < main.vertex at 0x7f00c2ceb470>, 4: < main.vertex at 0x7f00c2ceb4a8>, 5: < main.vertex at 0x7f00c2ceb4e0>} In [9]: g.addedge(0,1,5) g.addedge(0,5,2) g.addedge(1,2,4) g.addedge(2,3,9) g.addedge(3,4,7) g.addedge(3,5,3) g.addedge(4,0,1) g.addedge(5,4,8) g.addedge(5,2,1) In [10]: for v in g: for w in v.getconnections(): print("( %s, %s )" % (v.getid(), w.getid())) ( 0, 1 ) ( 0, 5 ) ( 1, 2 ) ( 2, 3 ) ( 3, 4 ) ( 3, 5 ) ( 4, 0 ) ( 5, 4 ) ( 5, 2 ) Wyszukiwanie wszerz Studium przypadku - drabina słowna (ang. word ladder problem) zabawa słowna, wymyślona w 1878 roku przez Lewisa Carolla (autora "Alicji w krainie czarów") trzeba przekształcić podane słowo, np. FOOL w inne słowo, np. SAGE przekształceń dokonuje się krok po kroku w każdym kroku można zmienić tylko jedną literę dopuszczalne są jedynie zmiany w istniejące słowa, np. FOOL POOL POLL POLE PALE SALE SAGE istnieje wiele wariantów, np. transformacja: w określonej liczbie kroków w najmniejszej liczbie kroków przy użyciu określonych słów nasz cel - transformacja w najmniejszej liczbie kroków sposób postępowania: reprezentacja powiązań między słowami w formie grafu skorzystanie z algorytmu wyszukiwania wszerz (ang. breadth first search, BFS) do znalezienia najkrótszej ścieżki w grafie

10 Budowanie grafu krawędź między każdą parą słów, które różnią się tylko jedną literą dysponując takim grafem, każda ścieżka między FOOL a SAGE jest rozwiązaniem zagadki najkrótsza z nich rozwiązuje dodatkowo nasze zadanie załóżmy, że wszystkie słowa na liście są tej samej długości podejście pierwsze: możemy porównać każde słowo na liście ze wszystkimi pozostałymi i znaleźć w ten sposób te różniące się tylko jedną literą operacja klasy O(n 2 ) w porządku dla niewielkich zbiorów słów jeśli słów mamy np. 3130, trzeba wykonać prawie 10 milionów porównań mało wydajne podejście drugie załóżmy, że mamy wiele kubełków, których nazwy powstały ze słów, w których jedna litera została zastąpiona znakiem podkreślenia traktując ten znak jako dziką kartę, możemy sprawdzać, które ze słów pasuje do odpowiedniego kubełka wszystkie słowa w jednym kubełku są ze sobą połączone operacja klasy O(n)

11 In [11]: def buildgraph(wordfile): d = {} g = Graph() wfile = open(wordfile,'r') # create buckets of words that differ by one letter for line in wfile: word = line[:-1] for i in range(len(word)): bucket = word[:i] + '_' + word[i+1:] if bucket in d: d[bucket].append(word) else: d[bucket] = [word] # add vertices and edges for words in the same bucket for bucket in d.keys(): for word1 in d[bucket]: for word2 in d[bucket]: if word1!= word2: g.addedge(word1,word2) return g In [17]: g = buildgraph("data/wordfile") print("number of vertices: ", len(g.getvertices())) Number of vertices: 3034 In [18]: counter = 0 for v in g: for w in v.getconnections(): counter = counter + 1 print("number of edges: ", counter) Number of edges: W przypadku macierzy sąsiedztwa mielibyśmy In [19]: 3034**2 Out[19]: elementów. Zapełnienie komórek tej macierzy byłoby na poziomie In [20]: 100*29634/(3034**2) #w procentach Out[20]: Innymi słowy graf słów jest bardzo rzadki.

12 Algorytm wyszukiwania wszerz jeden z prostszych algorytmów przeszukiwania grafu stanowi prototyp dla innych algorytmów przeszukiwania pozwala znaleźć ścieżkę między dowolnymi wierzchołkami grafu spójnego postępowanie: trzy kolory wierzchołków: biały (nieodwiedzony), szary (odwiedzony, ale niesprawdzony), czarny (sprawdzony) początkowo kolorujemy wszystkie węzły na biało zacznij od zadanego wierzchołka s - zmień jego kolor na szary dla każdego wierzchołka w jego liście sąsiedztwa: zmień kolor na szary jeśli wierzchołek startowy nie będzie już miał białych sąsiadów, zmień jego kolor na czarny powtórz całą procedurę dla każdego szarego sąsiada algorytm znajduje wszystkie wierzchołki w odległości k od startowego, zanim zacznie odwiedzać wierzchołki w odległości k + 1 na potrzeby algorytmu skorzystamy z omawianej wcześniej kolejki (klasa Queue): In [21]: from asd import Queue ponadto zmodyfikujemy klasę Vertex:

13 In [28]: import sys class Vertex: def init (self,num): self.id = num self.connectedto = {} self.color = 'white' self.dist = sys.maxsize self.pred = None self.disc = 0 self.fin = 0 #new: color of node #new: distance from beginning (will be used later) #new: predecessor #new: discovery time #new: end-of-processing time def addneighbor(self,nbr,weight=0): self.connectedto[nbr] = weight def setcolor(self,color): self.color = color def setdistance(self,d): self.dist = d def setpred(self,p): self.pred = p def setdiscovery(self,dtime): self.disc = dtime def setfinish(self,ftime): self.fin = ftime def getfinish(self): return self.fin def getdiscovery(self): return self.disc def getpred(self): return self.pred def getdistance(self): return self.dist def getcolor(self): return self.color def getconnections(self): return self.connectedto.keys() def getweight(self,nbr): return self.connectedto[nbr] def str (self): return str(self.id) + ":color " + self.color + ":disc " + str(self.disc) + ":fin " + str(self.fin) + ":dist " + str(self.dist) + ":pred \n\t[" + str(self.pred)+ "]\n" def getid(self): return self.id jeżeli algorytm natrafi na biały węzeł, powinny wydarzyć się 4 rzeczy: 1. jego kolor zmienia się na szary 2. aktualny węzeł staje się jego poprzednikiem 3. odległość zwiększa się o 1 względem poprzednika 4. węzeł trafia na koniec kolejki kandydatów do przetworzenia

14 In [25]: def bfs(g,start): start.setdistance(0) #distance 0 indicates it is a start node start.setpred(none) #no predecessor at start vertqueue = Queue() vertqueue.enqueue(start) #add start to processing queue while (vertqueue.size() > 0): currentvert = vertqueue.dequeue() #pop next node to process -> current node for nbr in currentvert.getconnections(): #check all neighbors of the current node if (nbr.getcolor() == 'white'): #if the neighbor is white nbr.setcolor('gray') #change its color to grey nbr.setdistance(currentvert.getdistance() + 1) #set its distance nbr.setpred(currentvert) #current node is its predecessor vertqueue.enqueue(nbr) #add it to the queue currentvert.setcolor('black') #change current node to black after visiting all of its neigh. prześledźmy działanie algorytmu krok po kroku startujemy od słowa FOOL słowo to ma w grafie 4 sąsiadów: POOL, FOIL, FOUL i COOL odwiedzamy każdego z nich, kolorujemy na szaro, ustawiamy odległość i wstawiamy do kolejki wreszcie zmieniamy kolor węzła startowego na czarny w kolejnym kroku funkcja bfs ściąga pierwsze słowo z kolejki - POOL sąsiedzi tego węzła są sprawdzani w pewnym momencie procedura trafia na słowo COOL ono jest już szare (zostało już odwiedzone) istnieje zatem jakaś krótsza ścieżka do COOL można zatem pominąć teraz ten węzeł pozostali sąsiedzi (tzn. POLL) są dodani do kolejki, mają zmieniony kolor i ustawioną odległość kolejne słowo w kolejce to FOIL jedyny nowy sąsiad to FAIL

15 jednak po przetworzeniu kolejki okaże się, że FOUL, COOL i FAIL nie dodadzą nic nowego kontynuując, uzyskamy coś podobnego do: In [33]: g = buildgraph("data/wordfile") for v in g: if v.getid()=='fool': print(v) fool:color white:disc 0:fin 0:dist :pred [None] In [36]: s = g.getvertex('fool')

16 In [37]: bfs(g,s) po wykonaniu funkcji bfs otrzymujemy lekko zmodyfikowany graf węzły są pokolorowane: jeżeli jakieś węzły w grafie pozostaną białe, będzie to informacja o tym, że graf jest niespójny węzły zawierają informację o długości najkrótszej ścieżki do węzła startowego s węzły zawierają informację o poprzednikach na ścieżce można wykorzystać te informacje do odtworzenia drabiny słów: In [38]: def traverse(y): x = y while (x.getpred()): print(x.getid()) x = x.getpred() print(x.getid()) traverse(g.getvertex('sage')) sage sale tale tall toll tool fool Złożoność obliczeniowa funkcji bfs petla while wykonuje się co najwyżej raz dla każdego węzła: O(n) operacji wewnętrzna pętla for wykonuje się co najwyżej raz dla każdej krawędzi: O(m) operacji całość jest zatem klasy O(n + m) Złożoność zagadnienia znalezienia drabiny słów Dodatkowo: czas potrzebny na wygenerowanie grafu czas potrzebny na odtworzenie drabiny

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: podstawowe pojęcia, reprezentacja grafów, metody przeszukiwania, minimalne drzewa rozpinające, problemy

Bardziej szczegółowo

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych. Grafy Graf Graf (ang. graph) to zbiór wierzchołków (ang. vertices), które mogą być połączone krawędziami (ang. edges) w taki sposób, że każda krawędź kończy się i zaczyna w którymś z wierzchołków. Graf

Bardziej szczegółowo

Ogólne wiadomości o grafach

Ogólne wiadomości o grafach Ogólne wiadomości o grafach Algorytmy i struktury danych Wykład 5. Rok akademicki: / Pojęcie grafu Graf zbiór wierzchołków połączonych za pomocą krawędzi. Podstawowe rodzaje grafów: grafy nieskierowane,

Bardziej szczegółowo

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane: Wykład 4 grafy Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, E zbiór krawędzi, Grafy dzielimy na grafy skierowane i nieskierowane: Formalnie, w grafach skierowanych E jest podzbiorem

Bardziej szczegółowo

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV Algorytmy grafowe Wykład 1 Podstawy teorii grafów Reprezentacje grafów Tomasz Tyksiński CDV Rozkład materiału 1. Podstawowe pojęcia teorii grafów, reprezentacje komputerowe grafów 2. Przeszukiwanie grafów

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2015 1 / 21 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań

Bardziej szczegółowo

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu. Instytut Informatyki 22 listopada 2015 Algorytm DFS w głąb Algorytm przejścia/przeszukiwania w głąb (ang. Depth First

Bardziej szczegółowo

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów Wykład 2. Reprezentacja komputerowa grafów 1 / 69 Macierz incydencji Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach (x 1, x 2,..., x n) i m krawędziach (e 1, e 2,..., e m). 2 / 69

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

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

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 1 / 24 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań

Bardziej szczegółowo

Algorytmiczna teoria grafów

Algorytmiczna teoria grafów Przedmiot fakultatywny 20h wykładu + 20h ćwiczeń 21 lutego 2014 Zasady zaliczenia 1 ćwiczenia (ocena): kolokwium, zadania programistyczne (implementacje algorytmów), praca na ćwiczeniach. 2 Wykład (egzamin)

Bardziej szczegółowo

a) 7 b) 19 c) 21 d) 34

a) 7 b) 19 c) 21 d) 34 Zadanie 1. Pytania testowe dotyczące podstawowych własności grafów. Zadanie 2. Przy każdym z zadań może się pojawić polecenie krótkiej charakterystyki algorytmu. Zadanie 3. W zadanym grafie sprawdzenie

Bardziej szczegółowo

Digraf. 13 maja 2017

Digraf. 13 maja 2017 Digraf 13 maja 2017 Graf skierowany, digraf, digraf prosty Definicja 1 Digraf prosty G to (V, E), gdzie V jest zbiorem wierzchołków, E jest rodziną zorientowanych krawędzi, między różnymi wierzchołkami,

Bardziej szczegółowo

G. Wybrane elementy teorii grafów

G. Wybrane elementy teorii grafów Dorota Miszczyńska, Marek Miszczyński KBO UŁ Wybrane elementy teorii grafów 1 G. Wybrane elementy teorii grafów Grafy są stosowane współcześnie w różnych działach nauki i techniki. Za pomocą grafów znakomicie

Bardziej szczegółowo

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1 Wykład Algorytmy grafowe metoda zachłanna. Właściwości algorytmu zachłannego:. W przeciwieństwie do metody programowania dynamicznego nie występuje etap dzielenia na mniejsze realizacje z wykorzystaniem

Bardziej szczegółowo

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska Teoria grafów dla małolatów Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska Wstęp Matematyka to wiele różnych dyscyplin Bowiem świat jest bardzo skomplikowany wymaga rozważenia

Bardziej szczegółowo

Matematyka dyskretna

Matematyka dyskretna Matematyka dyskretna Wykład 13: Teoria Grafów Gniewomir Sarbicki Literatura R.J. Wilson Wprowadzenie do teorii grafów Definicja: Grafem (skończonym, nieskierowanym) G nazywamy parę zbiorów (V (G), E(G)),

Bardziej szczegółowo

Suma dwóch grafów. Zespolenie dwóch grafów

Suma dwóch grafów. Zespolenie dwóch grafów Suma dwóch grafów G 1 = ((G 1 ), E(G 1 )) G 2 = ((G 2 ), E(G 2 )) (G 1 ) i (G 2 ) rozłączne Suma G 1 G 2 graf ze zbiorem wierzchołków (G 1 ) (G 2 ) i rodziną krawędzi E(G 1 ) E(G 2 ) G 1 G 2 G 1 G 2 Zespolenie

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Twierdzenie 2.1 Niech G będzie grafem prostym

Bardziej szczegółowo

Wykład 10 Grafy, algorytmy grafowe

Wykład 10 Grafy, algorytmy grafowe . Typy złożoności obliczeniowej Wykład Grafy, algorytmy grafowe Typ złożoności oznaczenie n Jedna operacja trwa µs 5 logarytmiczna lgn. s. s.7 s liniowa n. s.5 s. s Logarytmicznoliniowa nlgn. s.8 s.4 s

Bardziej szczegółowo

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY ERIAŁY DO WYKŁADU GRAFY Graf nieskierowany Grafem nieskierowanym nazywamy parę G = (V, E), gdzie V jest pewnym zbiorem skończonym (zwanym zbiorem wierzchołków grafu G), natomiast E jest zbiorem nieuporządkowanych

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 7 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 1 / 43 Grafy -

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 20

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 03/0 Przeszukiwanie w głąb i wszerz I Przeszukiwanie metodą

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 8 1 / 42

Bardziej szczegółowo

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe. Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe. Oznaczenia G = V, E - graf bez wag, gdzie V - zbiór wierzchołków, E- zbiór krawdzi V = n - liczba wierzchołków grafu G E = m

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka dyskretna. Andrzej Łachwa, UJ, /14 Matematyka dyskretna Andrzej Łachwa, UJ, 2016 andrzej.lachwa@uj.edu.pl 13/14 Grafy podstawowe definicje Graf to para G=(V, E), gdzie V to niepusty i skończony zbiór, którego elementy nazywamy wierzchołkami

Bardziej szczegółowo

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II Wykład 6. Drzewa cz. II 1 / 65 drzewa spinające Drzewa spinające Zliczanie drzew spinających Drzewo T nazywamy drzewem rozpinającym (spinającym) (lub dendrytem) spójnego grafu G, jeżeli jest podgrafem

Bardziej szczegółowo

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Wykład 8. Drzewo rozpinające (minimum spanning tree) Wykład 8 Drzewo rozpinające (minimum spanning tree) 1 Minimalne drzewo rozpinające - przegląd Definicja problemu Własności minimalnych drzew rozpinających Algorytm Kruskala Algorytm Prima Literatura Cormen,

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Wykład 11 - Grafy i podstawowe algorytmy grafowe (ciąg dalszy) Janusz Szwabiński Plan wykładu: Przeszukiwanie w głąb Studium przypadku - zagadnienie skoczka szachowego (ang.

Bardziej szczegółowo

Podstawy Programowania 2 Grafy i ich reprezentacje. Plan. Wstęp. Teoria grafów Graf skierowany. Notatki. Notatki. Notatki. Notatki.

Podstawy Programowania 2 Grafy i ich reprezentacje. Plan. Wstęp. Teoria grafów Graf skierowany. Notatki. Notatki. Notatki. Notatki. Podstawy Programowania Grafy i ich reprezentacje Arkadiusz Chrobot Zakład Informatyki 7 maja 09 / 4 Plan Wstęp Zastosowania grafów / 4 Wstęp Grafy są w informatyce strukturami danych stosowanymi w wielu

Bardziej szczegółowo

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016 Podstawy Programowania 2 Grafy i ich reprezentacje Arkadiusz Chrobot Zakład Informatyki 9 czerwca 2016 1 42 Plan 1 Wstęp 2 Teoria grafów 3 Grafy jako struktury danych 4 Zastosowania grafów 2 42 Wstęp Wstęp

Bardziej szczegółowo

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/ kuszner/arir/ 2005/06

Bardziej szczegółowo

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru. Spis treści 1 Drzewa 1.1 Drzewa binarne 1.1.1 Zadanie 1.1.2 Drzewo BST (Binary Search Tree) 1.1.2.1 Zadanie 1 1.1.2.2 Zadanie 2 1.1.2.3 Zadanie 3 1.1.2.4 Usuwanie węzła w drzewie BST 1.1.2.5 Zadanie 4

Bardziej szczegółowo

Wykład 7. Algorytmy grafowe

Wykład 7. Algorytmy grafowe Wykład Algorytmy grafowe Algorytmy grafowe i podstawowe algorytmy przeszukiwania Problem Definicje i własności Reprezentacja Przeszukiwanie wszerz (Breadthirst Search) Przeszukiwanie w głąb (Depthirst

Bardziej szczegółowo

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie Używane struktury danych: V - zbiór wierzchołków grafu, V = {1,2,3...,n} E - zbiór krawędzi grafu, E = {(i,j),...}, gdzie i, j Î V i istnieje

Bardziej szczegółowo

Rozwiązywanie problemów metodą przeszukiwania

Rozwiązywanie problemów metodą przeszukiwania Rozwiązywanie problemów metodą przeszukiwania Dariusz Banasiak Katedra Informatyki Technicznej W4/K9 Politechnika Wrocławska Reprezentacja problemu w przestrzeni stanów Jedną z ważniejszych metod sztucznej

Bardziej szczegółowo

Graf. Definicja marca / 1

Graf. Definicja marca / 1 Graf 25 marca 2018 Graf Definicja 1 Graf ogólny to para G = (V, E), gdzie V jest zbiorem wierzchołków (węzłów, punktów grafu), E jest rodziną krawędzi, które mogą być wielokrotne, dokładniej jednoelementowych

Bardziej szczegółowo

Złożoność obliczeniowa klasycznych problemów grafowych

Złożoność obliczeniowa klasycznych problemów grafowych Złożoność obliczeniowa klasycznych problemów grafowych Oznaczenia: G graf, V liczba wierzchołków, E liczba krawędzi 1. Spójność grafu Graf jest spójny jeżeli istnieje ścieżka łącząca każdą parę jego wierzchołków.

Bardziej szczegółowo

AiSD zadanie trzecie

AiSD zadanie trzecie AiSD zadanie trzecie Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5 5 czerwca 2008 1 Wstęp Celem postawionym przez zadanie trzecie było tzw. sortowanie topologiczne. Jest to typ sortowania

Bardziej szczegółowo

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV Algorytmy grafowe Wykład 2 Przeszukiwanie grafów Tomasz Tyksiński CDV Rozkład materiału 1. Podstawowe pojęcia teorii grafów, reprezentacje komputerowe grafów 2. Przeszukiwanie grafów 3. Spójność grafu,

Bardziej szczegółowo

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1 Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1 G. Wybrane elementy teorii grafów W matematyce teorię grafów klasyfikuje się jako gałąź topologii. Jest ona jednak ściśle związana z algebrą i

Bardziej szczegółowo

Podstawowe własności grafów. Wykład 3. Własności grafów

Podstawowe własności grafów. Wykład 3. Własności grafów Wykład 3. Własności grafów 1 / 87 Suma grafów Niech będą dane grafy proste G 1 = (V 1, E 1) oraz G 2 = (V 2, E 2). 2 / 87 Suma grafów Niech będą dane grafy proste G 1 = (V 1, E 1) oraz G 2 = (V 2, E 2).

Bardziej szczegółowo

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/

Bardziej szczegółowo

Algorytmy z powracaniem

Algorytmy z powracaniem Algorytmy z powracaniem Materiały Grafem nazywamy zbiór G = (V, E), gdzie: V jest zbiorem wierzchołków (ang. vertex) E jest zbiorem krawędzi (E można też określić jako podzbiór zbioru nieuporządkowanych

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Podstawowe pojęcia Definition Graf = wierzchołki + krawędzie. Krawędzie muszą mieć różne końce. Między dwoma wierzchołkami może

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Matematyka dyskretna. Andrzej Łachwa, UJ, /15 Matematyka dyskretna Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl 14/15 Grafy podstawowe definicje Graf to para G=(V, E), gdzie V to niepusty i skończony zbiór, którego elementy nazywamy wierzchołkami

Bardziej szczegółowo

Sortowanie topologiczne skierowanych grafów acyklicznych

Sortowanie topologiczne skierowanych grafów acyklicznych Sortowanie topologiczne skierowanych grafów acyklicznych Metody boolowskie w informatyce Robert Sulkowski http://robert.brainusers.net 23 stycznia 2010 1 Definicja 1 (Cykl skierowany). Niech C = (V, A)

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14 Matematyka dyskretna Andrzej Łachwa, UJ, 2019 andrzej.lachwa@uj.edu.pl 1B/14 Drogi w grafach Marszruta (trasa) w grafie G z wierzchołka w do wierzchołka u to skończony ciąg krawędzi w postaci. W skrócie

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka dyskretna. Andrzej Łachwa, UJ, /14 Matematyka dyskretna Andrzej Łachwa, UJ, 2012 andrzej.lachwa@uj.edu.pl 13/14 Grafy podstawowe definicje Graf to para G=(V, E), gdzie V to niepusty i skończony zbiór, którego elementy nazywamy wierzchołkami

Bardziej szczegółowo

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Teoria grafów podstawy Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Grafy zorientowane i niezorientowane Przykład 1 Dwa pociągi i jeden most problem wzajemnego wykluczania się Dwa

Bardziej szczegółowo

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów Drzewa: Drzewo (ang. tree) jest strukturą danych zbudowaną z elementów, które nazywamy węzłami (ang. node).

Bardziej szczegółowo

Grafy dla każdego. dr Krzysztof Bryś. Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska.

Grafy dla każdego. dr Krzysztof Bryś. Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska. Grafy dla każdego dr Krzysztof Bryś brys@mini.pw.edu.pl Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska www.mini.pw.edu.pl Warszawa, 28 marca 2015 Graf składa się z elementów pewnego zbioru

Bardziej szczegółowo

. Podstawy Programowania 2. Algorytmy dfs i bfs. Arkadiusz Chrobot. 2 czerwca 2019

. Podstawy Programowania 2. Algorytmy dfs i bfs. Arkadiusz Chrobot. 2 czerwca 2019 Podstawy Programowania Algorytmy dfs i bfs Arkadiusz Chrobot Zakład Informatyki czerwca 09 / 70 Plan Wstęp Algorytm BFS Podsumowanie / 70 Wstęp Wstęp Istnieje wiele algorytmów związanych z grafami, które

Bardziej szczegółowo

TEORIA GRAFÓW I SIECI

TEORIA GRAFÓW I SIECI TEORIA GRAFÓW I SIECI Temat nr : Grafy Berge a dr hab. inż. Zbigniew TARAPATA, prof. WAT e-mail: zbigniew.tarapata@wat.edu.pl http://tarapata.edu.pl tel.: 6-83-95-0, p.5/00 Zakład Badań Operacyjnych i

Bardziej szczegółowo

Elementy teorii grafów Elementy teorii grafów

Elementy teorii grafów Elementy teorii grafów Spis tresci 1 Spis tresci 1 Często w zagadnieniach praktycznych rozważa się pewien zbiór obiektów wraz z zależnościami jakie łączą te obiekty. Dla przykładu można badać pewną grupę ludzi oraz strukturę

Bardziej szczegółowo

Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Animacja. Algorytm DFS Animacja. Notatki. Notatki.

Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Animacja. Algorytm DFS Animacja. Notatki. Notatki. Podstawy Programowania Algorytmy dfs i bfs Arkadiusz Chrobot Zakład Informatyki czerwca 09 / 70 Plan Wstęp Podsumowanie / 70 Wstęp Istnieje wiele algorytmów związanych z grafami, które w skrócie nazywane

Bardziej szczegółowo

Teoria grafów II. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Teoria grafów II. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Teoria grafów II Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Graf planarny Graf planarny Graf, który może być narysowany tak, by uniknąć przecinania się krawędzi, nazywamy grafem

Bardziej szczegółowo

TEORIA GRAFÓW I SIECI

TEORIA GRAFÓW I SIECI TEORIA GRAFÓW I SIECI Temat nr 1: Definicja grafu. Rodzaje i części grafów dr hab. inż. Zbigniew TARAPATA, prof. WAT e-mail: zbigniew.tarapata@wat.edu.pl http://tarapata.edu.pl tel.: 261-83-95-04, p.225/100

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 8 1 / 39 Plan wykładu

Bardziej szczegółowo

Opracowanie prof. J. Domsta 1

Opracowanie prof. J. Domsta 1 Opracowanie prof. J. Domsta 1 Algorytm FLEURY'ego: Twierdzenie 6.5 G-graf eulerowski. Wtedy cykl Eulera otrzymujemy nastepująco: a) Start w dowolnym wierzchołku b) Krawędzie w dowolnej kolejności po przebyciu

Bardziej szczegółowo

ĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe

ĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny, Politechnika Śląska www.imio.polsl.pl METODY HEURYSTYCZNE ĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe opracował:

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA DROGI i CYKLE w grafach Dla grafu (nieskierowanego) G = ( V, E ) drogą z wierzchołka v 0 V do v t V nazywamy ciąg (naprzemienny) wierzchołków i krawędzi grafu: ( v 0, e, v, e,..., v t, e t, v t ), spełniający

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 BFS DFS Algorytm Dijkstry Algorytm Floyda-Warshalla Podstawowe pojęcia Definition Graf = wierzchołki + krawędzie. Krawędzie muszą

Bardziej szczegółowo

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych ELEMENTY SZTUCZNEJ INTELIGENCJI Laboratorium nr 9 PRZESZUKIWANIE GRAFÓW Z

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 53

Bardziej szczegółowo

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie Wykład 8. Kolorowanie 1 / 62 Kolorowanie wierzchołków - definicja Zbiory niezależne Niech G będzie grafem bez pętli. Definicja Mówimy, że G jest grafem k kolorowalnym, jeśli każdemu wierzchołkowi możemy

Bardziej szczegółowo

Języki programowania, wtorek , 12:15-13:45 Zadanie 11 - ostatnie

Języki programowania, wtorek , 12:15-13:45 Zadanie 11 - ostatnie Języki programowania, wtorek 10.01.2017, 12:15-13:45 Zadanie 11 - ostatnie Dzisiaj wykorzystamy kolejną bardzo ważną rzecz języka C++ - szablony funkcji i szablony klas. Wstęp co to są klasy i funkcje

Bardziej szczegółowo

TEORIA GRAFÓW I SIECI

TEORIA GRAFÓW I SIECI TEORIA GRAFÓW I SIECI Temat nr 3: Marszruty, łańcuchy, drogi w grafach dr hab. inż. Zbigniew TARAPATA, prof. WAT e-mail: zbigniew.tarapata@wat.edu.pl http://tarapata.edu.pl tel.: 261-83-95-04, p.225/100

Bardziej szczegółowo

Grafy w MATLABie. LABORKA Piotr Ciskowski

Grafy w MATLABie. LABORKA Piotr Ciskowski Grafy w MATLABie LABORKA Piotr Ciskowski przykład 1 SIMBIOLOGY MODEL OF A REPRESSILATOR OSCILLATORY NETWORK Repressilator oscillatory network (cokolwiek to znaczy ;-) żródło: http://www.mathworks.com/help/bioinfo/examples/working-with-graph-theory-functions.html

Bardziej szczegółowo

0. ELEMENTY LOGIKI. ALGEBRA BOOLE A

0. ELEMENTY LOGIKI. ALGEBRA BOOLE A WYKŁAD 5() ELEMENTY LOGIKI ALGEBRA BOOLE A Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań Matematyka zbudowana jest z pierwotnych twierdzeń (nazywamy

Bardziej szczegółowo

1 Automaty niedeterministyczne

1 Automaty niedeterministyczne Szymon Toruńczyk 1 Automaty niedeterministyczne Automat niedeterministyczny A jest wyznaczony przez następujące składniki: Alfabet skończony A Zbiór stanów Q Zbiór stanów początkowych Q I Zbiór stanów

Bardziej szczegółowo

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może

Bardziej szczegółowo

Sztuczna Inteligencja i Systemy Doradcze

Sztuczna Inteligencja i Systemy Doradcze Sztuczna Inteligencja i Systemy Doradcze Przeszukiwanie przestrzeni stanów algorytmy ślepe Przeszukiwanie przestrzeni stanów algorytmy ślepe 1 Strategie slepe Strategie ślepe korzystają z informacji dostępnej

Bardziej szczegółowo

Dynamiczne struktury danych

Dynamiczne struktury danych Listy Zbiór dynamiczny Zbiór dynamiczny to zbiór wartości pochodzących z pewnego określonego uniwersum, którego zawartość zmienia się w trakcie działania programu. Elementy zbioru dynamicznego musimy co

Bardziej szczegółowo

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 1,2,3. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 1,2,3. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie Algorytmy Grafowe dr hab. Bożena Woźna-Szcześniak, prof. UJD Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie b.wozna@ujd.edu.pl Wykład 1,2,3 B. Woźna-Szcześniak (UJD) Algorytmy

Bardziej szczegółowo

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WTĘP DO INFORMATYKI Adrian Horzyk Grafy i struktury grafowe www.agh.edu.pl DEFINICJA GRAFU Graf to

Bardziej szczegółowo

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV Graf skierowany (digraf) zbiór wierzchołków i zbiór krawędzi skierowanych łączących (co najwyżej jeden raz) uporządkowane pary wierzchołków. Mówimy wtedy, że krawędź łączy pierwszy wierzchołek z drugim

Bardziej szczegółowo

Wprowadzenie do Sztucznej Inteligencji

Wprowadzenie do Sztucznej Inteligencji Wprowadzenie do Sztucznej Inteligencji Wykład Informatyka Studia InŜynierskie Przeszukiwanie przestrzeni stanów Przestrzeń stanów jest to czwórka uporządkowana [N,, S, GD], gdzie: N jest zbiorem wierzchołków

Bardziej szczegółowo

Wprowadzenie do Sztucznej Inteligencji

Wprowadzenie do Sztucznej Inteligencji Wprowadzenie do Sztucznej Inteligencji Wykład Informatyka Studia InŜynierskie Przeszukiwanie przestrzeni stanów Przestrzeń stanów jest to czwórka uporządkowana [N,[, S, GD], gdzie: N jest zbiorem wierzchołków

Bardziej szczegółowo

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne Przypominajka: 152 drzewo filogenetyczne to drzewo, którego liśćmi są istniejące gatunki, a węzły wewnętrzne mają stopień większy niż jeden i reprezentują

Bardziej szczegółowo

5c. Sieci i przepływy

5c. Sieci i przepływy 5c. Sieci i przepływy Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 5c. Sieci i przepływy zima 2016/2017 1 / 40 1 Definicje

Bardziej szczegółowo

Algorytmiczna teoria grafów

Algorytmiczna teoria grafów Podstawowe pojęcia i klasy grafów Wykład 1 Grafy nieskierowane Definicja Graf nieskierowany (graf) G = (V,E) jest to uporządkowana para składająca się z niepustego skończonego zbioru wierzchołków V oraz

Bardziej szczegółowo

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. 1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. Algorytmy przeszukiwania w głąb i wszerz są najczęściej stosowanymi algorytmami przeszukiwania. Wykorzystuje się je do zbadania istnienia połączenie

Bardziej szczegółowo

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow 9: Digrafy (grafy skierowane) Spis zagadnień Digrafy Porządki częściowe Turnieje Przykłady: głosowanie większościowe, ścieżka krytyczna Digraf (graf skierowany) Digraf to równoważny termin z terminem graf

Bardziej szczegółowo

Egzaminy i inne zadania. Semestr II.

Egzaminy i inne zadania. Semestr II. Egzaminy i inne zadania. Semestr II. Poniższe zadania są wyborem zadań ze Wstępu do Informatyki z egzaminów jakie przeprowadziłem w ciągu ostatnich lat. Ponadto dołączyłem szereg zadań, które pojawiały

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca

Bardziej szczegółowo

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej.

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej. Wrocław, 28.11.2017 Wstęp do informatyki i programowania: liczby pierwsze Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz Dzisiaj na zajęciach... Zajmiemy się liczbami pierwszymi... liczby

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie. Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy

Bardziej szczegółowo

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel Wstęp do programowania Listy Piotr Chrząstowski-Wachtel Do czego stosujemy listy? Listy stosuje się wszędzie tam, gdzie występuje duży rozrzut w możliwym rozmiarze danych, np. w reprezentacji grafów jeśli

Bardziej szczegółowo

Wprowadzenie do Sztucznej Inteligencji

Wprowadzenie do Sztucznej Inteligencji Wprowadzenie do Sztucznej Inteligencji Wykład Studia Inżynierskie Przeszukiwanie przestrzeni stanów Przestrzeń stanów jest to czwórka uporządkowana [N,[, S, GD], gdzie: N jest zbiorem wierzchołków w odpowiadających

Bardziej szczegółowo

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010 Algorytmy równoległe Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka Znajdowanie maksimum w zbiorze n liczb węzły - maksimum liczb głębokość = 3 praca = 4++ = 7 (operacji) n - liczność

Bardziej szczegółowo

Lista, Stos, Kolejka, Tablica Asocjacyjna

Lista, Stos, Kolejka, Tablica Asocjacyjna Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,

Bardziej szczegółowo

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona Wykład 4. Droga i cykl Eulera i Hamiltona 1 / 92 Grafy Eulera Droga i cykl Eulera Niech G będzie grafem spójnym. Definicja Jeżeli w grafie G istnieje zamknięta droga prosta zawierająca wszystkie krawędzie

Bardziej szczegółowo

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle Paweł Szołtysek 12 czerwca 2008 Streszczenie Planowanie produkcji jest jednym z problemów optymalizacji dyskretnej,

Bardziej szczegółowo

Drzewa czerwono-czarne.

Drzewa czerwono-czarne. Binboy at Sphere http://binboy.sphere.p l Drzewa czerwono-czarne. Autor: Jacek Zacharek Wstęp. Pojęcie drzewa czerwono-czarnego (red-black tree) zapoczątkował Rudolf Bayer w książce z 1972 r. pt. Symmetric

Bardziej szczegółowo

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Algorytmy wyznaczania centralności w sieci Szymon Szylko Algorytmy wyznaczania centralności w sieci Szymon Szylko Zakład systemów Informacyjnych Wrocław 10.01.2008 Agenda prezentacji Cechy sieci Algorytmy grafowe Badanie centralności Algorytmy wyznaczania centralności

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 12 Wykorzystanie sieci rekurencyjnych w optymalizacji grafowej

Wstęp do sieci neuronowych, wykład 12 Wykorzystanie sieci rekurencyjnych w optymalizacji grafowej Wstęp do sieci neuronowych, wykład 12 Wykorzystanie sieci rekurencyjnych w optymalizacji grafowej Maja Czoków, Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-01-09

Bardziej szczegółowo