Zadania obliczeniowe, algorytmy i złożoność obliczeniowa

Slides:



Advertisements
Podobne prezentacje
Znaki informacyjne.
Advertisements

Joanna Sawicka Wydział Nauk Ekonomicznych, Uniwersytet Warszawski
Sortowanie przez scalanie
Algorytmy sortowania i przeszukiwania
Instrukcje - wprowadzenie
Wprowadzenie do informatyki Wykład 6
Obserwowalność System ciągły System dyskretny
Grażyna Mirkowska PJWSTK 15 listopad 2000
Wykład 06 Metody Analizy Programów System Hoare
Imperatywne modele obliczeń Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Algorytmy – różne przykłady
Liczby pierwsze.
Teoretyczne podstawy informatyki
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
PROGRAM OPERACYJNY KAPITAŁ LUDZKI Priorytet III, Działanie 3.2
ZLICZANIE cz. II.
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
Zadania obliczeniowe, algorytmy i złożoność obliczeniowa
WYKŁAD 2. Kolorowanie wierzchołków
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Systemy operacyjne Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Metody Sztucznej Inteligencji w Sterowaniu 2009/2010Optymalizacja miary efektywności działania sztucznych sieci neuronowych Dr hab. inż. Kazimierz Duzinkiewicz,
Odkrywanie wzorców sekwencji
Algorytmy grafowe Reprezentacja w pamięci
Klasyfikacja systemów
Transformacja Z (13.6).
Algorytmy genetyczne.
Pytania konkursowe.
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Technika Mikroprocesorowa 1
Algorytmy i struktury danych
Algorytmy i struktury danych
Algorytmy i Struktury Danych Sortowanie
Wyrażenia algebraiczne
IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM
Algorytmy i struktury danych
Badania operacyjne Wykład 5.
Obserwatory zredukowane
Algorytmy i struktury danych
KOLEKTOR ZASOBNIK 2 ZASOBNIK 1 POMPA P2 POMPA P1 30°C Zasada działanie instalacji solarnej.
Modelowanie i identyfikacja 2010/2011Optymalizacja miary efektywności działania sztucznych sieci neuronowych Dr hab. inż. Kazimierz Duzinkiewicz, Katedra.
1. ŁATWOŚĆ ZADANIA (umiejętności) 2. ŁATWOŚĆ ZESTAWU ZADAŃ (ARKUSZA)
ALGORYTMY I STRUKTURY DANYCH
Stabilność Stabilność to jedno z najważniejszych pojęć dynamiki systemów i teorii sterowania W większości przypadków, stabilność jest warunkiem koniecznym.
-17 Oczekiwania gospodarcze – Europa Wrzesień 2013 Wskaźnik > +20 Wskaźnik 0 a +20 Wskaźnik 0 a -20 Wskaźnik < -20 Unia Europejska ogółem: +6 Wskaźnik.
Autor: Karol Podsiadło Kierujący pracą: dr inż. Ewa Płuciennik-Psota
EcoCondens Kompakt BBK 7-22 E.
Projekt Badawczo- Rozwojowy realizowany na rzecz bezpieczeństwa i obronności Państwa współfinansowany ze środków Narodowego Centrum Badań i Rozwoju „MODEL.
Obliczalność czyli co da się policzyć i jak Model obliczeń sieci liczące dr Kamila Barylska.
Testogranie TESTOGRANIE Bogdana Berezy.
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
Systemy dynamiczne 2014/2015Obserwowalno ść i odtwarzalno ść  Kazimierz Duzinkiewicz, dr hab. in ż. Katedra In ż ynierii Systemów Sterowania 1 Obserwowalność.
Wspomaganie Decyzji IV
Elementy geometryczne i relacje
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Algorytmy Genetyczne Anna Tomkowska Politechnika Koszalińska
NP-zupełność Problemy: rozwiązywalne w czasie wielomianowym - O(nk)
Wstęp do programowania Wykład 4
Temat 3: Podstawy programowania Algorytmy – 2 z 2 _________________________________________________________________________________________________________________.
Modelowanie matematyczne – złożoność obliczeniowa, teoria a praktyka
Rozdział 5 REKURENCJA.
Efektywność algorytmów
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

