Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 9. Karol Tarnowski A-1 p.

Podobne dokumenty
Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Wykład 3. Metoda dziel i zwyciężaj

Strategia "dziel i zwyciężaj"

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 5. Karol Tarnowski A-1 p.

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Efektywna metoda sortowania sortowanie przez scalanie

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Algorytmy i Struktury Danych.

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

Wstęp do programowania

Sortowanie przez scalanie

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Wstęp do programowania

Programowanie w VB Proste algorytmy sortowania

Sortowanie. LABORKA Piotr Ciskowski

Znajdowanie największego i najmniejszego elementu w zbiorze n liczb całkowitych

Analiza numeryczna Kurs INP002009W. Wykład 4 Rozwiązywanie równań nieliniowych. Karol Tarnowski A-1 p.

Informatyka A. Algorytmy

Jeszcze o algorytmach

Analiza algorytmów zadania podstawowe

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

TEORETYCZNE PODSTAWY INFORMATYKI

Programowanie dynamiczne i algorytmy zachłanne

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

ALGORYTMY POSZUKIWANIA I PORZĄDKOWANIA ELEMENTY JĘZYKA PROGRAMOWANIA

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Metoda "DZIEL i ZWYCIĘŻAJ"

Matematyczne Podstawy Informatyki

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Wstęp do programowania

PORZĄDEK WŚRÓD INFORMACJI

Algorytmy sortujące i wyszukujące

Teoretyczne podstawy informatyki

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Wstęp do programowania

Problemy porządkowe zadania

Programowanie dynamiczne cz. 2

Struktury Danych i Złożoność Obliczeniowa

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel

Algorytmy i Struktury Danych, 2. ćwiczenia

Sortowanie - wybrane algorytmy

[12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne).

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj

Schemat programowania dynamicznego (ang. dynamic programming)

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

Analiza algorytmów zadania podstawowe

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Temat 7. Najlżejsze i najcięższe algorytmy sortowania

TEORETYCZNE PODSTAWY INFORMATYKI

Wstęp do programowania

Michał Kazimierz Kowalczyk rok 1, semestr 2 nr albumu indeksu: Algorytmy i struktury danych. Problem połączeń

Zaawansowane algorytmy i struktury danych

Laboratoria nr 1. Sortowanie

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Projektowanie i analiza algorytmów

Wstęp do programowania

Rekurencja. Przykład. Rozważmy ciąg

Algorytm selekcji Hoare a. Łukasz Miemus

EGZAMIN MATURALNY 2012 INFORMATYKA

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Luty 2001 Algorytmy (4) 2000/2001

Temat: Algorytmy zachłanne

TEORETYCZNE PODSTAWY INFORMATYKI

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

Złożoność algorytmów. Wstęp do Informatyki

CO TO JEST ALGORYTM?

EGZAMIN MATURALNY Z INFORMATYKI POZIOM PODSTAWOWY MAJ 2014 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

1 Metody rozwiązywania równań nieliniowych. Postawienie problemu

Teoretyczne podstawy informatyki

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Sortowanie Shella Shell Sort

TEORETYCZNE PODSTAWY INFORMATYKI

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

TEORETYCZNE PODSTAWY INFORMATYKI

KOPCE KOLEJKI PRIORYTETOWE - PRZYPOMNIENIE KOPCE WYSOKOŚĆ KOPCA KOPCE I KOLEJKI PRIORYTETOWE PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

1.1. Uzupełnij poniższą tabelę: i wynik(i)

WYSZUKIWANIE I PORZĄDKOWANIE INFORMACJI

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

INFORMATYKA SORTOWANIE DANYCH.

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili

TEORETYCZNE PODSTAWY INFORMATYKI

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

Sortowanie. Bartman Jacek Algorytmy i struktury

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

Zadanie 1. Doskonała inaczej (6 pkt) Poniższy algorytm wyznacza wszystkie dzielniki liczby naturalnej n 1, mniejsze od n.

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

Wstęp do programowania

Sortowanie bąbelkowe

Transkrypt:

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 9 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B

Plan prezentacji Zasada dziel i zwyciężaj Przykłady znajdowanie maksimum i minimum przeszukiwanie binarne metoda bisekcji (połowienia) sortowanie przez scalanie sortowanie szybkie wypełnianie planszy Na podstawie: M. M. Sysło, Algorytmy

