Jeszcze o algorytmach

Podobne dokumenty
znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

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.

Struktury Danych i Złożoność Obliczeniowa

Luty 2001 Algorytmy (4) 2000/2001

Informatyka A. Algorytmy

Algorytmy i Struktury Danych, 2. ćwiczenia

Laboratorium nr 7 Sortowanie

Programowanie w VB Proste algorytmy sortowania

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

Algorytmy sortujące i wyszukujące

INFORMATYKA SORTOWANIE DANYCH.

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

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Algorytm selekcji Hoare a. Łukasz Miemus

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

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Algorytmy przeszukiwania

Matematyczne Podstawy Informatyki

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

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

PODSTAWY INFORMATYKI wykład 5.

Analiza algorytmów zadania podstawowe

Podstawy Informatyki. Sprawność algorytmów

Zaawansowane algorytmy i struktury danych

Algorytmy i struktury danych. Wykład 4

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Informatyka 1. Złożoność obliczeniowa

TEORETYCZNE PODSTAWY INFORMATYKI

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

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

Efektywna metoda sortowania sortowanie przez scalanie

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

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

ZADANIE 1. Ważenie (14 pkt)

Sortowanie zewnętrzne

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1

Sortowanie przez wstawianie Insertion Sort

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

Kompletna dokumentacja kontenera C++ vector w -

Algorytmy i struktury danych

Sortowanie bąbelkowe

Klasa 6. Liczby dodatnie i liczby ujemne

Algorytm. a programowanie -

Zadanie projektowe 1: Struktury danych i złożoność obliczeniowa

Złożoność obliczeniowa zadania, zestaw 2

Algorytmy przeszukiwania wzorca

Technologie informacyjne Wykład VII-IX

TEORETYCZNE PODSTAWY INFORMATYKI

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Wstęp do programowania

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Klasa 6. Liczby dodatnie i liczby ujemne

ALGORYTMY POSZUKIWANIA I PORZĄDKOWANIA ELEMENTY JĘZYKA PROGRAMOWANIA

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

Algorytmy i Struktury Danych.

PORZĄDEK WŚRÓD INFORMACJI

Strategia "dziel i zwyciężaj"

Część I. Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania. Zadanie 1.1. (0 3)

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Podstawy Programowania

Podstawy Programowania. Złożoność obliczeniowa

Algorytm i złożoność obliczeniowa algorytmu

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

CO TO JEST ALGORYTM?

Sortowanie - wybrane algorytmy

1. Analiza algorytmów przypomnienie

Rekurencja (rekursja)

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Sortowanie. LABORKA Piotr Ciskowski

KONSPEKT FUNKCJE cz. 1.

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Algorytmy. 1. Sortowanie 2. Statki i okręty. programowanie cz.7. poniedziałek, 2 marca 2009

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

Sortowanie przez scalanie

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 )

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

Podstawy Informatyki. Metalurgia, I rok. Rekurencja. skomplikowane zadanie. Rekurencja

Podstawy Informatyki. Metalurgia, I rok. Wykład 5 Rekurencja

WYMAGANIA EGZAMINACYJNE Egzamin maturalny z INFORMATYKI

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

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

Algorytmy w teorii liczb

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 2018/19 semestr zimowy. Wykład 5. Karol Tarnowski A-1 p.

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

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

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

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

KONSPEKT ZAJĘĆ KOŁA INFORMATYCZNEGO LUB MATEMATYCZNEGO W KLASIE III GIMNAZJUM LUB I LICEUM ( 2 GODZ.)

Zestaw C-11: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp i.h)!!! Zad. 1: Zad. 2:

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Podstawy Programowania. Złożoność obliczeniowa

Matematyka dyskretna

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

Piotr Chrząstowski-Wachtel Uniwersytet Warszawski. Al Chwarizmi i trzy algorytmy Euklidesa

Transkrypt:

Jeszcze o algorytmach Przykłady różnych, podstawowych algorytmów 11.01.2018 M. Rad

Plan Powtórka Znajdowanie najmniejszego elementu Segregowanie Poszukiwanie przez połowienie Wstawianie Inne algorytmy segregowania Algorytm Euklidesa I termin egzaminu z informatyki: 31.01.2018 (środa) godzina 13.30 sala 121 budynek B1 II termin egzaminu z informatyki: 07.02.2018 (środa) godzina 11.30, sala 0.14 budynek B1

