115
Rekurencja i poszukiwanie z nawrotami Rekurencja Liczby Fibonacciego NWD Wie˙ ze Hanoi szachownica Backtracking Rekurencja i poszukiwanie z nawrotami zaj ˛ ecia 4. Marcin Andrychowicz

Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Rekurencja i poszukiwanie z nawrotamizajecia 4.

Marcin Andrychowicz

Page 2: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Rekurencja

Algorytm rekurencyjny:rozwiazuje problem przez rozwiazanie pewnej liczbyprostszych przypadków tego samego problemuzapisujemy za pomoca funkcji rekurencyjnej, czyliwywołujacej sama siebieprzykładem moze byc omówione wczesniej sortowanieprzez scalanie

Page 3: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Rekurencja

Algorytm rekurencyjny:rozwiazuje problem przez rozwiazanie pewnej liczbyprostszych przypadków tego samego problemuzapisujemy za pomoca funkcji rekurencyjnej, czyliwywołujacej sama siebieprzykładem moze byc omówione wczesniej sortowanieprzez scalanie

Page 4: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Rekurencja

Algorytm rekurencyjny:rozwiazuje problem przez rozwiazanie pewnej liczbyprostszych przypadków tego samego problemuzapisujemy za pomoca funkcji rekurencyjnej, czyliwywołujacej sama siebieprzykładem moze byc omówione wczesniej sortowanieprzez scalanie

Page 5: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

DefinicjaFn — n-ta liczba FibonacciegoF0 = F1 = 1Fn = Fn−1 + Fn−2 dla n > 1

n 0 1 2 3 4 5 6 7Fn 1 1 2 3 5 8 13 21

zwiazek z królikami

Obliczanie Fn — 1. podejscieint fib(int n){

if(n <= 1) return 1;return fib(n-1)+fib(n-2);

}

Page 6: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

DefinicjaFn — n-ta liczba FibonacciegoF0 = F1 = 1Fn = Fn−1 + Fn−2 dla n > 1

n 0 1 2 3 4 5 6 7Fn 1 1 2 3 5 8 13 21

zwiazek z królikami

Obliczanie Fn — 1. podejscieint fib(int n){

if(n <= 1) return 1;return fib(n-1)+fib(n-2);

}

Page 7: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

DefinicjaFn — n-ta liczba FibonacciegoF0 = F1 = 1Fn = Fn−1 + Fn−2 dla n > 1

n 0 1 2 3 4 5 6 7Fn 1 1 2 3 5 8 13 21

zwiazek z królikami

Obliczanie Fn — 1. podejscieint fib(int n){

if(n <= 1) return 1;return fib(n-1)+fib(n-2);

}

Page 8: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

DefinicjaFn — n-ta liczba FibonacciegoF0 = F1 = 1Fn = Fn−1 + Fn−2 dla n > 1

n 0 1 2 3 4 5 6 7Fn 1 1 2 3 5 8 13 21

zwiazek z królikami

Obliczanie Fn — 1. podejscieint fib(int n){

if(n <= 1) return 1;return fib(n-1)+fib(n-2);

}

Page 9: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

DefinicjaFn — n-ta liczba FibonacciegoF0 = F1 = 1Fn = Fn−1 + Fn−2 dla n > 1

n 0 1 2 3 4 5 6 7Fn 1 1 2 3 5 8 13 21

zwiazek z królikami

Obliczanie Fn — 1. podejscieint fib(int n){

if(n <= 1) return 1;return fib(n-1)+fib(n-2);

}

Page 10: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

DefinicjaFn — n-ta liczba FibonacciegoF0 = F1 = 1Fn = Fn−1 + Fn−2 dla n > 1

n 0 1 2 3 4 5 6 7Fn 1 1 2 3 5 8 13 21

zwiazek z królikami

Obliczanie Fn — 1. podejscieint fib(int n){

if(n <= 1) return 1;return fib(n-1)+fib(n-2);

}

Page 11: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Analiza złozonoscipoliczmy ile razy wywołamy fib(0) lub fib(1) liczacfib(n)

liczac fib(0) lub fib(1) zrobimy jedno wywołanieliczac fib(2) zrobimy 2 wywołanialiczac fib(3) zrobimy 3 wywołanialiczac fib(4) zrobimy 5 wywołan . . .liczac fib(n) zrobimy Fn wywołanspróbujmy jakos oszacowac ta liczbe

Page 12: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Analiza złozonoscipoliczmy ile razy wywołamy fib(0) lub fib(1) liczacfib(n)

liczac fib(0) lub fib(1) zrobimy jedno wywołanieliczac fib(2) zrobimy 2 wywołanialiczac fib(3) zrobimy 3 wywołanialiczac fib(4) zrobimy 5 wywołan . . .liczac fib(n) zrobimy Fn wywołanspróbujmy jakos oszacowac ta liczbe

Page 13: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Analiza złozonoscipoliczmy ile razy wywołamy fib(0) lub fib(1) liczacfib(n)

liczac fib(0) lub fib(1) zrobimy jedno wywołanieliczac fib(2) zrobimy 2 wywołanialiczac fib(3) zrobimy 3 wywołanialiczac fib(4) zrobimy 5 wywołan . . .liczac fib(n) zrobimy Fn wywołanspróbujmy jakos oszacowac ta liczbe

Page 14: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Analiza złozonoscipoliczmy ile razy wywołamy fib(0) lub fib(1) liczacfib(n)

liczac fib(0) lub fib(1) zrobimy jedno wywołanieliczac fib(2) zrobimy 2 wywołanialiczac fib(3) zrobimy 3 wywołanialiczac fib(4) zrobimy 5 wywołan . . .liczac fib(n) zrobimy Fn wywołanspróbujmy jakos oszacowac ta liczbe

Page 15: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Analiza złozonoscipoliczmy ile razy wywołamy fib(0) lub fib(1) liczacfib(n)

liczac fib(0) lub fib(1) zrobimy jedno wywołanieliczac fib(2) zrobimy 2 wywołanialiczac fib(3) zrobimy 3 wywołanialiczac fib(4) zrobimy 5 wywołan . . .liczac fib(n) zrobimy Fn wywołanspróbujmy jakos oszacowac ta liczbe

Page 16: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Analiza złozonoscipoliczmy ile razy wywołamy fib(0) lub fib(1) liczacfib(n)

liczac fib(0) lub fib(1) zrobimy jedno wywołanieliczac fib(2) zrobimy 2 wywołanialiczac fib(3) zrobimy 3 wywołanialiczac fib(4) zrobimy 5 wywołan . . .liczac fib(n) zrobimy Fn wywołanspróbujmy jakos oszacowac ta liczbe

Page 17: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Analiza złozonoscipoliczmy ile razy wywołamy fib(0) lub fib(1) liczacfib(n)

liczac fib(0) lub fib(1) zrobimy jedno wywołanieliczac fib(2) zrobimy 2 wywołanialiczac fib(3) zrobimy 3 wywołanialiczac fib(4) zrobimy 5 wywołan . . .liczac fib(n) zrobimy Fn wywołanspróbujmy jakos oszacowac ta liczbe

Page 18: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Jak szybko rosna?

Liczby Fibonacciego rosna wykładniczo. Dowód:1 Fn+1 > Fn