Zadania obliczeniowe, algorytmy i złożoność obliczeniowa Wstęp do Informatyki, część 2

Przeszukiwanie listy nieuporządkowanej Zapisy (records), umieszczone w przypadkowej kolejności pole klucza 1 2 3 ... i N zadany klucz Zadanie: Czy wśród N rekordów jest taki R(i), w którym zawartość wskazanego pola jest zgodna z zadanym kluczem, Jeśli tak – odczytaj ten R(i), Jeśli nie – napisz ‘nie ma’ J. Mieścicki, Wstęp do Informatyki, część 2

Przeszukiwanie listy nieuporządkowanej Dowolne liczby całkowite, umieszczone w przypadkowej kolejności, w kolejno ponumerowanych komórkach 1 31 2 15 3 ... i 7 N 25 ? zadana liczba (‘klucz’) 7 Zadanie: Czy jest wśród nich zadana liczba (np.‘7’), Jeśli tak – wypisz numer komórki, Jeśli nie – napisz ‘nie ma’ J. Mieścicki, Wstęp do Informatyki, część 2

Przeszukiwanie listy nieuporządkowanej start i := 0 i := i+1 i > N L(i)== K Pisz ‘nie ma’ Pisz i stop tak nie Dane: L[1:N] – wektor liczb całkowitych, L(i) – liczba na i-tej pozycji, N, K, i - liczby całkowite , K – klucz, i – indeks przeszukiwania. J. Mieścicki, Wstęp do Informatyki, część 2

Przeszukiwanie listy nieuporządkowanej start i := 0 i := i+1 i > N L(i)== K Pisz ‘nie ma’ Pisz i stop tak nie Czynności ‘jednorazowe’ (inicjalizacja, edycja wyników itp.) Czynności wykonywane wielokrotnie, (w najgorszym przypadku N razy) J. Mieścicki, Wstęp do Informatyki, część 2

Przeszukiwanie listy nieuporządkowanej Czas wykonania Zależność czasu wykonania od rozmiaru danych (N) jest liniowa, Mówi się, że złożoność obliczeniowa (czasowa) jest O(N). | | | 0 1 2 3 ..... N J. Mieścicki, Wstęp do Informatyki, część 2

Przeszukiwanie listy nieuporządkowanej - ulepszenie start start Dopisz K jako L(N+1) i := 0 i := 0 i := i+1 i := i+1 Pisz ‘nie ma’ i > N tak nie L(i)== K tak nie i > N stop tak Pisz ‘nie ma’ nie L(i)== K tak nie Pisz i Pisz i stop stop stop J. Mieścicki, Wstęp do Informatyki, część 2

Przeszukiwanie listy nieuporządkowanej | | | Czas wykonania Alg. 1 Alg. 1a W obu przypadkach zależność czasu wykonania od rozmiaru danych (N) jest liniowa, Oba algorytmy mają taką samą złożoność obliczeniową: O(N). J. Mieścicki, Wstęp do Informatyki, część 2

Przeszukiwanie listy uporządkowanej Liczby całkowite, umieszczone w kolejno ponumerowanych komórkach uporządkowane ‘narastająco’. 1 3 2 4 22 35 5 157 6 209 7 1489 N=8 2500 Zadanie to samo: Czy jest wśród nich zadana liczba (np.‘7’), Jeśli tak – wypisz numer komórki, Jeśli nie – napisz ‘nie ma’ J. Mieścicki, Wstęp do Informatyki, część 2