Powtórka Jak porównywać ze sobą algorytmy: Złożoność obliczeniowa: Jest to funkcja określająca ilość zasobów potrzebnych do wykonania danego algorytmu w zależności od rozmiaru danych wejściowych Inne własności: stopień skomplikowania (np. ilość linii w zapisie), przydatność do określonego zagadnienia, itp...

Znajdowanie najmniejszego elementu Dany jest zbiór liczb, należy znaleźć najmniejszy element

Znajdowanie najmniejszego elementu Rozwiązanie: 1. Weź pierwszy element i chwilowo uznaj że jest najmniejszy 2. porównaj z kolejnym, jeśli kolejny jest mniejszy to uznaj, że to jest najmniejszy, jeśli nie to nic nie rób 3. Powtarzaj punkt 2 aż do wyczerpania zbioru 4. Wartość która po przejściu całości jest uważana za najmniejszą jest rzeczywiście najmniejszą w zbiorze

Znajdowanie najmniejszego elementu Taki algorytm jest najczęściej nazywany przeszukiwaniem liniowym. Jaka jest jego złożoność obliczeniowa? Czy istnieje algorytm prostszy? Jak zmodyfikować algorytm aby znajdował największy element? Czemu mówimy o tak prostym zagadnieniu?

Segregowanie Segregowanie lub uporządkowanie informacji to dla np. dla zbioru liczb ustawienie od najmniejszej do największej Czy algorytm znajdowania min. da się wykorzystać w algorytmie segregowania? Tak, jest to nazywane segregowaniem przez wybór Jaka będzie złożoność obliczeniowa takiego łączonego algorytmu? A po co w ogóle segregować?

Algorytm poszukiwania przez połowienie Dane: uporządkowany ciąg x n, gdzie n=<0 k> Szukane: znaleźć n takie, że x n = s Algorytm: 1. Oznacz lewy_koniec=0 prawy_koniec=k 2.Podziel zbiór L=(prawy_koniec+lewy_koniec) div 2 (czyli L trafia w środek przedziału) 3.Jeśli x L = s to koniec, szukane n równa się L 4.Jeśli x L < s to lewy_koniec=l+1 w przeciwnym przypadku (czyli gdy x L > s) prawy_koniec=l-1 5.Wróć do punktu 2.

Algorytm poszukiwania przez połowienie Czy istnieją prostsze algorytmy? Czemu ten jest dobry? A jaka jest złożoność obliczeniowa? Jeśli elementów jest 16 to należy wykonać co najwyżej 4 podziały Jeśli elementów jest 32 to 5 podziałów itd. Czyli złożoność O(n)= log 2 N gdzie N to potęga liczby 2 nie mniejsza niż n

Log 2 N

Poszukiwanie jeszcze szybsze Metoda poszukiwania interpolacyjnego albo ze słownikiem

A wstawianie Algorytm wstawiania elementu na miejsce tak aby zbiór pozostał uporządkowany jest analogiczne do szukania z połowieniem Czyli złożoność O(n)= log 2 N

Inne algorytmy segregowania Sortowanie przez wstawianie: Dane: nieposortowany zbiór xi Szukane: zbiór posortowany xn Algorytm Weź pierwszy element ze zbioru wejściowego i umieść w wyjściowym Weź kolejny i wstaw w odpowiednie miejsce (odpowiednie to znaczy po mniejszym ale przed większym) Postępuj tak aż do końca zbioru wejściowego

Sortowanie przez wstawianie Jaka jest złożoność obliczeniowa? Trzeba wziąć każdy z n elementów i umieścić w odpowiednim miejscu posegregowanego ciągu Jeśli zrobić to liniowo to jest n porównań czyli O(n)=n*n=n 2. Ale do umieszczania można użyć algorytmu umieszczania z połowieniem którego złożoność wynosi O(n)= log 2 N I wtedy O(n)= n*log 2 n

Inne algorytmy sortowania Poprzez scalanie (wykorzystuje rekurencję) Co to jest rekurencja? Sortowanie bąbelkowe O(n) = n 2 I jeszcze kilka innych...

Algorytm Euklidesa Znajduje największy wspólny dzielnik (NWD) dwóch liczb Opiera się na założeniu, że NWD nie zmienia się gdy od liczby większej odejmiemy mniejszą 21 14 21 14 = 7 14 7 14 7 = 7 7 7 NWD = 7 21 30 30 21 = 9 21 9 21 9 = 12 9 12 12 9 = 3 9 3 9 3 = 6 3 6 6 3 = 3 3 3 NWD =3

Algorytm Euklidesa