2 Fn+2 = Fn+1 + Fn = 2Fn + Fn−1 ­ 2Fn

3 F2n+2 ­ F2n+1 ­ 2nF1 = 2n (czyli Fn rosna co najmniejwykładniczo)

4 Fn+1 ¬ 2Fn, wiec Fn ¬ 2n (czyli Fn rosna co najwyzejwykładniczo)

Page 19: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Jak szybko rosna?

Liczby Fibonacciego rosna wykładniczo. Dowód:1 Fn+1 > Fn

2 Fn+2 = Fn+1 + Fn = 2Fn + Fn−1 ­ 2Fn

3 F2n+2 ­ F2n+1 ­ 2nF1 = 2n (czyli Fn rosna co najmniejwykładniczo)

4 Fn+1 ¬ 2Fn, wiec Fn ¬ 2n (czyli Fn rosna co najwyzejwykładniczo)

Page 20: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Jak szybko rosna?

Liczby Fibonacciego rosna wykładniczo. Dowód:1 Fn+1 > Fn

2 Fn+2 = Fn+1 + Fn = 2Fn + Fn−1 ­ 2Fn

3 F2n+2 ­ F2n+1 ­ 2nF1 = 2n (czyli Fn rosna co najmniejwykładniczo)

4 Fn+1 ¬ 2Fn, wiec Fn ¬ 2n (czyli Fn rosna co najwyzejwykładniczo)

Page 21: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Jak szybko rosna?

Liczby Fibonacciego rosna wykładniczo. Dowód:1 Fn+1 > Fn

2 Fn+2 = Fn+1 + Fn = 2Fn + Fn−1 ­ 2Fn

3 F2n+2 ­ F2n+1 ­ 2nF1 = 2n (czyli Fn rosna co najmniejwykładniczo)

4 Fn+1 ¬ 2Fn, wiec Fn ¬ 2n (czyli Fn rosna co najwyzejwykładniczo)

Page 22: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Jak szybko rosna?

Liczby Fibonacciego rosna wykładniczo. Dowód:1 Fn+1 > Fn

2 Fn+2 = Fn+1 + Fn = 2Fn + Fn−1 ­ 2Fn

3 F2n+2 ­ F2n+1 ­ 2nF1 = 2n (czyli Fn rosna co najmniejwykładniczo)

4 Fn+1 ¬ 2Fn, wiec Fn ¬ 2n (czyli Fn rosna co najwyzejwykładniczo)

Page 23: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Jak to poprawic?

nie trzeba liczyc tych samych wartosci wielokrotniemozemy zapisywac juz policzone wartosci w tablicy

Obliczanie Fn — 2. podejscieint fib[MAXN+1];fib[0]=fib[1]=1;for(int n=2;n<=MAXN;n++)

fib[n]=fib[n-1]+fib[n-2];

Złozonosc: O(n)Wniosek: rekurencja nie zawsze jest najlepsza metoda

Page 24: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Jak to poprawic?

nie trzeba liczyc tych samych wartosci wielokrotniemozemy zapisywac juz policzone wartosci w tablicy

Obliczanie Fn — 2. podejscieint fib[MAXN+1];fib[0]=fib[1]=1;for(int n=2;n<=MAXN;n++)

fib[n]=fib[n-1]+fib[n-2];

Złozonosc: O(n)Wniosek: rekurencja nie zawsze jest najlepsza metoda

Page 25: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Jak to poprawic?

nie trzeba liczyc tych samych wartosci wielokrotniemozemy zapisywac juz policzone wartosci w tablicy

Obliczanie Fn — 2. podejscieint fib[MAXN+1];fib[0]=fib[1]=1;for(int n=2;n<=MAXN;n++)

fib[n]=fib[n-1]+fib[n-2];

Złozonosc: O(n)Wniosek: rekurencja nie zawsze jest najlepsza metoda

Page 26: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Jak to poprawic?

nie trzeba liczyc tych samych wartosci wielokrotniemozemy zapisywac juz policzone wartosci w tablicy

Obliczanie Fn — 2. podejscieint fib[MAXN+1];fib[0]=fib[1]=1;for(int n=2;n<=MAXN;n++)

fib[n]=fib[n-1]+fib[n-2];

Złozonosc: O(n)Wniosek: rekurencja nie zawsze jest najlepsza metoda

Page 27: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Liczby Fibonacciego

Jak to poprawic?

nie trzeba liczyc tych samych wartosci wielokrotniemozemy zapisywac juz policzone wartosci w tablicy

Obliczanie Fn — 2. podejscieint fib[MAXN+1];fib[0]=fib[1]=1;for(int n=2;n<=MAXN;n++)

fib[n]=fib[n-1]+fib[n-2];

Złozonosc: O(n)Wniosek: rekurencja nie zawsze jest najlepsza metoda

Page 28: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Najwiekszy wspólny dzielnik

Najwiekszym Wspólnym Dzielnikiem (NWD) dwóchliczb naturalnych a i b nazywamy najwieksza liczbenaturalna dzielaca zarówno a jak i b.przykładowo NWD(35,20) = 5jak policzyc NWD(a,b)?mozna sprawdzic wszystkie liczby 1,2, . . . ,min(a,b) —złozonosc O(min(a,b))

Page 29: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Najwiekszy wspólny dzielnik

Najwiekszym Wspólnym Dzielnikiem (NWD) dwóchliczb naturalnych a i b nazywamy najwieksza liczbenaturalna dzielaca zarówno a jak i b.przykładowo NWD(35,20) = 5jak policzyc NWD(a,b)?mozna sprawdzic wszystkie liczby 1,2, . . . ,min(a,b) —złozonosc O(min(a,b))

Page 30: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Najwiekszy wspólny dzielnik

Najwiekszym Wspólnym Dzielnikiem (NWD) dwóchliczb naturalnych a i b nazywamy najwieksza liczbenaturalna dzielaca zarówno a jak i b.przykładowo NWD(35,20) = 5jak policzyc NWD(a,b)?mozna sprawdzic wszystkie liczby 1,2, . . . ,min(a,b) —złozonosc O(min(a,b))

Page 31: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Najwiekszy wspólny dzielnik

Najwiekszym Wspólnym Dzielnikiem (NWD) dwóchliczb naturalnych a i b nazywamy najwieksza liczbenaturalna dzielaca zarówno a jak i b.przykładowo NWD(35,20) = 5jak policzyc NWD(a,b)?mozna sprawdzic wszystkie liczby 1,2, . . . ,min(a,b) —złozonosc O(min(a,b))

Page 32: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Przykład działanianwd(20,35) =nwd(35,20) =nwd(20,15) =nwd(15,5)=nwd(5,0) =5

Page 33: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Przykład działanianwd(20,35) =nwd(35,20) =nwd(20,15) =nwd(15,5)=nwd(5,0) =5

Page 34: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Przykład działanianwd(20,35) =nwd(35,20) =nwd(20,15) =nwd(15,5)=nwd(5,0) =5

Page 35: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Przykład działanianwd(20,35) =nwd(35,20) =nwd(20,15) =nwd(15,5)=nwd(5,0) =5

Page 36: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Przykład działanianwd(20,35) =nwd(35,20) =nwd(20,15) =nwd(15,5)=nwd(5,0) =5