Przeszukiwanie listy uporządkowanej 1 3 2 4 22 35 5 157 6 209 7 1489 N=8 2500 Oba algorytmy przeszukiwania listy nieuporządkowanej działałyby również w tym przypadku, Ale tu można zastosować lepszy pomysł: ‘dzielenia na połowy’. J. Mieścicki, Wstęp do Informatyki, część 2

Przeszukiwanie listy uporządkowanej 1 3 2 4 22 35 5 157 6 209 7 1489 N=8 2500 Niech np. zadana liczba K = 7 ‘przygraniczna’ L(5) = 157 > K, więc nie ma czego szukać w dolnej połowie, Powtórzmy całe rozumowanie dla górnej połowy. J. Mieścicki, Wstęp do Informatyki, część 2

Przeszukiwanie listy uporządkowanej Dwukrotne zwiększenie N (np. z 8 do 16, z 16 do 32 itd.) dodaje jeden krok do algorytmu ‘dzielenia na połowy’, Algorytm ten ma więc złożoność O(log N). Czas B O(N) O(log N) < O(N), ponieważ istnieje takie N*, że dla każdego N > N* czas wykonania TA < TB , ... choć dla pewnego zakresu N może być odwrotnie A O(log N) N* 0 1 N J. Mieścicki, Wstęp do Informatyki, część 2

1 3 5 6 2 4 G1 G2 1 2 3 4 6 5 Porównywanie grafów Czy G1 jest izomorficzny z G2 ? J. Mieścicki, Wstęp do Informatyki, część 2

1 3 5 6 2 4 G1 G2 1 4 3 2 6 5 Porównywanie grafów Czy G1 jest izomorficzny z G2 ? J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Porównywanie grafów G1 do 1 2 3 4 5 6 od  Potrzebne jest porównanie dwóch takich tabel, Gdy N jest liczbą węzłów, liczba porównań jest proporcjonalna do N 2, Zatem złożoność O(N 2 ) J. Mieścicki, Wstęp do Informatyki, część 2

Problem komiwojażera (traveling salesman p.) Problem: znaleźć najkrótszą trasę od W z powrotem do W, odwiedzającą (jednokrotnie) wszystkie N=3 miasta. Inaczej: znaleźć najkrótszy cykl w zadanym grafie. 383 343 W 647 P 303 279 524 R J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Problem komiwojażera W G P W R 343 303 383 647 279 524 G P R P R G R G P R P R G P G W 6 tras do porównania J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Problem komiwojażera Najkrótsza: WGPRW (lub WRPGW) ma 1529 km, Najdłuższa: WGRPW (lub WPRGW) ma 1817 km. G P W R 343 303 383 647 279 524 J. Mieścicki, Wstęp do Informatyki, część 2

Dla N = 4: Problem komiwojażera W G P R P R G R G P W W W W W W 4*3*2*1 = N ! = 24 trasy do porównania J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Problem komiwojażera Złożoność obliczeniowa O(N!), Ogromna liczba stosunkowo prostych obliczeń, Załóżmy dla wsparcia wyobraźni, że pewien komputer wylicza i porównuje 106 tras na sekundę. 1 doba = 86 400 s, 1 rok = 31 536 000 s, Przy tym założeniu: J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Problem komiwojażera N Czas 4 0.000024 s 9 0.36 s 10 3.6 s 12 8 min 14 > 1 doba 15 > 2 tygodnie 17 ~ 11 lat 18 ~ 200 lat 20 78 000 lat Eksplozja wykładnicza J. Mieścicki, Wstęp do Informatyki, część 2

Program, ale czy algorytm ? (Problem Collatza) begin X – liczba całkowita większa od zera; begin; while ~ (X = = 1); if X parzyste then X := X/2 elseif X nieparzyste then X:= 3*X+1; endif; endwhile; end; Wprowadź X tak X==1 end nie X parzyste nie tak X:=X/2 X:=3X+1 J. Mieścicki, Wstęp do Informatyki, część 2

