Grafy podstawowe pojęcia
|
|
- Roman Kozieł
- 5 lat temu
- Przeglądów:
Transkrypt
1 71 Grafy podstawowe pojęcia Graf jest najbardziej złożoną strukturą dynamiczną. W przeciwieństwie do drzewa i listy, które są szczególnymi przypadkami grafów, nie nakładamy tu żadnych ograniczeń, jeśli chodzi o łuki łączące węzły grafu, mogą one występować w dowolnej ilości, łącząc poszczególne węzły w dowolny sposób. Dodatkowo w grafach dopuszczamy przetwarzanie (dodawanie i usuwanie) łuków, niezależnie od przetwarzania węzłów. Wszystko to stwarza duże problemy, jeśli chodzi o reprezentacje grafów w pamięci komputera. Istnieje wiele reprezentacji o różniących się własnościach. Przykładowe zastosowania grafów: analiza sieci elektrycznych, ale też sieci komputerowych, zagadnienia segmentacji programów i wieloprzetwarzania, zagadnienia planowania w badaniach operacyjnych, identyfikacja struktur molekularnych w chemii organicznej Rys. 42. Przykładowy graf
2 72 Podstawowe pojęcia: 1. Graf, w którym wszystkie krawędzie są krawędziami skierowanymi, nazywamy grafem skierowanym, albo zorientowanym, w przeciwnym przypadku grafem nieskierowanym. 2. Ścieżką w grafie nazywać będziemy ciąg możliwych do przejścia, wierzchołków, np. (2, 3, 4). 3. Cyklem będzie ścieżka, zaczynająca się i kończąca tym samym wierzchołkiem, np. (2, 3, 4, 2). 4. Graf nie zawierający żadnych cykli nazywać będziemy grafem acyklicznym, w przeciwnym przypadku grafem cyklicznym. 5. Kolejną, ważną z punktu widzenia wielu algorytmów grafowych, jest spójność grafu. Oto definicje: Graf nieskierowany nazywać będziemy spójnym, jeśli między dwoma dowolnymi węzłami istnieje przynajmniej jedna, łącząca je ścieżka. W przeciwnym przypadku graf nieskierowany nazywać będziemy niespójnym. Graf skierowany nazywać będziemy spójnym, jeśli po odrzuceniu skierowania, między dwoma dowolnymi węzłami istnieje przynajmniej jedna, łącząca je ścieżka.
3 73 Graf skierowany nazywać będziemy silnie spójnym, jeśli między dwoma dowolnymi węzłami istnieje przynajmniej jedna. łącząca je ścieżka. Przykładowy graf skierowany z rys. 42, po odrzuceniu węzła z etykietą 6, jest grafem spójnym, natomiast nie jest grafem silnie spójnym brak, na przykład, ścieżki od węzła 5 do Graf, w którym każdej krawędzi przypisano pewną wartość (wagę), nazywać będziemy grafem ważonym. Waga może reprezentować, na przykład, koszt przejścia między dwoma węzłami. 7. Grafem płaskim nazywać będziemy narysowany na płaszczyźnie graf, w którym między dwoma dowolnymi wierzchołkami narysować można przynajmniej jedną krawędź. Przykładowy graf z rys. 42 jest takim grafem płaskim. Grafy metody reprezentacji w pamięci Poniżej zostaną przedstawione trzy, najczęściej spotykane, najważniejsze reprezentacje grafów. Macierz sąsiedztwa Macierz sąsiedztwa (adjacency matrix) jest reprezentacją tablicową, statyczną. Jej zaletą jest szybki, bezpośredni dostęp do krawędzi (a więc możliwość łatwego ich przetwarzania), wielką wadą natomiast, wynikający ze statyczności - brak możliwości łatwego przetwarzania (dodawania lub usuwania) węzłów.
4 Rys. 43. Reprezentacja przykładowego grafu, którego model przedstawiono na rys. 42, w postaci bitowej macierzy sąsiedztwa Oznaczmy przez n ilość węzłów grafu, oraz przez m ilość jego krawędzi. Bitowa macierz sąsiedztwa będzie macierzą kwadratową o rozmiarach n x n zawierającą jedynki na skrzyżowaniu odpowiednich wierszy i kolumn (dla reprezentowania krawędzi) i zera w pozostałych miejscach. Ponieważ zajętość pamięci w tej reprezentacji zależy tylko od ilości węzłów (jest proporcjonalna do n 2 ), reprezentacja dobrze nadaje się do przechowywania informacji o grafach gęstych, dla których (n/m) << 1. W reprezentacji grafu nieskierowanego w postaci macierzy sąsiedztwa jedynki występują symetrycznie względem głównej przekątnej, dlatego też zwykle przechowuje się tylko informacje zawarte nad, lub pod główną przekątną, co pozwala zmniejszyć zajętość pamięci prawie o połowę, kosztem niewielkiego wydłużenia czasu dostępu. Lista krawędzi Lista krawędzi, jak sama nazwa wskazuje, przechowuje informacje tylko o krawędziach, podobnie zresztą jak macierz
5 75 sąsiedztwa. Jest to jednak struktura dynamiczna, jej rozmiary są wyznaczone przez rzeczywistą ilość krawędzi Rys. 44. Reprezentacja przykładowego grafu, przedstawionego na rys. 42, w postaci listy krawędzi. Każdy z elementów listy zawiera etykiety krawędzi: węzła wyjściowego (górny wiersz), oraz docelowego (dolny wiersz),. Oto jak wyglądają zalety i wady tej reprezentacji, pokazane w sposób skondensowany: zajętość pamięci zależy tylko od ilości krawędzi i jest proporcjonalna do m, reprezentacja nadaje się więc wybitnie do przechowywania informacji o grafach rzadkich, dla których (n/m) >>1, dodawanie, lub usuwanie węzłów jest możliwe, pociąga za sobą jedynie konieczność modyfikacji listy krawędzi (usunięcie elementów listy krawędzi odpowiadających krawędziom wychodzącym i dochodzącym do usuwanego węzła), istnieje możliwość reprezentacji krawędzi zapętlonych i równoległych (każdej krawędzi odpowiada bowiem odrębny element listy krawędzi). Podobnie - dodając do elementów listy krawędzi pole, przechowujące wagę krawędzi, można reprezentować grafy ważone, zajętość pamięci dla grafów nieskierowanych wzrasta natomiast dwukrotnie w stosunku do grafów skierowanych, trzeba bowiem w liście krawędzi reprezentować możliwość poruszania się w obu kierunkach miedzy węzłami grafu.
6 76 Lista incydencji Najbardziej uniwersalną, o najlepszych własnościach, wydaje się być reprezentacja, którą nazwiemy listą incydencji. Jest to struktura w pełni dynamiczna, z możliwością przechowywania (i przetwarzania) w jednej strukturze wszystkich informacji, dotyczących zarówno krawędzi, jak i węzłów. Za taką uniwersalność płacimy jednak względnie dużym stopniem skomplikowania struktury, z czym jednak nie musi wiązać się, jak zobaczymy, skomplikowanie algorytmów. W strukturze, przechowującej pełną informację o grafie, występują dwa rodzaje rekordów. Zdefiniujmy najpierw postać rekordów, przechowujących informacje dotyczące węzłów grafu: struct VERT { int klucz; int old; ELEM * eref; VERT * nextv; }; Zawierają one, oprócz etykiety węzła o nazwie klucz, wskazanie eref do początku listy rekordów, opisujących krawędzie wychodzące z danego węzła (rekordy odpowiadające krawędziom są typu ELEM), oraz wskazanie nextv do następnego węzła w liście węzłów. Znaczenie pola old zostanie wyjaśnione później. Rekordy drugiego rodzaju przechowują informacje dotyczące krawędzi. Są one typu:
7 77 struct ELEM { VERT * vref; ELEM * nexte; }; gdzie: vref jest wskazaniem węzła, do którego wiedzie dana krawędź, nexte jest wskazaniem kolejnego rekordu w liście krawędzi wychodzących z tego samego węzła. Poniższy rysunek przedstawia początkowa część struktury przykładowego grafu z rys graf ptr k old do węzła 3 do węzła 5 2 old Rys. 45 Reprezentacja części przykładowego grafu w postaci listy incydencji Oto cechy tej reprezentacji: zajętość pamięci zależy w równym stopniu od ilości węzłów grafu, jak i od ilości jego krawędzi, i jest proporcjonalna do sumy ( n + m ), taka reprezentacja nadaje się więc do przechowywania dowolnych grafów, o ile rozmiary grafu nie są zbyt duże, wtedy bowiem zaczyna odgrywać rolę czas dostępu sekwencyjnego,
8 78 dodawanie, lub usuwanie zarówno węzłów, jak i krawędzi, jest możliwe i łatwe, zajętość pamięci dla grafów nieskierowanych wzrasta i jest proporcjonalna do ( n + 2 * m ), dwukrotnie bowiem wzrasta ilość rekordów reprezentujących krawędzie, najważniejszą jednak zaletą tej reprezentacji jest jej listowy charakter (w istocie jest to lista list), co daje szansę stosowania prostych algorytmów obsługi, i to zarówno rekurencyjnych, jak też iteracyjnych. Algorytm szukania w głąb dla grafu Algorytm szukania w głąb jest podstawowym algorytmem grafowym. Jego konstrukcja oparta jest o schemat ogólny tak zwanych algorytmów z powrotami, zwanych niekiedy wyszukiwaniem wyczerpującym. Schemat ten zostanie bardziej szczegółowo omówiony w dalszej części wykładu. Poza tym, algorytm szukania w głąb jest kolejnym przykładem rekurencyjnego algorytmu typu dziel i zwyciężaj. Jego zasada została już omówiona przy okazji algorytmu sortowania tablic QuickSort. Poniżej przedstawiono pełną postać algorytmu szukania w głąb dla grafu w formie rekurencyjnej funkcji, zapisanej w notacji C/C++ i wykorzystującej podane wcześniej definicje struktur. Przy okazji zauważmy, że cechą charakterystyczną tych algorytmów jest umieszczona wewnątrz ciała funkcji pętla iteracyjna, zawierająca rekurencyjne wywołanie.
9 79 Załóżmy, że podobnie jak w drzewie binarnym, chcemy wykonać pewną operację Q(ptr) na wszystkich węzłach zupełnie dowolnego grafu skierowanego. W tym celu należy dokonać wywołania SEARCH ( graf ); niżej zdefiniowanej rekurencyjnej funkcji void SEARCH( VERT * ptr) { if ( not old ) // 1 { ptr old =1; Q( ptr ); // 2 ELEM * k = ptr eref; // 3 while (k) // 4 { SEARCH( k vref ); // 5 k = k nexte; // 6 } } } Szczegółowa analiza działania tego algorytmu wykaże, że odwiedzenie wszystkich węzłów grafu zawsze powiedzie się, jeśli będzie to graf silnie spójny, w przeciwnym przypadku, może się nie powieść. W jaki sposób działa ten algorytm? Kolejne węzły są wybierane z listy krawędzi danego węzła (linia 5). Jeśli wybrany węzeł nie był jeszcze odwiedzony (linia 1), zaznaczamy jego odwiedzenie wpisując jedynkę w jego pole old i wykonując na nim operację Q (linia 2), a następnie zabieramy się do przeglądania jego listy krawędzi (linie 3 i 4), nie kończąc przeglądania listy krawędzi węzła poprzedniego (sic!).
10 80 W ten sposób poruszamy się w głąb grafu. Po zakończeniu przeglądania jednak każdej listy krawędzi, wycofujemy się rekurencyjnie, powracając do przeglądania listy incydencji węzła poprzedniego. Zauważmy, że kolejność występowania węzłów w liście węzłów nie ma żadnego znaczenia. Dalej powiązanie węzłów w listę wydaje się zbyteczne (nie korzystaliśmy przecież ze wskaźnika nextv). Ale to tylko pozór. Jest ono konieczne, ponieważ w trakcie przetwarzania grafu może, po kolejnej operacji, okazać się, że do któregoś z węzłów nie dochodzi żadna krawędź, ani żadna z niego nie wychodzić (węzeł o etykiecie 6 w naszym przykładowym grafie), albo też po prostu graf przestanie być grafem silnie spójnym (nawet jeśli przedtem był). Sytuacje takie powodują omijanie niektórych węzłów w trakcie rekurencyjnego wywoływania algorytmu. Dzięki utrzymywaniu wszystkich węzłów grafu w liście węzłów możemy w niżej podany sposób VERT * k = graf; while ( k ) { SEARCH( k ); k = k nextv; } zapobiec omijaniu niektórych węzłów. Nie należy jednak, przed każdym cyklem przeglądania grafu, zapominać o wyzerowaniu pola old. Algorytm szukania w głąb dla grafu, mimo swoich skromnych rozmiarów (tylko 6 linii poleceń!), posiada wielką siłę i możliwości. Na jego kanwie można zaproponować wiele algorytmów obsługujących grafy. Oto przykłady:
11 81 wyszukiwanie węzła o zadanych cechach, wyszukiwanie węzła o najmniejszej (największej) wartości klucza, wyszukiwanie najkrótszej ścieżki do węzła o zadanych cechach, wyszukiwanie wszystkich ścieżek do węzła o zadanych cechach, badanie cykliczności grafu, badania spójności i silnej spójności grafu, badanie płaskości grafu, itd. Poza tym, lista incydencji umożliwia łatwe, dynamiczne dostawianie i usuwanie węzłów grafu. Wszystko to uzyskujemy dzięki stosowaniu algorytmów rekurencyjnych do rekurencyjnych struktur danych. Zadania do samodzielnego rozwiązania: 1. Wykaż, że metoda preorder dla drzewa binarnego jest szczególnym przypadkiem algorytmu szukania w głąb dla grafu, gdy ten ostatni degeneruje się do takiego drzewa. 2. Jaka będzie kolejność wykonywania wybranej operacji w poniższym grafie, po wywołaniu procedury szukania w głąb, począwszy od węzła o etykiecie 7? Rozważ wszelkie możliwe rozwiązania. 3. Dodaj minimalną ilość krawędzi do poniższego grafu tak, aby graf ten stał się grafem silnie spójnym.
12 82 graf Kodowanie mieszające Opisana poniżej metoda przechowywania i wyszukiwania elementów będzie miała praktyczny sens, jeśli zbiór potencjalnych kluczy identyfikujących te elementy jest zbiorem o bardzo dużej liczności. W takich sytuacjach bowiem omawiane dotychczas metody, łącznie z drzewem binarnych poszukiwań, nie zapewnią nam dostatecznie dużej efektywności algorytmów wyszukiwania. Dla przykładu, wspomniane drzewo binarnych poszukiwań, stanie się drzewem silnie nie wyważonym i efektywność wyszukiwania w takim drzewie zbliży się do efektywności wyszukiwania liniowego w liście liniowej. Wyobraźmy sobie, że w pewnym systemie używa się haseł o długości 10 liter wykorzystując alfabet języka polskiego. Wszystkich możliwych haseł (być może potencjalnych kluczy użytkowników tego systemu) będzie 33 10, to jest około 1.5 * haseł. Jeżeli liczba użytkowników nie jest zbyt duża, opłacalnym będzie zastosowanie systemu, który najpierw dokona wstępnej selekcji tych użytkowników, szufladkując każdego z nich do odrębnych przegródek.
13 83 Zadanie szufladkowania może być wykonane za pomocą metody, zwanej kodowaniem mieszającym, lub transformacją kluczową. W literaturze można też spotkać terminy mieszanie liniowe, lub haszowanie dla określenia opisywanej teraz metody, lub jej odmian. Ponieważ jest bardzo wiele różnych zastosowań tej metody, jak również wiele jej odmian, najpierw opiszemy problem możliwie ogólnie a następnie omówimy jedną z jej implementacji, opartej o struktury listowe. Niech U będzie pewnym uniwersum, tj. dowolnym, skończonym zbiorem (na przykład zbiorem haseł) o dużej liczności. Przez A i U oznaczmy dowolny i-ty podzbiór (tzw. katalog) zbioru U, natomiast przez m << U oznaczmy liczbę tych katalogów. Wszystkie katalogi są zbiorami rozłącznymi. Nie muszą one zawierać elementów uniwersum U. Natomiast dowolny element x U, jeśli się pojawi, musi być zakwalifikowany w sposób jednoznaczny do jednego i tylko jednego katalogu. Przez h(x) oznaczmy funkcję o szczególnych własnościach (tak zwaną funkcję transformującą lub funkcję haszującą), której zadaniem będzie przydzielanie w sposób jednoznaczny dowolnemu elementowi x U określonego katalogu A i. Będzie to więc funkcja h: U { 1, 2, 3,..., m } z uniwersum U w zbiór liczb naturalnych, będących numerami katalogów.
14 84 Funkcja haszująca powinna spełniać dwa podstawowe warunki: - przyjmować wartości ze zbioru { 1, 2, 3,..., m } w sposób możliwie równomierny, - koszt liczenia tej funkcji musi być stały, to jest niezależny od x U i możliwie najniższy. Pierwszy z tych warunków sprowadza się do żądania, aby dla każdego x U prawdopodobieństwo otrzymania określonej wartości i { 1, 2, 3,..., m } było mniej więcej stałe, to jest niezależne od samej wartości i. Cała trudność w efektywnym zastosowaniu kodowania mieszającego polega na znalezieniu odpowiedniej do danego problemu, a jednocześnie spełniającej oba postawione warunki, funkcji haszującej. Poniższy rysunek przedstawia ideę implementacji metody kodowania mieszającego z wykorzystaniem list liniowych. 1 2 H Null dobrze całość Null Null Null kot Null Null m Null Rys. 46. Kodowanie mieszające wykorzystujące listy liniowe Tablica H, indeksowana numerami katalogów, przechowuje wskaźniki do list liniowych z elementami uniwersum U.
15 85 Wstawienie nowego elementu do tej struktury sprowadza się do obliczenia, za pomocą funkcji haszującej, wartości indeksu i { 1, 2, 3,..., m }, a następnie umieszczenia tego elementu w liście wskazywanej przez element tablicy H[i]. Podobnie przebiega wyszukanie elementu o kluczu równym zadanej wartości x. Najpierw oblicza się przy pomocy funkcji haszującej wartość i a następnie przegląda listę wskazywaną przez H[i] w celu ostatecznego wyszukania elementu. W celu przyspieszenia wyszukiwania warto jest poszczególne listy utrzymywać w stanie uporządkowania. Algorytmy z powrotami Algorytm szukania w głąb dla grafu jest typowym przykładem szerszej klasy algorytmów, zwanych algorytmami z powrotami lub wyszukiwaniem wyczerpującym. Są to algorytmy rekurencyjne, które w swoim ciele zawierają, zamiast warunkowych wywołań rekurencyjnych, pętlę iteracyjną, z której wnętrza następują dopiero wywołania rekurencyjne. Pojedyncze wywołanie algorytmu rekurencyjnego może więc spowodować ciąg kolejnych wywołań rekurencyjnych (wszystkie wywołania z tego samego poziomu) nadzorowanych przez pętlę iteracyjną. Pętla ta musi być tak skonstruowana, aby dla każdego dopuszczalnego zestawu danych zapewnić spełnienie w pewnym momencie warunku stopu, przerywając ten ciąg wywołań. Algorytmy z powrotami wykorzystywane są nie tylko do rozwiązywania problemów, dających się łatwo przedstawić w postaci grafu, ale w szeregu innych dziedzinach wiążących się ściśle z informatyką, takich jak: teoria automatów,
16 86 projektowanie i analiza sieciowych systemów operacyjnych, przetwarzanie równoległe, wykorzystanie logiki w programowaniu, problemy kodowania, czy wreszcie gry komputerowe. Klasa algorytmów z powrotami opisana została już dawno opisana w literaturze, gdzie została zilustrowana szeregiem klasycznych problemów, takich jak: szukanie wyjścia z labiryntu, problem ośmiu hetmanów, droga skoczka szachowego, problem komiwojażera, problem doboru, problem plecakowy. Klasę algorytmów z powrotami omówimy na przykładzie problemu szukania wyjścia z labiryntu Rys. 47 Labirynt zawierający 25 ponumerowanych pól z widocznymi przegrodami, uniemożliwiającymi przejście między niektórymi polami W labiryncie, przedstawionym na rys. 47 można przechodzić między sąsiednimi polami po liniach prostych. Zadanie polega na szukaniu drogi między dwoma dowolnymi polami labiryntu. Tak postawiony problem trzeba jednak uszczegółowić, można bowiem szukać odpowiedzi na następujące pytania: - czy taka droga w ogóle istnieje? - jeśli tak, to czy takich różnych dróg jest więcej? - jeśli tak, to która z nich jest najkrótsza?
17 87 Mówiąc ogólnie metoda powrotów polega na próbach rozszerzenia pewnego rozwiązania częściowego. W każdym kroku, jeśli rozszerzenie aktualnego rozwiązania częściowego nie jest możliwe, powraca się do krótszego rozwiązania częściowego i ponownie próbuje się je rozszerzyć. Tak więc można szukać drogi miedzy dwoma dowolnymi polami labiryntu kierując się następującymi zasadami: 1. z danego pola mogę zawsze wybrać dopuszczalne, nie badaną jeszcze pole sąsiednie, 2. jeśli będąc w określonym polu stwierdzę, że nie istnieje dopuszczalne, nie badana jeszcze pole sąsiednie, zmuszony jestem cofnąć się na pole, z którego wykonałem poprzedni ruch i próbować z tego pola realizować punkt 1. Znane są dwie, różne reprezentacje pozwalające zaimplementować przedstawioną wyżej ideę algorytmu z powrotami: 1. implementacja oparta na zbiorach, 2. implementacja w postaci drzewa. Implementacja algorytmu z powrotami oparta na zbiorach Niech A i będzie zbiorem kandydatów związanych z punktem i (w naszym przypadku z polem labiryntu o numerze i). Zbiór ograniczeń, związanych z punktem i oznaczmy przez O i. Wtedy S i = A i - O i jest zbiorem dopuszczalnych kandydatów, związanych z punktem i.
18 88 Dla przykładowego pola o numerze 13 labiryntu, przestawionego na rys. 47 będzie: A 13 = { 8, 12, 14, 18} O 13 = { 8 } S 13 = { 12, 14, 18} Na ogół zbiory A i można generować automatycznie. Tak też jest i w naszym przykładowym labiryncie są to dwu-, trzylub czteroelementowe zbiory o wartościach różniących się o 1, lub o 5 od wartości i. Natomiast zbiory O i są albo z góry zadane i na ogół nie zmieniają się w trakcie realizacji algorytmu, albo (w przypadku bardziej ogólnym) są generowane dla punktu i (a często i dla najbliższego jego otoczenia), na bieżąco w trakcie realizacji algorytmu. Tak się dzieje, na przykład, w większości zręcznościowych gier komputerowych. Rozwiązaniem częściowym jest częściowy wektor rozwiązań (a 1, a 2,..., a k ), zawierający nie powtarzające się numery punktów i reprezentujący częściową, dopuszczalną drogę z punktu wyjściowego a 1 do punktu a k. Przykładem rozwiązania częściowego dla rozważanego labiryntu może być wektor ( 1, 2, 7, 12, 13, 14, 19, 20 ). Próba rozszerzenia rozwiązania częściowego polegać będzie na wyborze ze zbioru S k kolejnego kandydata, rozszerzając rozwiązanie częściowe do (a 1, a 2,..., a k, a k+1 ) a następnie sprawdzenie, czy w ten sposób osiągamy rozwiązanie końcowe ( w naszym przykładzie dochodzimy do pola docelowego labiryntu ). Jeśli nie kontynuujemy rozszerzanie rozwiązania częściowego wybierając kolejnego kandydata ze zbioru S k+1. Dla zaznaczenia, że przejście z punktu a k, do a k+1 miało już miejsce i w przyszłości nie powinno już być badane, usuwamy ze zbioru S k kandydata S k+1.
19 89 Takie poruszanie się w głąb labiryntu musimy przerwać, jeśli napotkamy pusty zbiór S k. Wtedy algorytm usuwa z rozwiązania częściowego kandydata a k, wybierając kolejnego kandydata ze zbioru S k-1. Gdyby i ten zbiór okazał się pusty, trzeba usunąć z rozwiązania częściowego punkt a k-1, próbując rozszerzyć to rozwiązanie punktem ze zbioru S k-2. Poniżej przedstawiono w pseudokodzie ogólną postać algorytmu z powrotami. Przystosowanie algorytmu, zapisanego w pseudokodzie do rozwiązywania pewnych konkretnych problemów polegać będzie na uszczegółowieniu sformułowań zapisanych w języku naturalnym i ich zapisie na poziomie języka programowania. Przedtem należy wybrać oczywiście odpowiednią reprezentację danych. void próbuj( ) { zapoczątkuj wybieranie kandydatów; do { wybierz następnego kandydata; if (dopuszczalny) { zapisz go; if (rozwiązanie niepełne) { próbuj( ); // próba wykonania następnego kroku if (nie ma następnego kandydata) usuń poprzedni zapis; } } } while ( rozwiązanie niepełne and jest następny kandydat); } Rys. 48 Ogólna postać algorytmu z powrotami zapisana w pseudokodzie
20 90 Ćwiczenia do samodzielnego wykonania: 1. W jaki sposób i dlaczego przy pomocy algorytmu z powrotami można stwierdzić, że między dwoma polami labiryntu nie istnieje żadna droga? 2. W jaki sposób należy zmodyfikować algorytm z powrotami, aby: a) znajdował on wszystkie drogi miedzy dwoma dowolnymi polami labiryntu, b) znajdował on najkrótszą drogę spośród wszystkich możliwych dróg labiryntu. 3. Zastąp w ogólnym algorytmie z powrotami wszystkie sformułowania w języku naturalnym przez odpowiednie polecenia w języku programowania tak, aby algorytm ten znajdował drogę między dwoma dowolnymi polami a i b labiryntu.
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ółowoAlgorytmy 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ółowoMatematyczne 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ółowoStruktury 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ółowoGrafem 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ółowo1. 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ółowoa) 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ółowoAiSD 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ółowoOgó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ółowoWykł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ółowoMatematyka 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ółowoPrzykł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ółowoZofia 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ółowoG. 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ółowoLista liniowa dwukierunkowa
53 Lista liniowa dwukierunkowa Jest to lista złożona z elementów, z których każdy posiada, oprócz wskaźnika na element następny, również wskaźnik na element poprzedni. Zdefiniujmy element listy dwukierunkowej
Bardziej szczegółowo. 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ółowoAlgorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)
Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie) Wprowadzenie Haszowanie jest to pewna technika rozwiązywania ogólnego problemu słownika. Przez problem słownika rozumiemy tutaj takie
Bardziej szczegółowoTeoria 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ółowoSortowanie 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ółowoPoró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ółowoMATEMATYKA 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ółowoMatematyczne 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ółowoAlgorytmy 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ółowoWykład z Technologii Informacyjnych. Piotr Mika
Wykład z Technologii Informacyjnych Piotr Mika Uniwersalna forma graficznego zapisu algorytmów Schemat blokowy zbiór bloków, powiązanych ze sobą liniami zorientowanymi. Jest to rodzaj grafu, którego węzły
Bardziej szczegółowoWYŻ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ółowoEGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew
1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;
Bardziej szczegółowoZnajdowanie wyjścia z labiryntu
Znajdowanie wyjścia z labiryntu Zadanie to wraz z problemem pakowania najcenniejszego plecaka należy do problemów optymalizacji, które dotyczą znajdowania najlepszego rozwiązania wśród wielu możliwych
Bardziej szczegółowoAlgorytmiczna 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ółowoWstęp do programowania
Wieczorowe Studia Licencjackie Wrocław, 9.01.2007 Wstęp do programowania Wykład nr 13 Listy usuwanie elementów Poniżej prezentujemy funkcję, która usuwa element o podanej wartości pola wiek z nieuporządkowanej
Bardziej szczegółowoznajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
Bardziej szczegółowoZłożoność obliczeniowa zadania, zestaw 2
Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze
Bardziej szczegółowoDigraf. 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ółowoZapisywanie algorytmów w języku programowania
Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym
Bardziej szczegółowo1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
Bardziej szczegółowoDrzewa poszukiwań binarnych
1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie
Bardziej szczegółowoGraf. 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ółowoMatematyka 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ółowoTEORIA 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ółowoPoprawność semantyczna
Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych
Bardziej szczegółowoZaawansowane algorytmy i struktury danych
Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)
Bardziej szczegółowoAlgorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek
Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących
Bardziej szczegółowoPodstawy Informatyki. Metody dostępu do danych
Podstawy Informatyki c.d. alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej 2 Sformułowanie
Bardziej szczegółowoInstrukcje dla zawodników
Instrukcje dla zawodników Nie otwieraj arkusza z zadaniami dopóki nie zostaniesz o to poproszony. Instrukcje poniżej zostaną ci odczytane i wyjaśnione. 1. Arkusz składa się z 3 zadań. 2. Każde zadanie
Bardziej szczegółowoDrzewa 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ółowoMatematyka dyskretna - 7.Drzewa
Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja
Bardziej szczegółowoRozwią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ółowoANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:
ANALIZA ALGORYTMÓW Analiza algorytmów polega między innymi na odpowiedzi na pytania: 1) Czy problem może być rozwiązany na komputerze w dostępnym czasie i pamięci? 2) Który ze znanych algorytmów należy
Bardziej szczegółowoAlgorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane
Algorytmy i struktury danych Wykład 4 Tablice nieporządkowane i uporządkowane Tablice uporządkowane Szukanie binarne Szukanie interpolacyjne Tablice uporządkowane Szukanie binarne O(log N) Szukanie interpolacyjne
Bardziej szczegółowoSpacery losowe generowanie realizacji procesu losowego
Spacery losowe generowanie realizacji procesu losowego Michał Krzemiński Streszczenie Omówimy metodę generowania trajektorii spacerów losowych (błądzenia losowego), tj. szczególnych procesów Markowa z
Bardziej szczegółowoHaszowanie (adresowanie rozpraszające, mieszające)
Haszowanie (adresowanie rozpraszające, mieszające) Tadeusz Pankowski H. Garcia-Molina, J.D. Ullman, J. Widom, Implementacja systemów baz danych, WNT, Warszawa, Haszowanie W adresowaniu haszującym wyróżniamy
Bardziej szczegółowoPrzykładowe rozwiązania
Przykładowe rozwiązania Poniższy dokument zawiera przykładowe rozwiązania zadań z I etapu I edycji konkursu (2014 r.). Rozwiązania w formie takiej jak przedstawiona niżej uzyskałyby pełną liczbę punktów
Bardziej szczegółowoAlgorytmy i złożoności. Wykład 3. Listy jednokierunkowe
Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie
Bardziej szczegółowoMarek 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ółowoTeoria obliczeń i złożoność obliczeniowa
Teoria obliczeń i złożoność obliczeniowa Kontakt: dr hab. inż. Adam Kasperski, prof. PWr. pokój 509 B4 adam.kasperski@pwr.wroc.pl materiały + informacje na stronie www. Zaliczenie: Egzamin Literatura Problemy
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów
Bardziej szczegółowoTEORIA 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ółowoWstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa
Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa M. Czoków, J. Piersa 2012-01-10 1 Łańcucha Markowa 2 Istnienie Szukanie stanu stacjonarnego 3 1 Łańcucha Markowa 2 Istnienie Szukanie stanu stacjonarnego
Bardziej szczegółowoStruktury 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ółowoDynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)
Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013
Bardziej szczegółowoProgramowanie dynamiczne cz. 2
Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy
Bardziej szczegółowoGrafy 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ółowoEgzamin, AISDI, I termin, 18 czerwca 2015 r.
Egzamin, AISDI, I termin, 18 czerwca 2015 r. 1 W czasie niezależnym do danych wejściowych działają algorytmy A. sortowanie bąbelkowego i Shella B. sortowanie szybkiego i przez prosty wybór C. przez podział
Bardziej szczegółowoWybrane podstawowe rodzaje algorytmów
Wybrane podstawowe rodzaje algorytmów Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii informatycznych
Bardziej szczegółowoPRÓBNY EGZAMIN MATURALNY Z INFORMATYKI
PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI POZIOM ROZSZERZONY ARKUSZ I STYCZEŃ 2011 Instrukcja dla zdającego 1. Sprawdź, czy arkusz egzaminacyjny zawiera 9 stron (zadania 1 3). Ewentualny brak zgłoś przewodniczącemu
Bardziej szczegółowo< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >
Typy indeksów Indeks jest zakładany na atrybucie relacji atrybucie indeksowym (ang. indexing field). Indeks zawiera wartości atrybutu indeksowego wraz ze wskaźnikami do wszystkich bloków dyskowych zawierających
Bardziej szczegółowoAlgorytmy i struktury danych
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i struktury danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 5: Algorytmy
Bardziej szczegółowoProgramowanie dynamiczne i algorytmy zachłanne
Programowanie dynamiczne i algorytmy zachłanne Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii
Bardziej szczegółowoZł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ółowoHeurystyczne metody przeszukiwania
Heurystyczne metody przeszukiwania Dariusz Banasiak Katedra Informatyki Technicznej W4/K9 Politechnika Wrocławska Pojęcie heurystyki Metody heurystyczne są jednym z ważniejszych narzędzi sztucznej inteligencji.
Bardziej szczegółowoAlgorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2
Algorytmy i struktury danych Wykład 6 Tablice rozproszone cz. 2 Na poprzednim wykładzie Wiele problemów wymaga dynamicznych zbiorów danych, na których można wykonywać operacje: wstawiania (Insert) szukania
Bardziej szczegółowoProgramowanie i techniki algorytmiczne
Temat 2. Programowanie i techniki algorytmiczne Realizacja podstawy programowej 1) wyjaśnia pojęcie algorytmu, podaje odpowiednie przykłady algorytmów rozwiązywania różnych 2) formułuje ścisły opis prostej
Bardziej szczegółowoMatematyczne 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ółowoE: 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ółowo1 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ółowoZAGADNIENIE TRANSPORTOWE
ZAGADNIENIE TRANSPORTOWE ZT jest specyficznym problemem z zakresu zastosowań programowania liniowego. ZT wykorzystuje się najczęściej do: optymalnego planowania transportu towarów, przy minimalizacji kosztów,
Bardziej szczegółowoDrzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew
Drzewa Las - graf, który nie zawiera cykli Drzewo - las spójny Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew Niech T graf o n wierzchołkach będący
Bardziej szczegółowoAlgorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny
Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu danych
Bardziej szczegółowoGrafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz
Grafy (3): drzewa Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków UTP Bydgoszcz 13 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 1 / 107 Drzewo Definicja. Drzewo to graf acykliczny
Bardziej szczegółowoWstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel
Wstęp do programowania Drzewa Piotr Chrząstowski-Wachtel Drzewa Drzewa definiują matematycy, jako spójne nieskierowane grafy bez cykli. Równoważne określenia: Spójne grafy o n wierzchołkach i n-1 krawędziach
Bardziej szczegółowoAlgorytmy 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ółowoZadanie 1. Suma silni (11 pkt)
2 Egzamin maturalny z informatyki Zadanie 1. Suma silni (11 pkt) Pojęcie silni dla liczb naturalnych większych od zera definiuje się następująco: 1 dla n = 1 n! = ( n 1! ) n dla n> 1 Rozpatrzmy funkcję
Bardziej szczegółowoRozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Bardziej szczegółowoMatematyka 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ółowoAnaliza konstrukcji zawierających wskaźniki. Piotr Błaszyński
Analiza konstrukcji zawierających wskaźniki Piotr Błaszyński Wskaźniki podejście naiwne: while(ptr!=null){ a[i] = *ptr; i++; ptr++; } po zmianie: N=length(ptr); alias_ptr = ptr; for(j=0 ; j
Bardziej szczegółowoAlgorytmy i Struktury Danych, 9. ćwiczenia
Algorytmy i Struktury Danych, 9. ćwiczenia 206-2-09 Plan zajęć usuwanie z B-drzew join i split na 2-3-4 drzewach drzepce adresowanie otwarte w haszowaniu z analizą 2 B-drzewa definicja każdy węzeł ma następujące
Bardziej szczegółowoSegmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda
Segmentacja obrazów cyfrowych Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp autor: Łukasz Chlebda 1 Segmentacja obrazów cyfrowych - temat pracy Temat pracy: Aplikacja do segmentacji
Bardziej szczegółowoPodstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują
Bardziej szczegółowoAlgorytmy 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ółowoAlgorytmy 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ółowoKlasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny
Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady
Bardziej szczegółowoWstęp do sieci neuronowych, wykład 11 Łańcuchy Markova
Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova M. Czoków, J. Piersa 2010-12-21 1 Definicja Własności Losowanie z rozkładu dyskretnego 2 3 Łańcuch Markova Definicja Własności Losowanie z rozkładu
Bardziej szczegółowoLiteratura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:
Temat: Powtórzenie wiadomości z PODSTAW INFORMATYKI I: Pojęcia: złożoność czasowa algorytmu, rząd funkcji kosztu. Algorytmy. Metody programistyczne. Struktury danych. Literatura. A. V. Aho, J.E. Hopcroft,
Bardziej szczegółowoTechniki wyszukiwania danych haszowanie
Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Techniki wyszukiwania danych haszowanie 1 Cel
Bardziej szczegółowoMetody Programowania
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Metody Programowania www.pk.edu.pl/~zk/mp_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 8: Wyszukiwanie
Bardziej szczegółowo2012-01-16 PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew
0-0-6 PLAN WYKŁADU Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew BAZY DANYCH Wykład 9 dr inż. Agnieszka Bołtuć INDEKSY - DEFINICJE Indeksy to pomocnicze struktury
Bardziej szczegółowoKolorowanie 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ółowoPorządek symetryczny: right(x)
Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)
Bardziej szczegółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowoMacierze. Rozdział Działania na macierzach
Rozdział 5 Macierze Funkcję, która każdej parze liczb naturalnych (i, j) (i 1,..., n; j 1,..., m) przyporządkowuje dokładnie jedną liczbę a ij F, gdzie F R lub F C, nazywamy macierzą (rzeczywistą, gdy
Bardziej szczegółowo