Page 37: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Przykład działanianwd(20,35) =nwd(35,20) =nwd(20,15) =nwd(15,5)=nwd(5,0) =5

Page 38: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Przykład działanianwd(20,35) =nwd(35,20) =nwd(20,15) =nwd(15,5)=nwd(5,0) =5

Page 39: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Dlaczego to działa?nie liczac pierwszego wywołania zachodzi b < awówczas wartosc b maleje przy kazdym wywołaniu,wiec algorytm sie zatrzymujezachodzi NWD(a,b) = NWD(b,a mod b); dowód:

1 niech a = b · n + m, gdzie m < b2 chcemy wykazac, ze NWD(b · n + m,b) = NWD(b,m)3 wspólne dzielniki b · n + m i b dziela tez m4 wspólne dzielniki b i m dziela tez b · n + m

Page 40: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Dlaczego to działa?nie liczac pierwszego wywołania zachodzi b < awówczas wartosc b maleje przy kazdym wywołaniu,wiec algorytm sie zatrzymujezachodzi NWD(a,b) = NWD(b,a mod b); dowód:

1 niech a = b · n + m, gdzie m < b2 chcemy wykazac, ze NWD(b · n + m,b) = NWD(b,m)3 wspólne dzielniki b · n + m i b dziela tez m4 wspólne dzielniki b i m dziela tez b · n + m

Page 41: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Dlaczego to działa?nie liczac pierwszego wywołania zachodzi b < awówczas wartosc b maleje przy kazdym wywołaniu,wiec algorytm sie zatrzymujezachodzi NWD(a,b) = NWD(b,a mod b); dowód:

1 niech a = b · n + m, gdzie m < b2 chcemy wykazac, ze NWD(b · n + m,b) = NWD(b,m)3 wspólne dzielniki b · n + m i b dziela tez m4 wspólne dzielniki b i m dziela tez b · n + m

Page 42: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Dlaczego to działa?nie liczac pierwszego wywołania zachodzi b < awówczas wartosc b maleje przy kazdym wywołaniu,wiec algorytm sie zatrzymujezachodzi NWD(a,b) = NWD(b,a mod b); dowód:

1 niech a = b · n + m, gdzie m < b2 chcemy wykazac, ze NWD(b · n + m,b) = NWD(b,m)3 wspólne dzielniki b · n + m i b dziela tez m4 wspólne dzielniki b i m dziela tez b · n + m

Page 43: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Dlaczego to działa?nie liczac pierwszego wywołania zachodzi b < awówczas wartosc b maleje przy kazdym wywołaniu,wiec algorytm sie zatrzymujezachodzi NWD(a,b) = NWD(b,a mod b); dowód:

1 niech a = b · n + m, gdzie m < b2 chcemy wykazac, ze NWD(b · n + m,b) = NWD(b,m)3 wspólne dzielniki b · n + m i b dziela tez m4 wspólne dzielniki b i m dziela tez b · n + m

Page 44: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Dlaczego to działa?nie liczac pierwszego wywołania zachodzi b < awówczas wartosc b maleje przy kazdym wywołaniu,wiec algorytm sie zatrzymujezachodzi NWD(a,b) = NWD(b,a mod b); dowód:

1 niech a = b · n + m, gdzie m < b2 chcemy wykazac, ze NWD(b · n + m,b) = NWD(b,m)3 wspólne dzielniki b · n + m i b dziela tez m4 wspólne dzielniki b i m dziela tez b · n + m

Page 45: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Dlaczego to działa?nie liczac pierwszego wywołania zachodzi b < awówczas wartosc b maleje przy kazdym wywołaniu,wiec algorytm sie zatrzymujezachodzi NWD(a,b) = NWD(b,a mod b); dowód:

1 niech a = b · n + m, gdzie m < b2 chcemy wykazac, ze NWD(b · n + m,b) = NWD(b,m)3 wspólne dzielniki b · n + m i b dziela tez m4 wspólne dzielniki b i m dziela tez b · n + m

Page 46: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy wspólny dzielnik

Algorytm Euklidesaint nwd(int a,int b){

if(b == 0) return a;return nwd(b, a%b);

}

Dlaczego to działa?nie liczac pierwszego wywołania zachodzi b < awówczas wartosc b maleje przy kazdym wywołaniu,wiec algorytm sie zatrzymujezachodzi NWD(a,b) = NWD(b,a mod b); dowód:

1 niech a = b · n + m, gdzie m < b2 chcemy wykazac, ze NWD(b · n + m,b) = NWD(b,m)3 wspólne dzielniki b · n + m i b dziela tez m4 wspólne dzielniki b i m dziela tez b · n + m

Page 47: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Najwiekszy Wspólny Dzielnik

ZłozonoscAlgorytm Euklidesa działa w czasie O(log min(a,b)). Dowódpomijamy.

Page 48: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Problemmamy 3 kołki i n krazków róznej srednicysytuacje poczatkowa przedstawia rysunekzadanie pole na przełozeniu wszystkich krazków naprawy kołekmozna przełozyc tylko jeden krazek na raznie mozna kłasc krazka wiekszego na mniejszyoznaczmy krazki 1, 2, . . .n; 1 — najmniejszy

Page 49: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Problemmamy 3 kołki i n krazków róznej srednicysytuacje poczatkowa przedstawia rysunekzadanie pole na przełozeniu wszystkich krazków naprawy kołekmozna przełozyc tylko jeden krazek na raznie mozna kłasc krazka wiekszego na mniejszyoznaczmy krazki 1, 2, . . .n; 1 — najmniejszy

Page 50: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Problemmamy 3 kołki i n krazków róznej srednicysytuacje poczatkowa przedstawia rysunekzadanie pole na przełozeniu wszystkich krazków naprawy kołekmozna przełozyc tylko jeden krazek na raznie mozna kłasc krazka wiekszego na mniejszyoznaczmy krazki 1, 2, . . .n; 1 — najmniejszy

Page 51: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Problemmamy 3 kołki i n krazków róznej srednicysytuacje poczatkowa przedstawia rysunekzadanie pole na przełozeniu wszystkich krazków naprawy kołekmozna przełozyc tylko jeden krazek na raznie mozna kłasc krazka wiekszego na mniejszyoznaczmy krazki 1, 2, . . .n; 1 — najmniejszy

Page 52: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Problemmamy 3 kołki i n krazków róznej srednicysytuacje poczatkowa przedstawia rysunekzadanie pole na przełozeniu wszystkich krazków naprawy kołekmozna przełozyc tylko jeden krazek na raznie mozna kłasc krazka wiekszego na mniejszyoznaczmy krazki 1, 2, . . .n; 1 — najmniejszy

Page 53: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Problemmamy 3 kołki i n krazków róznej srednicysytuacje poczatkowa przedstawia rysunekzadanie pole na przełozeniu wszystkich krazków naprawy kołekmozna przełozyc tylko jeden krazek na raznie mozna kłasc krazka wiekszego na mniejszyoznaczmy krazki 1, 2, . . .n; 1 — najmniejszy

Page 54: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie

1 mozemy przemieszczac bez problemuaby przesunac 12 na 3. kołek, mozemy:

1 przesunac 1 na 2. kołek2 przesunac 2 na 3. kołek3 przesunac 1 na 3. kołek

aby przesunac 123 na 3. kołek, mozemy:1 przesunac 12 na 2. kołek (rekurencyjnie)2 przesunac 3 na 3. kołek3 przesunac 12 na 3. kołek (rekurencyjnie)

Page 55: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie

1 mozemy przemieszczac bez problemuaby przesunac 12 na 3. kołek, mozemy:

1 przesunac 1 na 2. kołek2 przesunac 2 na 3. kołek3 przesunac 1 na 3. kołek

aby przesunac 123 na 3. kołek, mozemy:1 przesunac 12 na 2. kołek (rekurencyjnie)2 przesunac 3 na 3. kołek3 przesunac 12 na 3. kołek (rekurencyjnie)

Page 56: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie

1 mozemy przemieszczac bez problemuaby przesunac 12 na 3. kołek, mozemy:

1 przesunac 1 na 2. kołek2 przesunac 2 na 3. kołek3 przesunac 1 na 3. kołek

aby przesunac 123 na 3. kołek, mozemy:1 przesunac 12 na 2. kołek (rekurencyjnie)2 przesunac 3 na 3. kołek3 przesunac 12 na 3. kołek (rekurencyjnie)

Page 57: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie

1 mozemy przemieszczac bez problemuaby przesunac 12 na 3. kołek, mozemy:

1 przesunac 1 na 2. kołek2 przesunac 2 na 3. kołek3 przesunac 1 na 3. kołek

aby przesunac 123 na 3. kołek, mozemy:1 przesunac 12 na 2. kołek (rekurencyjnie)2 przesunac 3 na 3. kołek3 przesunac 12 na 3. kołek (rekurencyjnie)

Page 58: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie

1 mozemy przemieszczac bez problemuaby przesunac 12 na 3. kołek, mozemy:

1 przesunac 1 na 2. kołek2 przesunac 2 na 3. kołek3 przesunac 1 na 3. kołek

aby przesunac 123 na 3. kołek, mozemy:1 przesunac 12 na 2. kołek (rekurencyjnie)2 przesunac 3 na 3. kołek3 przesunac 12 na 3. kołek (rekurencyjnie)

Page 59: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie

1 mozemy przemieszczac bez problemuaby przesunac 12 na 3. kołek, mozemy:

1 przesunac 1 na 2. kołek2 przesunac 2 na 3. kołek3 przesunac 1 na 3. kołek

aby przesunac 123 na 3. kołek, mozemy:1 przesunac 12 na 2. kołek (rekurencyjnie)2 przesunac 3 na 3. kołek3 przesunac 12 na 3. kołek (rekurencyjnie)

Page 60: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie

1 mozemy przemieszczac bez problemuaby przesunac 12 na 3. kołek, mozemy:

1 przesunac 1 na 2. kołek2 przesunac 2 na 3. kołek3 przesunac 1 na 3. kołek

aby przesunac 123 na 3. kołek, mozemy:1 przesunac 12 na 2. kołek (rekurencyjnie)2 przesunac 3 na 3. kołek3 przesunac 12 na 3. kołek (rekurencyjnie)

Page 61: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie

1 mozemy przemieszczac bez problemuaby przesunac 12 na 3. kołek, mozemy:

1 przesunac 1 na 2. kołek2 przesunac 2 na 3. kołek3 przesunac 1 na 3. kołek

aby przesunac 123 na 3. kołek, mozemy:1 przesunac 12 na 2. kołek (rekurencyjnie)2 przesunac 3 na 3. kołek3 przesunac 12 na 3. kołek (rekurencyjnie)

Page 62: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie

1 mozemy przemieszczac bez problemuaby przesunac 12 na 3. kołek, mozemy:

1 przesunac 1 na 2. kołek2 przesunac 2 na 3. kołek3 przesunac 1 na 3. kołek

aby przesunac 123 na 3. kołek, mozemy:1 przesunac 12 na 2. kołek (rekurencyjnie)2 przesunac 3 na 3. kołek3 przesunac 12 na 3. kołek (rekurencyjnie)

Page 63: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie

1 mozemy przemieszczac bez problemuaby przesunac 12 na 3. kołek, mozemy:

1 przesunac 1 na 2. kołek2 przesunac 2 na 3. kołek3 przesunac 1 na 3. kołek

aby przesunac 123 na 3. kołek, mozemy:1 przesunac 12 na 2. kołek (rekurencyjnie)2 przesunac 3 na 3. kołek3 przesunac 12 na 3. kołek (rekurencyjnie)

Page 64: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie rekurencyjne:hanoi(m,k) — przeniesienie 12...m w kierunku k ,gdzie k = 1 oznacza przesuniecie na prawo a k = −1na lewo od obecnej pozycji (cyklicznie)chcemy wykonac hanoi(n,-1)hanoi(m,k):

1 jesli m = 1, to przesun 1 i skoncz2 hanoi(m-1,-k)3 przesun m w kierunku k4 hanoi(m-1,-k)

Page 65: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie rekurencyjne:hanoi(m,k) — przeniesienie 12...m w kierunku k ,gdzie k = 1 oznacza przesuniecie na prawo a k = −1na lewo od obecnej pozycji (cyklicznie)chcemy wykonac hanoi(n,-1)hanoi(m,k):

1 jesli m = 1, to przesun 1 i skoncz2 hanoi(m-1,-k)3 przesun m w kierunku k4 hanoi(m-1,-k)

Page 66: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie rekurencyjne:hanoi(m,k) — przeniesienie 12...m w kierunku k ,gdzie k = 1 oznacza przesuniecie na prawo a k = −1na lewo od obecnej pozycji (cyklicznie)chcemy wykonac hanoi(n,-1)hanoi(m,k):

1 jesli m = 1, to przesun 1 i skoncz2 hanoi(m-1,-k)3 przesun m w kierunku k4 hanoi(m-1,-k)

Page 67: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie rekurencyjne:hanoi(m,k) — przeniesienie 12...m w kierunku k ,gdzie k = 1 oznacza przesuniecie na prawo a k = −1na lewo od obecnej pozycji (cyklicznie)chcemy wykonac hanoi(n,-1)hanoi(m,k):

1 jesli m = 1, to przesun 1 i skoncz2 hanoi(m-1,-k)3 przesun m w kierunku k4 hanoi(m-1,-k)

Page 68: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie rekurencyjne:hanoi(m,k) — przeniesienie 12...m w kierunku k ,gdzie k = 1 oznacza przesuniecie na prawo a k = −1na lewo od obecnej pozycji (cyklicznie)chcemy wykonac hanoi(n,-1)hanoi(m,k):

1 jesli m = 1, to przesun 1 i skoncz2 hanoi(m-1,-k)3 przesun m w kierunku k4 hanoi(m-1,-k)

Page 69: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie rekurencyjne:hanoi(m,k) — przeniesienie 12...m w kierunku k ,gdzie k = 1 oznacza przesuniecie na prawo a k = −1na lewo od obecnej pozycji (cyklicznie)chcemy wykonac hanoi(n,-1)hanoi(m,k):