‘Superprogram’ oceniający własność stopu ? start Dowolny program P Wczytaj P ? Można udowodnić, że zadanie zbudowania programu określającego własność stopu dowolnego programu jest nierealizowalne. Stop 1 Stop2 Tak, P ma własność stopu Nie, P nie ma własności stopu J. Mieścicki, Wstęp do Informatyki, część 2

Klasy złożoności obliczeniowej (czasowej) Nieobliczalne (nierozstrzygalne) Przeszukiwanie listy nieuporządkowanej O(N), Przeszukiwanie listy uporządkowanej O(log N), Sortowanie O(N log N), Porównywanie grafów O(N2) Wieże Hanoi O(2N), Problem komiwojażera O(N!), Problem budowy uniwersalnego programu badającego własność stopu – w ogóle nierozstrzygalny Złożoność wykładnicza O(kN) ‘trudne’ O(N k), złożoność wielomianowa lub lepsza obliczeniowo ‘łatwe’ J. Mieścicki, Wstęp do Informatyki, część 2

.... O(kNN ) ‘trudne’ ... O(N!) O(2N) ---------- O(N10) O(N2) O(N) Luka algorytmiczna Dla pewnego problemu obliczeniowego: .... O(kNN ) ... O(N!) O(2N) ---------- O(N10) O(N2) O(N) O(logN) ‘trudne’ Znany algorytm ‘Odkrywanie’ nowych algorytmów Górne ograniczenie Luka algorytmiczna ‘łatwe’ Dolne ograniczenie Nowe dowody matematyczne Formalny dowód (że nie może być lepiej) J. Mieścicki, Wstęp do Informatyki, część 2

Problemy algorytmicznie zamknięte Jeśli luka algorytmiczna nie istnieje – problem jest algorytmicznie zamknięty. Algorytmicznie zamknięte są na przykład: Przeszukiwanie listy nieuporządkowanej: udowodniono, że złożoność nie może być lepsza, niż O(N), znany jest algorytm o złożoności O(N). Sortowanie, O(N logN) .... J. Mieścicki, Wstęp do Informatyki, część 2

Klasa problemów NP-zupełnych (NPC) .... O(kNN ) ... O(N!) O(2N) ---------- O(N10) O(N2) O(N) O(logN) ‘trudne’ NPC Górne ograniczenie ‘łatwe’ Ogromna luka algorytmiczna ? Dolne ograniczenie – nie znane J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Klasa problemów NPC NPC – od Nondeterministically Polynomial Complete, Każdy problem jest (jako całość) obliczeniowo ‘trudny’, Rozwiązanie polega z zasady na wykonaniu ogromnej liczby ‘łatwych’ obliczeń, każde o wielomianowej (polynomial) złożoności O(N k), Kolejność ich wykonywania nie jest określona (t.zn. jest niedeterministyczna); W zależności od przypadku (lub szczęścia) rezultat można otrzymać równie dobrze już w pierwszym, jak dopiero w ostatnim kroku obliczeń, J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Klasa problemów NPC Klasa NPC jest zupełna (complete) w tym sensie, że należące do niej problemy są wzajemnie powiązane za pomocą redukcji, znalezienie rozwiązania wielomianowego dla choćby jednego z problemów oznaczałoby ‘wciągnięcie’ wszystkich problemów NP do klasy problemów ‘łatwych’ (wielomianowych, P), i odwrotnie, udowodnienie dla choćby jednego problemu istnienia dolnej granicy powyżej złożoności wielomianowej oznaczałoby ‘wciągnięcie’ wszystkich problemów NP do klasy problemów ‘trudnych’, Czy NP = P ? J. Mieścicki, Wstęp do Informatyki, część 2

Przykłady problemów NP: problem plecakowy Plecak N rzeczy do zapakowania Zadanie: tak poukładać rzeczy w plecaku, żeby zostało w nim jak najwięcej wolnego (niewykorzystanego) miejsca. Problem jest NP. J. Mieścicki, Wstęp do Informatyki, część 2