Zasada dziel i zwyciężaj Jednoczesne znajdowanie maksimum i minimum podziel problem na podproblemy podziel zbiór na dwa podzbiory: kandydatów na maksimum i kandydatów na minimum znajdź rozwiązania podproblemów znajdź minimum i maksimum w zbiorach kandydatów połącz rozwiązania podproblemów w rozwiązanie głównego problemu zwróć wynik min 3 1 4 6 3 5 1 2 8 4 7 6 max 5 2 8 7

Zasada dziel i zwyciężaj podziel problem na co najmniej 2 podproblemy (takie same lub bardzo podobne) znajdź rozwiązania podproblemów połącz rozwiązania podproblemów w rozwiązanie głównego problemu najczęściej podproblemy są tożsame z problemem głównym, ale dla mniejszego zbioru danych

Zasada dziel i zwyciężaj Jednoczesne znajdowanie maksimum i minimum 5 7 4 8 1 6 2 3 4 8 1 6 1 8

Przeszukiwanie binarne 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Metoda bisekcji jeśli f jest funkcją ciągłą w przedziale [a, b] i jeśli f(a)f(b) < 0, to funkcja ta musi mieć zero w (a, b)

Metoda bisekcji wyznaczamy punkt c = ½(a + b) oraz wartość funkcji f(c) jeśli f(a)f(c)<0 to b c jeśli f(b)f(c)<0 to a c

Metoda bisekcji jeśli f(a)f(c)<0 to b c

Metoda bisekcji Kryteria zakończenia: przekroczenie maksymalnej liczba kroków zadowalająco mały błąd zadowalająco mała wartość funkcji

Sortowanie przez scalanie podziel tablicę na dwie równe (prawie równe) części zastosuj sortowanie przez scalanie do każdej z nich oddzielnie połącz posortowane podciągi w jeden ciąg posortowany

Sortowanie przez scalanie Procedura scalania dwóch ciągów a[0..n-1] i b[0..m-1] do ciągu c[0..n+m-1] 1. ustaw indeksy na początek ciągów: i=0, j=0 2. jeśli w ciągu a nie pozostało już nic do przetworzenia (i>=n), to dołącz pozostałe elementy z b co c i zakończ 3. jeśli w ciągu b nie pozostało już nic do przetworzenia (j>=m), to dołącz pozostałe elementy z a co c i zakończ 4. jeśli a[i] <= b[j] to dołącz a[i] do c i zwiększ i o 1, w p.p. dołącz b[j] do c i zwiększ j o 1. 5. powtarzaj od 2.

Sortowanie przez scalanie 4 5 7 8 1 2 3 6

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2 3

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2 3 4

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2 3 4 5

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2 3 4 5 6

Sortowanie przez scalanie 4 5 7 8 1 2 3 6 1 2 3 4 5 6 7 8

Sortowanie przez scalanie Dane: ciąg liczb x p, x p+1,, x k Wynik: uporządkowanie ciągu liczb od najmniejszej do największej 1. jeśli p < k to s = (p + k)/2 w p. p. ciąg jest posortowany 2. zastosuj ten algorytm do ciągu x p,, x s 3. zastosuj ten algorytm do ciągu x s+1,, x k 4. scal ciągi x p,, x s oraz x s+1,, x k i umieść w ciągu x p, x p+1,, x k

Sortowanie szybkie Podziel tablicę na dwie części: mniejsze i większe od wybranego elementu Zastosuj sortowanie szybkie do każdej z nich oddzielnie Połącz posortowane podciągi w jeden ciąg posortowany

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 7 8 4 6 1 3 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 7 8 4 6 1 3 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 7 8 4 6 1 3 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 7 8 4 6 1 3 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 8 7 6 1 3 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 8 7 6 1 3 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 8 7 6 1 3 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 7 6 8 3 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 7 6 8 3 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 3 6 8 7 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 3 6 8 7 5

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 3 5 8 7 6

Sortowanie szybkie 2 7 8 4 6 1 3 5 2 4 1 3 5 8 7 6 1 2 3 4 5 8 7 6 1 2 3 4 5 8 7 6 1 2 3 4 5 8 7 6 1 2 3 4 5 6 7 8

Wypełnianie planszy Dysponując klockami oraz planszą 2 n 2 n z brakującym polem według http://home.math.uni.lodz.pl/horzel/

Wypełnianie planszy

Wypełnianie planszy

Wypełnianie planszy

Wypełnianie planszy

Wypełnianie planszy

Wypełnianie planszy

Wypełnianie planszy

Podsumowanie Zasada dziel i zwyciężaj podziel problem na co najmniej 2 podproblemy (takie same lub bardzo podobne) znajdź rozwiązania podproblemów połącz rozwiązania podproblemów w rozwiązanie głównego problemu Przykłady algorytmów