1 jesli m = 1, to przesun 1 i skoncz2 hanoi(m-1,-k)3 przesun m w kierunku k4 hanoi(m-1,-k)

Page 70: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie rekurencyjne:hanoi(m,k) — przeniesienie 12...m w kierunku k ,gdzie k = 1 oznacza przesuniecie na prawo a k = −1na lewo od obecnej pozycji (cyklicznie)chcemy wykonac hanoi(n,-1)hanoi(m,k):

1 jesli m = 1, to przesun 1 i skoncz2 hanoi(m-1,-k)3 przesun m w kierunku k4 hanoi(m-1,-k)

Page 71: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Wieze Hanoi

Rozwiazanie rekurencyjne:hanoi(m,k) — przeniesienie 12...m w kierunku k ,gdzie k = 1 oznacza przesuniecie na prawo a k = −1na lewo od obecnej pozycji (cyklicznie)chcemy wykonac hanoi(n,-1)hanoi(m,k):

1 jesli m = 1, to przesun 1 i skoncz2 hanoi(m-1,-k)3 przesun m w kierunku k4 hanoi(m-1,-k)

Page 72: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Ile ruchów wykonujemy?Tn — liczba ruchów które wykonujemy przyprzenoszeniu 12...n

T1 = 1Tn = 2 · Tn − 1 + 1 dla n > 1

n 1 2 3 4 5Tn 1 3 7 15 31

teza: Tn = 2n − 1dowód przez indukcje:

baza: T1 = 1 = 21 − 1krok indukcyjny:Tn = 2 · Tn−1 + 1 = 2 · (2n−1 − 1) + 1 = 2n − 1

Page 73: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Ile ruchów wykonujemy?Tn — liczba ruchów które wykonujemy przyprzenoszeniu 12...n

T1 = 1Tn = 2 · Tn − 1 + 1 dla n > 1

n 1 2 3 4 5Tn 1 3 7 15 31

teza: Tn = 2n − 1dowód przez indukcje:

baza: T1 = 1 = 21 − 1krok indukcyjny:Tn = 2 · Tn−1 + 1 = 2 · (2n−1 − 1) + 1 = 2n − 1

Page 74: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Ile ruchów wykonujemy?Tn — liczba ruchów które wykonujemy przyprzenoszeniu 12...n

T1 = 1Tn = 2 · Tn − 1 + 1 dla n > 1

n 1 2 3 4 5Tn 1 3 7 15 31

teza: Tn = 2n − 1dowód przez indukcje:

baza: T1 = 1 = 21 − 1krok indukcyjny:Tn = 2 · Tn−1 + 1 = 2 · (2n−1 − 1) + 1 = 2n − 1

Page 75: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Ile ruchów wykonujemy?Tn — liczba ruchów które wykonujemy przyprzenoszeniu 12...n

T1 = 1Tn = 2 · Tn − 1 + 1 dla n > 1

n 1 2 3 4 5Tn 1 3 7 15 31

teza: Tn = 2n − 1dowód przez indukcje:

baza: T1 = 1 = 21 − 1krok indukcyjny:Tn = 2 · Tn−1 + 1 = 2 · (2n−1 − 1) + 1 = 2n − 1

Page 76: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Ile ruchów wykonujemy?Tn — liczba ruchów które wykonujemy przyprzenoszeniu 12...n

T1 = 1Tn = 2 · Tn − 1 + 1 dla n > 1

n 1 2 3 4 5Tn 1 3 7 15 31

teza: Tn = 2n − 1dowód przez indukcje:

baza: T1 = 1 = 21 − 1krok indukcyjny:Tn = 2 · Tn−1 + 1 = 2 · (2n−1 − 1) + 1 = 2n − 1

Page 77: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Ile ruchów wykonujemy?Tn — liczba ruchów które wykonujemy przyprzenoszeniu 12...n

T1 = 1Tn = 2 · Tn − 1 + 1 dla n > 1

n 1 2 3 4 5Tn 1 3 7 15 31

teza: Tn = 2n − 1dowód przez indukcje:

baza: T1 = 1 = 21 − 1krok indukcyjny:Tn = 2 · Tn−1 + 1 = 2 · (2n−1 − 1) + 1 = 2n − 1

Page 78: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Ile ruchów wykonujemy?Tn — liczba ruchów które wykonujemy przyprzenoszeniu 12...n

T1 = 1Tn = 2 · Tn − 1 + 1 dla n > 1

n 1 2 3 4 5Tn 1 3 7 15 31

teza: Tn = 2n − 1dowód przez indukcje:

baza: T1 = 1 = 21 − 1krok indukcyjny:Tn = 2 · Tn−1 + 1 = 2 · (2n−1 − 1) + 1 = 2n − 1

Page 79: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Wieze Hanoi

Ile ruchów wykonujemy?Tn — liczba ruchów które wykonujemy przyprzenoszeniu 12...n

T1 = 1Tn = 2 · Tn − 1 + 1 dla n > 1

n 1 2 3 4 5Tn 1 3 7 15 31

teza: Tn = 2n − 1dowód przez indukcje:

baza: T1 = 1 = 21 − 1krok indukcyjny:Tn = 2 · Tn−1 + 1 = 2 · (2n−1 − 1) + 1 = 2n − 1

Page 80: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Rekurencja

ProblemZ szachownicy 2nx2n wycieto jedno pole. Jak za pomocaklocków w kształcie litery L (zajmujacych 3 pola) pokryctaka szachownice?

Rozwiazanie1 jesli n = 1, to zadanie jest łatwe2 jesli n > 1, to podzielmy nasza szachownice na cztery

szachownice 2n−1x2n−1 (pozioma i pionowa liniaprzechodzaca przez srodek planszy)

3 w srodkowym kwadracie 2x2 układamy L w taki sposób,aby w kazdej mniejszej szachownicy dokładnie jednopole było zajete (liczac to wyciete na wstepie)

4 cztery małe szachownice pokrywamy rekurencyjnie

Page 81: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Rekurencja

ProblemZ szachownicy 2nx2n wycieto jedno pole. Jak za pomocaklocków w kształcie litery L (zajmujacych 3 pola) pokryctaka szachownice?

Rozwiazanie1 jesli n = 1, to zadanie jest łatwe2 jesli n > 1, to podzielmy nasza szachownice na cztery

szachownice 2n−1x2n−1 (pozioma i pionowa liniaprzechodzaca przez srodek planszy)

3 w srodkowym kwadracie 2x2 układamy L w taki sposób,aby w kazdej mniejszej szachownicy dokładnie jednopole było zajete (liczac to wyciete na wstepie)

4 cztery małe szachownice pokrywamy rekurencyjnie

Page 82: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Rekurencja

ProblemZ szachownicy 2nx2n wycieto jedno pole. Jak za pomocaklocków w kształcie litery L (zajmujacych 3 pola) pokryctaka szachownice?

Rozwiazanie1 jesli n = 1, to zadanie jest łatwe2 jesli n > 1, to podzielmy nasza szachownice na cztery

szachownice 2n−1x2n−1 (pozioma i pionowa liniaprzechodzaca przez srodek planszy)

3 w srodkowym kwadracie 2x2 układamy L w taki sposób,aby w kazdej mniejszej szachownicy dokładnie jednopole było zajete (liczac to wyciete na wstepie)

