Algorytmy z powrotami
|
|
- Alicja Niemiec
- 7 lat temu
- Przeglądów:
Transkrypt
1 Algorytmy z powrotami Algorytmy z powrotami są wykorzystywane do rozwiązywania problemów, w których z określonego zbioru jest wybierana sekwencja obiektów tak, aby spełniała ona określone kryteria. Klasycznym przykładem jest rozwiązanie problemu n-królowych. Zadaniem jest ustawienie n-królowych na szachownicy n n w taki sposób, aby się wzajemnie nie szachowały. Sekwencją w tym problemie jest n pozycji, na których są umieszczone królowe, zbiorem dla każdego wyboru jest n 2 możliwych pól na szachownicy. Kryterium jest takie, że królowe nie mogą się wzajemnie szachować. Algorytmy z powrotami są zmodyfikowanym przeszukiwaniem drzewa ( z korzeniem ) w głąb. Na początku odwiedzamy korzeń, a poźniej po przejściu do węzła przeglądane są wszystkie węzły potomne. Generalnie przeszukiwanie nie wymaga określonego porządku odwiedzania węzłów, ale wygodniej jest gdy przeszukiwane są węzły od lewej do prawej. Przykład przeszukiwania drzewa w głąb z węzłami ponumerowanymi w kolejności ich odwiedzania:
2 Węzły są ponumerowane w kolejności ich odwiedzania. Jak widać podczas wyszukiwania w głąb przechodzi się po ścieżce tak głęboko, jak jest to możliwe, aż do osiągnięcia ślepego zaułka. Następnie wracamy do węzła z niodwiedzonymi węzłami potomnymi i znów przechodzimy w głąb tak daleko, jak jest to możliwe. Rozważmy ustawienie 4 królowych na szachownicy 4 4. Problem można rozwiązać przez ustawienie królowych w kolejnych wierszach i sprawdzanie, która kombinacja kolumn daje prawidłowe rozwiązanie. Daje to = 256 potencjalnych rozwiazań. Można tworzyć potencjalne rozwiązania przez tworzenie drzewa: w węzłach drzewa z poziomu 1 będą zapisane kolumny wybrane dla pierwszej królowej, w węzłach poziomu 2 wybrane kolumny dla drugiej królowej, etc. Ścieżka od węzła głównego do liścia jest potencjalnym rozwiazaniem. Liść to jest węzeł bez węzłów potomnych. Drzewo takie nazywamy drzewem przestrzeni stanów. Fragment drzewa przestrzeni stanów pokazano poniżej:
3 Całe drzewo ma 256 liści, po jednym dla każdego potencjalnego rozwiązania. W każdym węźle przechowywana jest para liczb <i,j>, oznaczająca, że królowa z wiersza i jest umieszczona w kolumnie j. Aby określić rozwiązanie, węzły są odwiedzane zgodnie z metodą przeszukiwania w głąb, w którym węzły pochodne są odwiedzane od strony lewej do prawej. Pierwsze sprawdzane scieżki to: [<1.1><2.1><3.1><4.1>] [<1.1><2.1><3.1><4.2>] [<1.1><2.1><3.1><4.3>] [<1.1><2.1><3.1><4.4>] [<1.1><2.1><3.2><4.1>] Algorytm z powrotami jest algorytmem, w którym po zorientowaniu się, że węzeł prowadzi do ślepego zaułka, wracamy do węzła nadrzędnego i kontynuujemy wyszukiwanie od następnego węzła. Węzeł nazywamy nieobiecującym, gdy w czasie jego odwiedzania można określić, że nie może on doprowadzić do rozwiązania (przykład poniżej). W przeciwnym razie węzeł jest nazywany obiecującym. Algorytm z powrotami polega na wykonywaniu przeszukiwania w głąb drzewa przestrzeni stanów, aby sprawdzić czy węzeł jest obiecujący, czy nie. Jeżeli węzeł nie jest obiecujący, wracamy do węzła nadrzędnego.
4 Ogólny algorytm z powrotami: void checknode (node v) { node u; if (promising(v)) if(istnieje rozwiązanie dla v) drukuj rozwiązanie; else for(każdy węzeł pochodny u węzła v) checknode(u); Algorytm z powrotami jest identyczny jak przeszukiwanie w głąb, poza tym, że węzły pochodne są odwiedzane tylko w przypadku, gdy węzeł macierzysty jest obiecujący i nie znaleziono w nim rozwiązania Dla problemu n-królowych funkcja promising zwraca false, jeżeli węzeł i dowolny z jego przodków oznaczają umieszczenie królowej w tej samej kolumnie lub przekątnej (oznaczenie x na rys.).
5 Algorytm z powrotami sprawdza 27 węzłów w celu odszukania rozwiązania, bez zastosowania tego algorytmu trzeba sprawdzić 155 wezłów w celu odszukania tego samego rozwiązania. Nieefektywność w ogólnym algorytmie z powrotami (procedura checknode) wynika z faktu, że sprawdzamy czy węzeł jest obiecujący, po przekazaniu go do procedury. Rekordy aktywacji wezłów nieobiecujących są niepotrzebnie odkładane na stos rekordów aktywacji. Algorytm ze sprawdzeniem czy wezeł jest obiecujący, przed wywołaniem rekurencyjnym, wyglądałby następujaco:
6 void expand (node v) { node u; for (każdy węzeł pochodny u węzła v) if (promising(u)) if (istnieje rozwiazanie dla u) drukuj rozwiazanie; else expand(u); Wersja poprzednia jest łatwiejsza do zrozumienia, gdyż wszystkie operacje są wykonywane w checknode tzn. : sprawdzanie czy węzeł jest obiecujący; jeżeli jest obiecujący to czy zawiera rozwiązanie; drukowanie rozwiązania. Problem n-królowych Funkcja sprawdzająca, czy węzeł jest obiecujący, musi sprawdzać, czy dwie królowe są w tej samej kolumnie lub na tej samej przekątnej. Sprawdzenie kolumny to: col(i) = col(k) gdzie col(i) jest kolumną w której jest umieszczona królowa z i-tego wiersza. Sprawdzenie przekątnej to: col(i) - col(k) = i k lub col(i) - col(k) = k i
7 Przykładowo: col(6) col(3) = 4-1 = 3 = 6-3 col(6) col(2) = 4-8 = -4 = 2-6 Algorytm z powrotami dla problemu n-królowych Problem: umieść n królowych na szachownicy w taki sposób, żeby żadne dwie królowe nie znalazły się w tym samym wierszu, tej samej kolumnie oraz na tych samych przekątnych. Dane wejściowe: dodatnia liczba całkowita n. Wynik: wszystkie możliwe sposoby na umieszczenie n królowych na szachownicy n n tak, aby się wzajemnie nie szachowały. Każdy wynik cząstkowy składa się z tablicy liczb całkowitych col, indeksowanych od 1 do n, gdzie col(i) jest kolumną, w której umieszczona została królowa z wiersza i.
8 void queens (index i) { index j; if (promising(i) ) if(i= = n) cout<< od col[i] do col[n]; else for(j=1;j<=n;j++){//sprawdzenie czy królow col[i+1] = j; //w i+1-tym wierszu moze queens(i+1); //byc ustawiona w kazdej //z n kolumn bool promising (index i) { index k; bool switch; k=1; switch = true; //Sprawdź czy jakas //krolowa szachuje królową while(k<i && switch){ //w i-tym wierszu if(col[i]==col[k] abs(col[i]-col[k])==i-k) switch = false; k++; return switch; Algorytm powyższy tworzy wszystkie rozwiązania problemu n- królowych. Przerobienie programu tak, aby zatrzymywał się po znalezieniu pierwszego rozwiazania, jest proste. W analizie algorytmu należy określić ilość sprawdzonych węzłów jako funkcję wartości n, czyli liczby królowych. Górną granicę liczby węzłów w drzewie przestrzeni stanów można dośc łatwo policzyć.
9 Drzewo zawiera 1 węzeł na poziomie 0, n węzłów na poziomie 1, n 2 węzłów na poziomie 2 oraz n n na poziomie n. Całkowita liczba węzłów wynosi 1+n+n 2 +n 3 + +n n = (n n+1 1) / (n 1) Przykladowo, dla n=8 mamy ( ) / (8 1) = węzłów Analiza ta jest nie w pełni użyteczna bo zadaniem algorytmu z powrotami jest uniknięcie sprawdzania wielu z tych węzłów. Można również określić górną granicę ilości węzłów obiecujących (dla n=8). Pierwsza królowa może być umieszczona w dowolnej z ośmiu kolumn, druga może być umieszczona w jednej z siedmiu kolumn. Po ustawieniu drugiej królowej dla trzeciej zostanie do wyboru sześć kolumn. Dlatego mamy co najwyżej: ! = obiecujących węzłów. Ogólnie dla dowolnego n mamy co nawyżej 1 + n + n(n-1) + n(n-1)(n-2) + + n! obiecujących węzłów. Analiza ta nie jest pełna, gdyż po pierwsze nie bierze pod uwagę sprawdzania przekątnych, po drugie całkowita liczba odwiedzanych węzłów zawiera zarówno węzły obiecujące, jak i nieobiecujące. Najprostszą metodą byloby uruchomienie programu na komputerze i zliczanie odwiedzanych węzłów.
10 n Algorytm A Algorytm B Algorytm z powrotami Liczba węzłów Liczba potencjalnych Liczba węzłów Liczba sprawdzanych rozwiązań n! sprawdzanych znalezionych (bez powrotów) (rozne kolumny) (z powrotami) węzłów obiec Oczywiście, uruchamianie algorytmu w celu określenia jego efektywności nie jest faktyczną analizą. Zadaniem analizy jest określenie jak efektywny jest algorytm, jeszcze przed jego uruchomieniem. Co można zrobić w takiej sytuacji? Algorytmy Monte-Carlo Drzewa przestrzeni stanów dla algorytmów z powrotami mają wykładniczo lub szybciej roznąca liczbę węzłów. Warto zauważyć, że jeśli mamy dwa przypadki z taką samą wartością n, jeden z nich może wymagać sprawdzenia kilku węzłów, natomiast inne wymagają sprawdzenia całego drzewa przestrzeni stanów. Jeżeli oszacujemy, jak efektywny jest dany algorytm z powrotami dla danego przypadku, możemy zdecydować, czy zastosowanie go jest sensowne. Algorytm Monte-Carlo to algorytm probabilistyczny. Jest to taki algorytm, w którym następna wykonywana instrukcja jest czasami określana w sposób losowy, zgodnie z pewnym rozkładem losowym.
11 Algorytm deterministyczny to taki, w którym przedstawiony przypadek nie może mieć miejsca. Algorytm Monte-Carlo pozwala oszacować spodziewaną wartość zmiennej losowej, zdefiniowanej w przestrzeni próbek, na podstawie średniej wartości losowych próbek z tej przestrzeni. Nie ma gwarancji, że to oszacowanie jest bliskie właściwej wartości oczekiwanej, ale prawdopodobieństwo, że jest bliskie, zwiększa się ze wzrostem czasu działania algorytmu (ilosci uruchomień algorytmu). Jak wykorzystać algorytm Monte-Carlo do oszacowania efektywności algorytmu z powrotami? Generujemy w drzewie typową ścieżkę, składajacą się z węzłów, które powinny być sprawdzone w danym przypadku, a nastepnie szacujemy liczbę węzłów, odgałęziających się od tej ścieżki. Oszacowanie to daje w wyniku szacunkową liczbę węzłów, które należy sprawdzić w celu znalezienia wszystkich rozwiązań. Inaczej mówiąc, jest to szacunkowa liczba węzłów w przeciętnym drzewie stanów. Muszą być spełnione dwa warunki: we wszystkich węzłach na tym samym poziomie drzewa przestrzeni stanów powinna być używana ta sama funkcja określająca, czy węzeł jest obiecujący węzły na tym samym poziomie w drzewie przestrzeni stanów muszą mieć taka samą liczbę potomków. Algorytm dla n-królowych spełnia te warunki. Technika Monte-Carlo wymaga losowego generowania obiecującego potomka węzła, zgodnie z rozkładem normalnym, czyli generowania liczb losowych. Sposób realizacji: niech m 0 będzie liczbą obiecujących potomków korzenia losowo generujemy obiecujący węzeł pochodny na poziomie 1. Niech m 1 będzie liczbą obiecujących potomków tego węzła.
12 losowo wygeneruj obiecujący węzeł dla węzła uzyskanego w poprzednim kroku. Niech m 2 będzie liczbą obiecujących potomków tego węzła. Losowo wygeneruj obiecujący węzeł dla węzła uzyskanego w poprzednim kroku. Niech m i będzie liczbą obiecujących potomków tego węzła. Proces jest kontynuowany, dopóki nie zostaną znalezione żadne obiecujące węzły potomne. m i jest szacunkową średnią liczbą obiecujących węzłów na poziomie i. Niech t i = całkowita liczba potomków węzła na poziomie i Wszystkie t i węzłów zostaje sprawdzone i tylko m i obiecujacych węzłów potomnych ma sprawdzone węzły potomne. Szacunkowa liczba węzłów sprawdzonych przez algorytm z powrotami w celu wyszukania wszystkich rozwiązań wynosi 1+ t 0 + m 0 t 1 + m 0 m 1 t 2 + m 0 m 1 m i-1 t i +... Ogólny algorytm obliczający tą średnią może wygladać następująco ( mprod = m 0 m 1 m i-1 ). Szacowanie Monte-Carlo Problem: oszacuj efektywność algorytmu z powrotami, korzystając z algorytmu Monte Carlo. Dane wejściowe: problem rozwiazywany przez algorytm z powrotami. Wynik: szacunkowa liczba węzłów w przyciętym drzewie przestrzeni stanów generowanych przez algorytm, który jest liczbą węzłów, jaką musi sprawdzić algorytm w celu znalezienia wszystkich rozwiązań danego przypadku.
13 int estimate () { node v; int m,mprod,t,numnodes; v = korzeń drzewa stanów; numnodes = 1; m=1; mprod=1; while (m!=0) { t=liczba potomków v; mprod=mprod*m; numnodes=numnodes+mprod*t; m=liczba obiecujacych potomków v; if (m!=0) v=losowo wybrany obiecujacy potomek v; return numnodes; Dla algorytmu problemu n-królowych może to wyglądać. Oszacowanie metodą Monte Carlo dla algorytmu z powrotami problem n-królowych Problem: oszacowanie efektywności algorytmu Dane wejściowe: dodatnia wartość całkowita n Wynik: szacunkowa liczba węzłów w przyciętym drzewie przestrzeni stanów, generowanym przez algorytm liczba węzłów, jakie muszą zostać sprawdzone przez algorytm przed wyszukaniem wszystkich sposobów na ustawienie n królowych na szachownicy n n tak, aby się wzajemnie nie szachowały.
14 int estimate_n_queens (int n) { index i,j,col[1..n]; int m,mprod,numnodes; set_of_index prom_children; i=0; numnodes=1; m=1; mprod=1; while (m!=0 && i!=n) { mprod=mprod*m; numnodes=numnodes+mprod*n;//liczba wezłów t i++; // wynosi n m=0; prom_children= ; //Inicjalizacja zbioru for(j=1;j<=n;j++){ //obiecujacych potomkow col[i]=j; //pustym zbiorem if(promising(i)){ //Okreslenie obiecuj. m++; //potomkow. prom_children=prom_children {j; if (m!=0){ j= losowy wybór z prom_children; col[i]=j; return numnodes; Algorytm Monte Carlo można uruchomić wielokrotnie i jako właściwą wartość wykorzystać średnią z otrzymanych wyników. Trzeba zauwazyć, że choć prawdopobieństwo uzyskania dobrego oszacowania jest wysokie przy wielokrotnym uruchomieniu to nigdy nie mamy gwarancji, że jest to dobre oszacowanie.
15 Oszacowanie uzyskiwane dla dowolnego przypadku zastosowania metody Monte Carlo jest prawdziwe tylko dla tego pojedynczego przypadku. Zdarza się, że gdy mamy dwa różne przypadki dla takiej samej wartości n, jeden może wymagać sprawdzenia niewielkiej liczby węzłów, natomiast drugi przejrzenia całego drzewa przestrzeni stanów.
Porzą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ółowoPrzykładowe B+ drzewo
Przykładowe B+ drzewo 3 8 1 3 7 8 12 Jak obliczyć rząd indeksu p Dane: rozmiar klucza V, rozmiar wskaźnika do bloku P, rozmiar bloku B, liczba rekordów w indeksowanym pliku danych r i liczba bloków pliku
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.
POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie
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ół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ółowoWykład 2. Drzewa zbalansowane AVL i 2-3-4
Wykład Drzewa zbalansowane AVL i -3-4 Drzewa AVL Wprowadzenie Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Drzewa -3-4 Definicja drzewa -3-4 Operacje wstawiania
Bardziej szczegółowoAlgorytmy z powrotami. Algorytm minimax
Algorytmy z powrotami. Algorytm minimax Algorytmy i struktury danych. Wykład 7. Rok akademicki: 2010/2011 Algorytm z powrotami rozwiązanie problemu budowane jest w kolejnych krokach, po stwierdzeniu (w
Bardziej szczegółowoWyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna
Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2016 1 / 8 Plan Wstęp Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz Zmiany w funkcji main()
Bardziej szczegółowoTypy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:
Strona 1 z 17 Typy danych 1. Dane tekstowe rozmaite słowa zapisane w różnych alfabetach: Rozwój metod badawczych pozwala na przesunięcie granicy poznawania otaczającego coraz dalej w głąb materii: 2. Dane
Bardziej szczegółowoJeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,
Oznaczenia: Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze, to interesuje nas złożoność obliczeniowa
Bardziej szczegółowoWysokość drzewa Głębokość węzła
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Bardziej szczegółowoAlgorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych
Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych 1 Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych Alexander Denisjuk Prywatna Wyższa Szkoła Zawodowa w Giżycku
Bardziej szczegółowo. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019
.. Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2019 1 / 39 Plan.1 Wstęp.2 Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz.3.4 Zmiany w
Bardziej szczegółowoStrategia "dziel i zwyciężaj"
Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania
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ół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ół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ółowoSortowanie. Bartman Jacek Algorytmy i struktury
Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39
Bardziej szczegółowoAlgorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski
Algorytmy i struktury danych Wykład 5: Drzewa Dr inż. Paweł Kasprowski pawel@kasprowski.pl Drzewa Struktury przechowywania danych podobne do list ale z innymi zasadami wskazywania następników Szczególny
Bardziej szczegółowoPrzeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279
Wykład 8 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 sformułowanie problemu przegląd drzewa poszukiwań przykłady problemów wybrane narzędzia programistyczne J. Cichoń, P. Kobylański
Bardziej szczegółowoWykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym
1 Wykład 6 Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym ELIMINACJA GAUSSA Z WYBOREM CZĘŚCIOWYM ELEMENTÓW PODSTAWOWYCH 2 Przy pomocy klasycznego algorytmu eliminacji
Bardziej szczegółowoAlgorytmy i Struktury Danych
Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych
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ółowoPodstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji
Podstawy programowania Laboratorium Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji Instrukcja warunkowa if Format instrukcji warunkowej Przykład 1. if (warunek) instrukcja albo zestaw
Bardziej szczegółowoMetody Kompilacji Wykład 7 Analiza Syntaktyczna
Metody Kompilacji Wykład 7 Analiza Syntaktyczna Parsowanie Parsowanie jest to proces określenia jak ciąg terminali może być generowany przez gramatykę. Włodzimierz Bielecki WI ZUT 2/57 Parsowanie Dla każdej
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ółowoWykład 8. Drzewa AVL i 2-3-4
Wykład 8 Drzewa AVL i 2-3-4 1 Drzewa AVL Ø Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Ø Drzewa 2-3-4 Definicja drzewa 2-3-4 Operacje wstawiania i usuwania Złożoność
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ół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 zadania podstawowe
Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą
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ółowoALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH Temat 4: Realizacje dynamicznych struktur danych. Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/
Bardziej szczegółowoPodstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy
1 Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com
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ółowoTwój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).
Powrót Twój wynik: 4 punktów na 6 możliwych do uzyskania (6667 %). Nr Opcja Punkty Poprawna Odpowiedź Rozważmy algorytm AVLSequence postaci: 1 Niech drzewo będzie rezultatem działania algorytmu AVLSequence
Bardziej szczegółowoMetoda podziału i ograniczeń
Seminarium: Algorytmy heurystyczne Metoda podziału i ograniczeń Mateusz Łyczek Wrocław, 16 marca 011 r. 1 Metoda podziału i ograniczeń Metoda podziału i ograniczeń służy do rozwiązywania problemów optymalizacyjnych.
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ółowoAlgorytm selekcji Hoare a. Łukasz Miemus
Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego
Bardziej szczegółowoPodstawy Informatyki. Wykład 6. Struktury danych
Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą
Bardziej szczegółowoliniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:
Sortowanie stogowe Drzewo binarne Binary Tree Dotychczas operowaliśmy na prostych strukturach danych, takich jak tablice. W tablicy elementy ułożone są zgodnie z ich numeracją, czyli indeksami. Jeśli za
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ółowoAlgorytmy i Struktury Danych
Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu
Bardziej szczegółowoDrzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.
Drzewa binarne Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0 i T 1 są drzewami binarnymi to T 0 T 1 jest drzewem binarnym Np. ( ) ( ( )) Wielkość drzewa
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ółowododatkowe operacje dla kopca binarnego: typu min oraz typu max:
ASD - ćwiczenia IX Kopce binarne własność porządku kopca gdzie dla każdej trójki wierzchołków kopca (X, Y, Z) porządek etykiet elem jest następujący X.elem Y.elem oraz Z.elem Y.elem w przypadku kopca typu
Bardziej szczegółowoRozwiązanie. #include <cstdlib> #include <iostream> using namespace std;
Programowanie C++ Zadanie 1 Napisz program do obliczenia sumy i iloczynu ciągu liczb zakooczonego liczbą zero. Zakładamy, że ciąg zawiera co najmniej jedną liczbę (założenie to jest konieczne przy obliczeniu
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ółowoDrzewa BST i AVL. Drzewa poszukiwań binarnych (BST)
Drzewa ST i VL Drzewa poszukiwań binarnych (ST) Drzewo ST to dynamiczna struktura danych (w formie drzewa binarnego), która ma tą właściwość, że dla każdego elementu wszystkie elementy w jego prawym poddrzewie
Bardziej szczegółowoprowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325
PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj
Bardziej szczegółowoWstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)
1 Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną) Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,
Bardziej szczegółowoUniwersytet 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ółowoPętle. Dodał Administrator niedziela, 14 marzec :27
Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać
Bardziej szczegółowoJak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest
Pętle Pętla to pewien fragment kodu, który jest wykonywany wielokrotnie. Wyobraź sobie taką sytuację. Piszesz program do szyfrowania danych. Dane są szyfrowane kolejno bajt po bajcie. Załóżmy, że plik
Bardziej szczegółowoMetoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.
Plan Procedura decyzyjna Reguły α i β - algorytm Plan Procedura decyzyjna Reguły α i β - algorytm Logika obliczeniowa Instytut Informatyki 1 Procedura decyzyjna Logiczna konsekwencja Teoria aksjomatyzowalna
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ółowoPodstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Bardziej szczegółowoAbstrakcyjne struktury danych - stos, lista, drzewo
Sprawozdanie Podstawy Informatyki Laboratoria Abstrakcyjne struktury danych - stos, lista, drzewo Maciej Tarkowski maciek@akom.pl grupa VII 1/8 1. Stos Stos (ang. Stack) jest podstawową liniową strukturą
Bardziej szczegółowoZasady programowania Dokumentacja
Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika
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ółowoStos LIFO Last In First Out
Stos LIFO Last In First Out Operacje: push - dodanie elementu na stos pop - usunięcie elementu ze stosu empty - sprawdzenie, czy stos jest pusty size - zwrócenie liczby elementów na stosie value (peek)
Bardziej szczegółowoWykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy
Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element
Bardziej szczegółowoOpis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja
Opis zagadnieo 1-3 Iteracja, rekurencja i ich realizacja Iteracja Iteracja to czynnośd powtarzania (najczęściej wielokrotnego) tej samej instrukcji (albo wielu instrukcji) w pętli. Mianem iteracji określa
Bardziej szczegółowoDefinicje wyższego poziomu
Definicje wyższego poziomu Interpreter Scheme-a nie będzie narzekad w przypadku wystąpienia niezdefionowanej zmiennej w ciele wyrażenia lambda dopóki nie będzie zastosowana Przykład braku informacji o
Bardziej szczegółowoObliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303
Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp
Bardziej szczegółowoDefinicja pliku kratowego
Pliki kratowe Definicja pliku kratowego Plik kratowy (ang grid file) jest strukturą wspierająca realizację zapytań wielowymiarowych Uporządkowanie rekordów, zawierających dane wielowymiarowe w pliku kratowym,
Bardziej szczegółowoALGORYTMY I STRUKTURY DANYCH
LGORTM I STRUKTUR DNH Temat 6: Drzewa ST, VL Wykładowca: dr inż. bigniew TRPT e-mail: bigniew.tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/ Współautorami wykładu
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ółowoWYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5
WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne
Bardziej szczegółowoInformatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki
Informatyka I Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Operacje relacji (porównania) A
Bardziej szczegółowoZadanie 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ółowoDrzewa 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ółowoMetoda Tablic Semantycznych
Procedura Plan Reguły Algorytm Logika obliczeniowa Instytut Informatyki Plan Procedura Reguły 1 Procedura decyzyjna Logiczna równoważność formuł Logiczna konsekwencja Procedura decyzyjna 2 Reguły α, β,
Bardziej szczegółowo9.9 Algorytmy przeglądu
14 9. PODSTAWOWE PROBLEMY JEDNOMASZYNOWE 9.9 Algorytmy przeglądu Metody przeglądu dla problemu 1 r j,q j C max były analizowane między innymi w pracach 25, 51, 129, 238. Jak dotychczas najbardziej elegancka
Bardziej szczegółowo5.9 Modyfikacja gry Kółko i krzyżyk
274 5.9 Modyfikacja gry Kółko i krzyżyk Zajmiemy się obecnie grą, której plansza jest widoczna na rys. 5.17 (aplikacja Do15.bpr). Rysunek 5.17: Plansza do gry śuma do 15 Jej celem jest zaznaczenie cyfr,
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ół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ół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ółowo4. Funkcje. Przykłady
4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni
Bardziej szczegółowoWykłady z Matematyki Dyskretnej
Wykłady z Matematyki Dyskretnej dla kierunku Informatyka dr Instytut Informatyki Politechnika Krakowska Wykłady na bazie materiałów: dra hab. Andrzeja Karafiata dr hab. Joanny Kołodziej, prof. PK Grafy
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 zrandomizowane
Algorytmy zrandomizowane http://zajecia.jakubw.pl/nai ALGORYTMY ZRANDOMIZOWANE Algorytmy, których działanie uzależnione jest od czynników losowych. Algorytmy typu Monte Carlo: dają (po pewnym czasie) wynik
Bardziej szczegółowodr inż. Paweł Myszkowski Wykład nr 11 ( )
dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 11 (11.05.2016) Plan prezentacji:
Bardziej szczegółowoLiczby losowe i pętla while w języku Python
Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1 Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak
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 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ółowoAlgorytmy i struktury danych
Algorytmy i struktury danych Zaawansowane algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Sortowanie za pomocą malejących przyrostów metoda Shella Metoda jest rozwinięciem metody sortowania
Bardziej szczegółowoJęzyki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Bardziej szczegółowoInstytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów
Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa Diagnostyka i niezawodność robotów Laboratorium nr 6 Model matematyczny elementu naprawialnego Prowadzący: mgr inż. Marcel Luzar Cele ćwiczenia:
Bardziej szczegółowoProgramowanie strukturalne i obiektowe. Funkcje
Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy
Bardziej szczegółowoTablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011
Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu
Bardziej szczegółowoAlgorytmy i Struktury Danych
Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 8 1 /
Bardziej szczegółowoBudowa i generowanie planszy
Gra Saper została napisana w. Jest dostępna w każdej wersji systemu Windows. Polega na odkrywaniu zaminowanej planszy tak, aby nie trafić na minę. Gra działa na bardzo prostej zasadzie i nie wymaga zaawansowanego
Bardziej szczegółowoWstęp do programowania
wykład 6 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Losowanie liczb całkowitych Dostępne biblioteki Najprostsze losowanie liczb całkowitych można wykonać za pomocą funkcji
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ół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ół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
KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala
Bardziej szczegółowoAlgorytmy sortujące i wyszukujące
Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.
Bardziej szczegółowoWykład 6. Drzewa poszukiwań binarnych (BST)
Wykład 6 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST
Bardziej szczegółowo