Układanie rozkładu zajęć Wykłady, laboratoria, ćwiczenia do ‘poukładania’ Plan tygodnia ... plus kryterium (kryteria) celu ... plus więzy (ograniczenia) J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Pojęcie redukcji Układanie rozkładu zajęć sprowadza się (redukuje się) do problemu plecakowego, Istnieje redukcja przekształcająca problem układania rozkładu zajęć w problem plecakowy. Algorytm o złożoności O(N k) przeliczający dane A na dane B cel A na cel B Problem B Problem A Redukcja A do B: J. Mieścicki, Wstęp do Informatyki, część 2

Przykłady problemów NP: kolorowanie mapy Dana jest mapa N państw oraz K kolorów, N > 1, K < N, Zadanie polega na stwierdzeniu (tak – nie), czy daną mapę można pokolorować K kolorami w taki sposób, by sąsiadujące państwa się zawsze różniły kolorem. Dla K = 1 rozwiązanie natychmiastowe (nie), Dla K = 2: Tak – jedynie gdy w każdym węźle zbiega się parzysta liczba krawędzi, Zatem złożoność O(N2), Dla K = 4 rozwiązanie natychmiastowe (zawsze ‘tak’), Dla K = 3 problem jest NP. J. Mieścicki, Wstęp do Informatyki, część 2

Przykłady problemów NP: kolorowanie grafu 1 3 5 6 2 4 7 ? Dany jest graf o N wierzchołkach oraz K kolorów (K < N), Zadanie: rozstrzygnąć (tak-nie), czy da się pokolorować wierzchołki danego grafu tak, by żadne dwa wierzchołki połączone krawędzią nie były tego samego koloru, Dla 2 < K < N problem jest NP. J. Mieścicki, Wstęp do Informatyki, część 2

Przykłady problemów NP: kolorowanie grafu ... Udało się ! 1 2 3 4 5 6 7 Ż C Zi 1 2 3 4 7 6 5 I tak dalej, 37 = KN możliwości do przejrzenia J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Metody algorytmiczne Algorytmy zachłanne (greedy) Podział na pod-zadania (‘divide and conquer’) Rozwiązywanie metodą top-down i bottom-up Algorytmy rekurencyjne Algorytmy iteracyjne Programowanie dynamiczne .... Algorytmy heurystyczne Algorytmy probabilistyczne Algorytmy ewolucyjne i genetyczne Sieci neuronowe ... J. Mieścicki, Wstęp do Informatyki, część 2

Algorytmy zachłanne (greedy) Zachłanne rozwiązanie problemu komiwojażera: Dla początku w W, rozwiązanie zachłanne jest takie samo, jak optymalne (1529 km) Dla początku w P, otrzymana (‘zachłanna’) trasa ma 1642 km (a najdłuższa trasa ma 1817 km) G P W R 343 303 383 647 279 524 J. Mieścicki, Wstęp do Informatyki, część 2

Dekompozycja na pod-zadania (divide and conquer) Zadanie A Top-down Pod-zadanie A1 Pod-zadanie A2 Pod-zadanie A1.1 Pod-zadanie A1.2 Bottom-up J. Mieścicki, Wstęp do Informatyki, część 2

Rozwiązywanie problemu komiwojażera metodą ‘top-down’ Żoliborz Grochów Centrum Gocławek Ochota Mokotów J. Mieścicki, Wstęp do Informatyki, część 2

Rozwiązywanie problemu komiwojażera metodą ‘top-down’ wyznaczenia trasy Wyznacz trasę między dzielnicami Wyznacz trasę wewnątrz Mokotowa Wyznacz trasę wewnątrz Gocławka .... J. Mieścicki, Wstęp do Informatyki, część 2

Możliwe heurystyczne rozwiązanie problemu komiwojażera G Znane rozwiązanie dla 4 miast, Dochodzi piąte (B) Podejście ‘konserwatywne’: ‘jak najmniej zmian’ B 383 343 W 647 303 P 279 524 R J. Mieścicki, Wstęp do Informatyki, część 2