4 cztery małe szachownice pokrywamy rekurencyjnie

Page 83: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Rekurencja

ProblemZ szachownicy 2nx2n wycieto jedno pole. Jak za pomocaklocków w kształcie litery L (zajmujacych 3 pola) pokryctaka szachownice?

Rozwiazanie1 jesli n = 1, to zadanie jest łatwe2 jesli n > 1, to podzielmy nasza szachownice na cztery

szachownice 2n−1x2n−1 (pozioma i pionowa liniaprzechodzaca przez srodek planszy)

3 w srodkowym kwadracie 2x2 układamy L w taki sposób,aby w kazdej mniejszej szachownicy dokładnie jednopole było zajete (liczac to wyciete na wstepie)

4 cztery małe szachownice pokrywamy rekurencyjnie

Page 84: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Rekurencja

ProblemZ szachownicy 2nx2n wycieto jedno pole. Jak za pomocaklocków w kształcie litery L (zajmujacych 3 pola) pokryctaka szachownice?

Rozwiazanie1 jesli n = 1, to zadanie jest łatwe2 jesli n > 1, to podzielmy nasza szachownice na cztery

szachownice 2n−1x2n−1 (pozioma i pionowa liniaprzechodzaca przez srodek planszy)

3 w srodkowym kwadracie 2x2 układamy L w taki sposób,aby w kazdej mniejszej szachownicy dokładnie jednopole było zajete (liczac to wyciete na wstepie)

4 cztery małe szachownice pokrywamy rekurencyjnie

Page 85: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Przeszukiwanie przestrzeni rozwiazan

Problem 8 hetmanówCzy da sie ustawic na szachownicy 8 hetmanów, tak aby nieatakowały sie wzajemnie? Hetman atakuje wszystkie polalezace w tym samym wierszu, kolumnie lub na tej samejprzekatnej.

Zbiór rozwiazan

Jest to typowy problem w którym mamy pewien zbiórmozliwych rozwiazan — zbiór ustawien 8 hetmanów naszachownicy i szukamy jednego lub wszystkich rozwiazan,które spełniaja jakis warunek — w tym przypadku hetmanysie nie atakuja.

Page 86: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Przeszukiwanie przestrzeni rozwiazan

Problem 8 hetmanówCzy da sie ustawic na szachownicy 8 hetmanów, tak aby nieatakowały sie wzajemnie? Hetman atakuje wszystkie polalezace w tym samym wierszu, kolumnie lub na tej samejprzekatnej.

Zbiór rozwiazan

Jest to typowy problem w którym mamy pewien zbiórmozliwych rozwiazan — zbiór ustawien 8 hetmanów naszachownicy i szukamy jednego lub wszystkich rozwiazan,które spełniaja jakis warunek — w tym przypadku hetmanysie nie atakuja.

Page 87: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Problem 8 hetmanów

Rozwiazanienajprostszym rozwiazaniem jest sprawdzeniewszystkich mozliwych rozstawien hetmanówzauwazmy jednak, ze jesli pierwsze dwa postawionehetmany sie atakuja, to nie ma sensu próbowacrozstawic pozostałych 6, gdyz taki układ nigdy niespełni naszych warunkówmozemy konstruowac rozwiazanie, zaczynajac odpustej planszy i rozbudowujac je o kolejne hetmanykiedy jednak dwa juz postawione hetmany beda sie biłyto mozemy pominac taka konfiguracje

Page 88: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Problem 8 hetmanów

Rozwiazanienajprostszym rozwiazaniem jest sprawdzeniewszystkich mozliwych rozstawien hetmanówzauwazmy jednak, ze jesli pierwsze dwa postawionehetmany sie atakuja, to nie ma sensu próbowacrozstawic pozostałych 6, gdyz taki układ nigdy niespełni naszych warunkówmozemy konstruowac rozwiazanie, zaczynajac odpustej planszy i rozbudowujac je o kolejne hetmanykiedy jednak dwa juz postawione hetmany beda sie biłyto mozemy pominac taka konfiguracje

Page 89: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Problem 8 hetmanów

Rozwiazanienajprostszym rozwiazaniem jest sprawdzeniewszystkich mozliwych rozstawien hetmanówzauwazmy jednak, ze jesli pierwsze dwa postawionehetmany sie atakuja, to nie ma sensu próbowacrozstawic pozostałych 6, gdyz taki układ nigdy niespełni naszych warunkówmozemy konstruowac rozwiazanie, zaczynajac odpustej planszy i rozbudowujac je o kolejne hetmanykiedy jednak dwa juz postawione hetmany beda sie biłyto mozemy pominac taka konfiguracje

Page 90: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Problem 8 hetmanów

Rozwiazanienajprostszym rozwiazaniem jest sprawdzeniewszystkich mozliwych rozstawien hetmanówzauwazmy jednak, ze jesli pierwsze dwa postawionehetmany sie atakuja, to nie ma sensu próbowacrozstawic pozostałych 6, gdyz taki układ nigdy niespełni naszych warunkówmozemy konstruowac rozwiazanie, zaczynajac odpustej planszy i rozbudowujac je o kolejne hetmanykiedy jednak dwa juz postawione hetmany beda sie biłyto mozemy pominac taka konfiguracje

Page 91: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Backtracking — przeszukiwanie z nawrotami:

to ogólna technika pozwalajaca przegladac mozliwerozwiazania i szukac tych, które spełniaja pewnewarunkipolega ona na stopniowym rozbudowywaniurozwiazania (dodawanie hetmanów)jesli jednak aktualne rozwiazanie nie moze bycrozbudowane (2 hetmany sie szachuja), to nastepujepowrót do poprzedniego kroku, gdzie podejmowanajest próba znalezienia innej mozliwosciproces ten mozna zapisac rekurencyjnie — abyprzetworzyc rozwiazanie x :

1 jesli x jest dobrym rozwiazaniem to je wypisz2 jesli x nie moze byc rozbudowane to skoncz3 spróbuj wszystkich mozliwosci rozbudowania x i

przetwórz kazda z nich

Page 92: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Backtracking — przeszukiwanie z nawrotami:

to ogólna technika pozwalajaca przegladac mozliwerozwiazania i szukac tych, które spełniaja pewnewarunkipolega ona na stopniowym rozbudowywaniurozwiazania (dodawanie hetmanów)jesli jednak aktualne rozwiazanie nie moze bycrozbudowane (2 hetmany sie szachuja), to nastepujepowrót do poprzedniego kroku, gdzie podejmowanajest próba znalezienia innej mozliwosciproces ten mozna zapisac rekurencyjnie — abyprzetworzyc rozwiazanie x :

1 jesli x jest dobrym rozwiazaniem to je wypisz2 jesli x nie moze byc rozbudowane to skoncz3 spróbuj wszystkich mozliwosci rozbudowania x i

przetwórz kazda z nich

Page 93: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Backtracking — przeszukiwanie z nawrotami:

to ogólna technika pozwalajaca przegladac mozliwerozwiazania i szukac tych, które spełniaja pewnewarunkipolega ona na stopniowym rozbudowywaniurozwiazania (dodawanie hetmanów)jesli jednak aktualne rozwiazanie nie moze bycrozbudowane (2 hetmany sie szachuja), to nastepujepowrót do poprzedniego kroku, gdzie podejmowanajest próba znalezienia innej mozliwosciproces ten mozna zapisac rekurencyjnie — abyprzetworzyc rozwiazanie x :

1 jesli x jest dobrym rozwiazaniem to je wypisz2 jesli x nie moze byc rozbudowane to skoncz3 spróbuj wszystkich mozliwosci rozbudowania x i

przetwórz kazda z nich

Page 94: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Backtracking — przeszukiwanie z nawrotami:

to ogólna technika pozwalajaca przegladac mozliwerozwiazania i szukac tych, które spełniaja pewnewarunkipolega ona na stopniowym rozbudowywaniurozwiazania (dodawanie hetmanów)jesli jednak aktualne rozwiazanie nie moze bycrozbudowane (2 hetmany sie szachuja), to nastepujepowrót do poprzedniego kroku, gdzie podejmowanajest próba znalezienia innej mozliwosciproces ten mozna zapisac rekurencyjnie — abyprzetworzyc rozwiazanie x :

1 jesli x jest dobrym rozwiazaniem to je wypisz2 jesli x nie moze byc rozbudowane to skoncz3 spróbuj wszystkich mozliwosci rozbudowania x i

przetwórz kazda z nich

Page 95: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Backtracking — przeszukiwanie z nawrotami:

to ogólna technika pozwalajaca przegladac mozliwerozwiazania i szukac tych, które spełniaja pewnewarunkipolega ona na stopniowym rozbudowywaniurozwiazania (dodawanie hetmanów)jesli jednak aktualne rozwiazanie nie moze bycrozbudowane (2 hetmany sie szachuja), to nastepujepowrót do poprzedniego kroku, gdzie podejmowanajest próba znalezienia innej mozliwosciproces ten mozna zapisac rekurencyjnie — abyprzetworzyc rozwiazanie x :

1 jesli x jest dobrym rozwiazaniem to je wypisz2 jesli x nie moze byc rozbudowane to skoncz3 spróbuj wszystkich mozliwosci rozbudowania x i

przetwórz kazda z nich

Page 96: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Backtracking — przeszukiwanie z nawrotami:

to ogólna technika pozwalajaca przegladac mozliwerozwiazania i szukac tych, które spełniaja pewnewarunkipolega ona na stopniowym rozbudowywaniurozwiazania (dodawanie hetmanów)jesli jednak aktualne rozwiazanie nie moze bycrozbudowane (2 hetmany sie szachuja), to nastepujepowrót do poprzedniego kroku, gdzie podejmowanajest próba znalezienia innej mozliwosciproces ten mozna zapisac rekurencyjnie — abyprzetworzyc rozwiazanie x :

1 jesli x jest dobrym rozwiazaniem to je wypisz2 jesli x nie moze byc rozbudowane to skoncz3 spróbuj wszystkich mozliwosci rozbudowania x i

przetwórz kazda z nich

Page 97: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Backtracking — przeszukiwanie z nawrotami:

to ogólna technika pozwalajaca przegladac mozliwerozwiazania i szukac tych, które spełniaja pewnewarunkipolega ona na stopniowym rozbudowywaniurozwiazania (dodawanie hetmanów)jesli jednak aktualne rozwiazanie nie moze bycrozbudowane (2 hetmany sie szachuja), to nastepujepowrót do poprzedniego kroku, gdzie podejmowanajest próba znalezienia innej mozliwosciproces ten mozna zapisac rekurencyjnie — abyprzetworzyc rozwiazanie x :

1 jesli x jest dobrym rozwiazaniem to je wypisz2 jesli x nie moze byc rozbudowane to skoncz3 spróbuj wszystkich mozliwosci rozbudowania x i

przetwórz kazda z nich

Page 98: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Problem 8 hetmanów

Szczegóły implementacyjne

w kazdym wierszu moze stac co najwyzej jeden hetmanaktualne rozwiazanie mozemy trzymac jako tablice 8liczb; het [i] oznacza połozenie hetmana w i-tymwierszubedziemy dostawiac kolejne hetmany w kolejnychwierszach, dzieki czemu kazde rozstawienie hetmanówbedziemy mogli otrzymac tylko na jeden sposób

Page 99: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Problem 8 hetmanów

Szczegóły implementacyjne

w kazdym wierszu moze stac co najwyzej jeden hetmanaktualne rozwiazanie mozemy trzymac jako tablice 8liczb; het [i] oznacza połozenie hetmana w i-tymwierszubedziemy dostawiac kolejne hetmany w kolejnychwierszach, dzieki czemu kazde rozstawienie hetmanówbedziemy mogli otrzymac tylko na jeden sposób

Page 100: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Problem 8 hetmanów

Szczegóły implementacyjne

w kazdym wierszu moze stac co najwyzej jeden hetmanaktualne rozwiazanie mozemy trzymac jako tablice 8liczb; het [i] oznacza połozenie hetmana w i-tymwierszubedziemy dostawiac kolejne hetmany w kolejnychwierszach, dzieki czemu kazde rozstawienie hetmanówbedziemy mogli otrzymac tylko na jeden sposób

Page 101: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Implementacja

ImplementacjaProgram rozstawiajacy 8 hetmanów na szachownicyznajduje sie w notatkach.

Page 102: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Backtracking

Dlaczego warto stosowac backtracking?

dzieki pomijaniu całych grup rozwiazan wystarczyprzejrzec o wiele mniej konfiguracji niz w rozwiazaniubrutalnymw przypadku problemu 8 hetmanów uzywajacprzeszukiwania z nawrotami mozna przy odrobiniecierpliwosci znalezc poprawne ustawienie bez uzyciakomputerapomimo trudnosci oszacowania złozonosci rozwiazanopartych na poszukiwaniu z nawrotami, zazwyczajdziałaja one duzo szybciej niz rozwiazania brutalne

Page 103: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Backtracking

Dlaczego warto stosowac backtracking?

dzieki pomijaniu całych grup rozwiazan wystarczyprzejrzec o wiele mniej konfiguracji niz w rozwiazaniubrutalnymw przypadku problemu 8 hetmanów uzywajacprzeszukiwania z nawrotami mozna przy odrobiniecierpliwosci znalezc poprawne ustawienie bez uzyciakomputerapomimo trudnosci oszacowania złozonosci rozwiazanopartych na poszukiwaniu z nawrotami, zazwyczajdziałaja one duzo szybciej niz rozwiazania brutalne

Page 104: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Backtracking

Dlaczego warto stosowac backtracking?

dzieki pomijaniu całych grup rozwiazan wystarczyprzejrzec o wiele mniej konfiguracji niz w rozwiazaniubrutalnymw przypadku problemu 8 hetmanów uzywajacprzeszukiwania z nawrotami mozna przy odrobiniecierpliwosci znalezc poprawne ustawienie bez uzyciakomputerapomimo trudnosci oszacowania złozonosci rozwiazanopartych na poszukiwaniu z nawrotami, zazwyczajdziałaja one duzo szybciej niz rozwiazania brutalne

Page 105: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Porównanie 3 technik

Porównanie 3 technikomówilismy juz 3 wazne techniki programowania:

backtrackingprogramowanie dynamicznealgorytmy zachłanne

backtracking jest zazwyczaj najwolniejszy, ale manajszersze zastosowaniaprogramowanie dynamiczne jest zazwyczaj szybsze,ale skonstruowanie rozwiazania opartego o ta technikemoze byc trudniejsze lub czasami niemozliwealgorytmy zachłanne sa zazwyczaj najszybsze, alemaja najbardziej ograniczone zastosowanie

Page 106: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Porównanie 3 technik

Porównanie 3 technikomówilismy juz 3 wazne techniki programowania:

backtrackingprogramowanie dynamicznealgorytmy zachłanne

backtracking jest zazwyczaj najwolniejszy, ale manajszersze zastosowaniaprogramowanie dynamiczne jest zazwyczaj szybsze,ale skonstruowanie rozwiazania opartego o ta technikemoze byc trudniejsze lub czasami niemozliwealgorytmy zachłanne sa zazwyczaj najszybsze, alemaja najbardziej ograniczone zastosowanie

Page 107: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Porównanie 3 technik

Porównanie 3 technikomówilismy juz 3 wazne techniki programowania:

backtrackingprogramowanie dynamicznealgorytmy zachłanne

backtracking jest zazwyczaj najwolniejszy, ale manajszersze zastosowaniaprogramowanie dynamiczne jest zazwyczaj szybsze,ale skonstruowanie rozwiazania opartego o ta technikemoze byc trudniejsze lub czasami niemozliwealgorytmy zachłanne sa zazwyczaj najszybsze, alemaja najbardziej ograniczone zastosowanie

Page 108: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Porównanie 3 technik

Porównanie 3 technikomówilismy juz 3 wazne techniki programowania:

backtrackingprogramowanie dynamicznealgorytmy zachłanne

backtracking jest zazwyczaj najwolniejszy, ale manajszersze zastosowaniaprogramowanie dynamiczne jest zazwyczaj szybsze,ale skonstruowanie rozwiazania opartego o ta technikemoze byc trudniejsze lub czasami niemozliwealgorytmy zachłanne sa zazwyczaj najszybsze, alemaja najbardziej ograniczone zastosowanie

Page 109: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Porównanie 3 technik

Porównanie 3 technikomówilismy juz 3 wazne techniki programowania:

backtrackingprogramowanie dynamicznealgorytmy zachłanne

backtracking jest zazwyczaj najwolniejszy, ale manajszersze zastosowaniaprogramowanie dynamiczne jest zazwyczaj szybsze,ale skonstruowanie rozwiazania opartego o ta technikemoze byc trudniejsze lub czasami niemozliwealgorytmy zachłanne sa zazwyczaj najszybsze, alemaja najbardziej ograniczone zastosowanie

Page 110: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Porównanie 3 technik

Porównanie 3 technikomówilismy juz 3 wazne techniki programowania:

backtrackingprogramowanie dynamicznealgorytmy zachłanne

backtracking jest zazwyczaj najwolniejszy, ale manajszersze zastosowaniaprogramowanie dynamiczne jest zazwyczaj szybsze,ale skonstruowanie rozwiazania opartego o ta technikemoze byc trudniejsze lub czasami niemozliwealgorytmy zachłanne sa zazwyczaj najszybsze, alemaja najbardziej ograniczone zastosowanie

Page 111: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Porównanie 3 technik

Porównanie 3 technikomówilismy juz 3 wazne techniki programowania:

backtrackingprogramowanie dynamicznealgorytmy zachłanne

backtracking jest zazwyczaj najwolniejszy, ale manajszersze zastosowaniaprogramowanie dynamiczne jest zazwyczaj szybsze,ale skonstruowanie rozwiazania opartego o ta technikemoze byc trudniejsze lub czasami niemozliwealgorytmy zachłanne sa zazwyczaj najszybsze, alemaja najbardziej ograniczone zastosowanie

Page 112: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Sudoku

ProblemW jaki sposób mozna szukac rozwiazan Sudoku 9x9?Zwróc uwage na brak mozliwosci zastosowania algorytmubrutalnego z powodu olbrzymiej ilosci potencjalnychrozwiazan.

Rozwiazanie

konfiguracje mozemy trzymac jako dwuwymiarowatablice 9x9 zawierajaca liczby w kolejnych komórkachw kolejnych krokach bedziemy dopisywac liczby wkolejnych wolnych polach wierszami od góry (a wobrebie wiersza od lewej)przed wpisaniem liczby w puste pole, bedziemywyznaczali liczby, które mozemy tam wpisacprzegladajac odpowiedni wiersz, kolumne i kwadrat 3x3

Page 113: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Sudoku

ProblemW jaki sposób mozna szukac rozwiazan Sudoku 9x9?Zwróc uwage na brak mozliwosci zastosowania algorytmubrutalnego z powodu olbrzymiej ilosci potencjalnychrozwiazan.

Rozwiazanie

konfiguracje mozemy trzymac jako dwuwymiarowatablice 9x9 zawierajaca liczby w kolejnych komórkachw kolejnych krokach bedziemy dopisywac liczby wkolejnych wolnych polach wierszami od góry (a wobrebie wiersza od lewej)przed wpisaniem liczby w puste pole, bedziemywyznaczali liczby, które mozemy tam wpisacprzegladajac odpowiedni wiersz, kolumne i kwadrat 3x3

Page 114: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Sudoku

ProblemW jaki sposób mozna szukac rozwiazan Sudoku 9x9?Zwróc uwage na brak mozliwosci zastosowania algorytmubrutalnego z powodu olbrzymiej ilosci potencjalnychrozwiazan.

Rozwiazanie

konfiguracje mozemy trzymac jako dwuwymiarowatablice 9x9 zawierajaca liczby w kolejnych komórkachw kolejnych krokach bedziemy dopisywac liczby wkolejnych wolnych polach wierszami od góry (a wobrebie wiersza od lewej)przed wpisaniem liczby w puste pole, bedziemywyznaczali liczby, które mozemy tam wpisacprzegladajac odpowiedni wiersz, kolumne i kwadrat 3x3

Page 115: Rekurencja i poszukiwanie z nawrotami - zajecia 4. · Backtracking Rekurencja i poszukiwanie z nawrotami zajecia˛ 4. Marcin Andrychowicz. Rekurencja i poszukiwanie z nawrotami Rekurencja

Rekurencja iposzukiwaniez nawrotami

RekurencjaLiczby Fibonacciego

NWD

Wieze Hanoi

szachownica

Backtracking

Sudoku

ProblemW jaki sposób mozna szukac rozwiazan Sudoku 9x9?Zwróc uwage na brak mozliwosci zastosowania algorytmubrutalnego z powodu olbrzymiej ilosci potencjalnychrozwiazan.

Rozwiazanie

konfiguracje mozemy trzymac jako dwuwymiarowatablice 9x9 zawierajaca liczby w kolejnych komórkachw kolejnych krokach bedziemy dopisywac liczby wkolejnych wolnych polach wierszami od góry (a wobrebie wiersza od lewej)przed wpisaniem liczby w puste pole, bedziemywyznaczali liczby, które mozemy tam wpisacprzegladajac odpowiedni wiersz, kolumne i kwadrat 3x3