Rekurencja: sortowanie ze scalaniem (merge sort) Sortowanie: porządkowanie listy nieuporządkowanej, Najpierw: operacja scalania (merging) dwóch list uporządkowanych: G 3 5 22 40 i M=merge(G, D) M j 1 2 3 5 5 10 22 33 40 45 D 1 2 5 10 33 45 k J. Mieścicki, Wstęp do Informatyki, część 2

Rekurencja: sortowanie ze scalaniem (merge sort) Function m = sort (lista); 1 Oblicz d = długość lista; nie tak d == 1 Podziel lista na listaD, listaG; 2 D = sort (listaD); G = sort (listaG); Zwróć m = lista; 5 3 Zwróć m = merge(D, G); 4 J. Mieścicki, Wstęp do Informatyki, część 2

Rekurencyjne wykonanie sortowania ze scalaniem 3, 1, 7, 5 3 d=1 ... sort(3) sort(1) merge 3, 1 3 1 d=1 ... sort(3,1) sort(7,5) merge 1 1, 3 7, 5 5 d=1 ... sort(5) sort(7) merge 5, 7 5 7 1, 3, 5, 7 d=1 7 J. Mieścicki, Wstęp do Informatyki, część 2

Rekurencyjne wykonanie sortowania ze scalaniem 1 4 2 3 1 4 1 4 2 3 2 3 1 5 1 5 1 5 1 5 J. Mieścicki, Wstęp do Informatyki, część 2

Zasada rekurencyjnego wykonania procedury (funkcji)     J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Wieże Hanoi A B C N krążków Zadanie: Przełożyć wszystkie krążki z patyka A na C (korzystając przy tym z pomocniczego B), Wolno brać jeden krążek na raz, Nie wolno kłaść większego krążka na mniejszym. J. Mieścicki, Wstęp do Informatyki, część 2

A B C akt pom doc Wieże Hanoi Przenieś N=2 krążki, akt = A, doc = C, pom = B; A B C akt pom doc J. Mieścicki, Wstęp do Informatyki, część 2

Rekurencyjne rozwiązanie problemu wież Hanoi Końcowa zawartość prętów A, B, C Początkowa zawartość prętów A, B, C Liczba krążków do przeniesienia Procedure [A, B, C] = hanoi([A, B, C], n, akt, pom, doc); Nazwa pręta ‘aktualnego’ Nazwa pręta ‘pomocniczego’ Nazwa pręta ‘docelowego’ Np. [A, B, C] = hanoi([A, B, C], 5, A, B, C); oznacza: ‘w zadanym zbiorze prętów [A, B, C] przenieś 5 górnych krążków z A na C, korzystając pomocniczo z B i zwróć nową zawartość [A, B, C]’ J. Mieścicki, Wstęp do Informatyki, część 2

Rekurencyjne rozwiązanie problemu wież Hanoi Procedure [A, B, C] = hanoi([A, B, C], n, akt, pom, doc); If n==2 then Przenieś górny krążek z akt na pom; Przenieś górny krążek z akt na doc; Przenieś górny krążęk z pom na doc; elseif n>2; [A, B, C] = hanoi([A, B, C], n-1, akt, doc, pom); [A, B, C] = hanoi([A, B, C], n-1, pom, akt, doc); end; J. Mieścicki, Wstęp do Informatyki, część 2

J. Mieścicki, Wstęp do Informatyki, część 2 Wieże Hanoi Zadanie to jest często używane jako przykład obrazujący zasadę rekurencyjnego wykonania procedury, Zaletą jest zwartość i estetyczne walory kodu programu, Jednak wykonanie zadania dla N krążków oznacza dwukrotne wykonanie tego samego zadania dla (N-1) krążków (plus coś jeszcze), Złożoność jest więc O(2N). J. Mieścicki, Wstęp do Informatyki, część 2