Algorytmy przeszukiwania



Podobne dokumenty
Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów:

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

Programowanie w VB Proste algorytmy sortowania

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.

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

Jeszcze o algorytmach

Sortowanie danych. Jolanta Bachan. Podstawy programowania

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

Algorytmy sortujące i wyszukujące

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

Abstrakcyjne struktury danych - stos, lista, drzewo

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

Sortowanie bąbelkowe

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

Algorytmy sortujące. Sortowanie bąbelkowe

Listy, kolejki, stosy

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Znajdowanie wyjścia z labiryntu

Informatyka A. Algorytmy

Laboratorium nr 7 Sortowanie

Wykład 4. Klasa List Kolejki Stosy Słowniki

Wstęp do programowania

Sortowanie. Tomasz Żak zak. styczeń Instytut Matematyki i Informatyki, Politechnika Wrocławska

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

Zaawansowane algorytmy i struktury danych

Analiza algorytmów zadania podstawowe

INFORMATYKA SORTOWANIE DANYCH.

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

Wstęp do programowania

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

TEORETYCZNE PODSTAWY INFORMATYKI

Struktury Danych i Złożoność Obliczeniowa

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

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Struktury danych (I): kolejka, stos itp.

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

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

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

Rozdział 4. Algorytmy sortowania 73 Rozdział 5. Typy i struktury danych 89 Rozdział 6. Derekursywacja i optymalizacja algorytmów 147

Algorytmika i pseudoprogramowanie

Sortowanie - wybrane algorytmy

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

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Sortowanie bąbelkowe - wersja nr 1 Bubble Sort

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,

Algorytmy i struktury danych

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

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

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Programowanie obiektowe

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

PODSTAWY INFORMATYKI wykład 5.

Rozkład materiału do realizacji informatyki w szkole ponadgimnazjalnej w zakresie rozszerzonym

PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE

Podstawy Programowania 1 Sortowanie tablic jednowymiarowych. Plan. Sortowanie. Sortowanie Rodzaje sortowania. Notatki. Notatki. Notatki.

Wstęp do programowania

Teoretyczne podstawy informatyki

Luty 2001 Algorytmy (4) 2000/2001

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

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

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

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)

Algorytm selekcji Hoare a. Łukasz Miemus

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Typy zadań kombinatorycznych:

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

Metoda list prostych Wykład II. Agnieszka Nowak - Brzezińska

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

5. Rozwiązywanie układów równań liniowych

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Java Collections Framework

Sortowanie. LABORKA Piotr Ciskowski

Kompletna dokumentacja kontenera C++ vector w -

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:

Algorytmy sortowania w języku C. Autor: mgr inż. Sławomir Samolej. Zagadnienie 1. (Sortowanie)

ELEMENTY KOMBINATORYKI

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

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

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Algorytmy i Struktury Danych, 2. ćwiczenia

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

1. Funkcje monotoniczne, wahanie funkcji.

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

X Y 4,0 3,3 8,0 6,8 12,0 11,0 16,0 15,2 20,0 18,9

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

WSTĘP DO INFORMATYKI. Struktury liniowe

Porównanie Heap Sort, Counting Sort, Shell Sort, Bubble Sort. Porównanie sortowao: HS, CS, Shs, BS

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

. Podstawy Programowania 1. Sortowanie tablic jednowymiarowych. Arkadiusz Chrobot. 16 listopada 2016

Zadanie 3 Oblicz jeżeli wiadomo, że liczby 8 2,, 1, , tworzą ciąg arytmetyczny. Wyznacz różnicę ciągu. Rozwiązanie:

ALGORYTMY I STRUKTURY DANYCH

Sortowanie w czasie liniowym

Lista 5 Typy dynamiczne kolejka

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Transkrypt:

Algorytmy przeszukiwania Przeszukiwanie liniowe Algorytm stosowany do poszukiwania elementu w zbiorze, o którym nic nie wiemy. Aby mieć pewność, że nie pominęliśmy żadnego elementu zbioru przeszukujemy go element po elemencie. Oznacza to, że elementy zbioru zostają ustawione w ciąg, który jest przeszukiwany od jednego z jego końców. a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 a 10 a 11 a 12 a 13 a 14 a 15 a 16

Przeszukiwanie binarne Algorytm ten stosuje się w sytuacji, gdy elementy zbioru maja pewną strukturę, np. są uporządkowane. W takiej sytuacji wykorzystujemy tą dodatkowa informację. Przykład Chcemy odgadnąć liczbę naturalną z przedziału [1, N]. W każdej chwili dysponujemy podpowiedzią w postaci: tak, za mało, za dużo. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 11 12 13 14 15 16 17 18 19 20 16 17 18 19 20 16 17 17! W pojedynczym wypadku algorytm liniowy może dać szybciej odpowiedź niż algorytm binarny, ale przy wielu próbach prawie zawsze algorytm binarny jest szybszy. Dane w tym przykładzie to uporządkowany ciąg liczb w tablicy a[k],...,a[l], gdzie k l oraz element y spełniający równość a[k] y a[l]. Trzeba znaleźć takie s (k s l ), że a[s]=y (chyba, że taki element nie istnieje). Algorytm (język naturalny - punkty): 1. Wprowadzenie tablicy a[k],a[k+1],..., a[l] 2. Przypisujemy końce przedziału lewy=k, prawy=l 3. Jeśli lewy>prawy to brak szukanej liczby i koniec

4. W przeciwnym przypadku s=int( (lewy+prawy)/2 ) 5. Jeśli a[s] = y to wyprowadzamy s, a[s] i koniec 6. Jeśli a[s]<y to lewy=s+1, a w przeciwnym przypadku prawy=s-1 i wracamy do pkt. 3

Algorytmy porządkowania (sortowania) Porządkowanie występuje niemal w każdej dziedzinie wiedzy. Jeśli elementy w zbiorze są posortowane zgodnie z jakąś regułą, np. według liter, dat, długości itd., to wykonywanie wielu operacji na zbiorze staje się łatwiejsze. Dotyczy to szczególnie: - sprawdzanie czy dany element, tzn. element o ustalonej wartości cechy według której uporządkowano zbiór, znajduje się w zbiorze - znalezienie elementu jeśli jest w zbiorze - dołączenie nowego elementu w danym miejscu, tak aby zbiór pozostał uporządkowany Algorytm bąbelkowy 1) Algorytm opiera się na obserwacji według której, jeśli ciąg nie jest uporządkowany, to znajdują się w nim co najmniej dwa elementy, które są w niewłaściwych miejscach. 2) Każdą parę elementów stojącą obok siebie w niewłaściwym porządku należy przestawić. 3) Algorytm należy skonstruować tak, aby nie pominąć żadnej pary i porządkowanie było jak najbardziej efektywne. 4) Należy pamiętać, że po każdym porządkowaniu należy sprawdzić czy zamiana nie spowodowała niewłaściwego uporządkowania między innymi elementami. 5) Maksymalna ilość etapów porządkowania dla N elementów wynosi N-1, przy czym w każdym etapie porządkowany jest co najmniej jeden element.

Linia przerywana wskazuje miejsce powyżej którego w danym etapie nie trzeba przeszukiwać par. Jest to miejsce, gdzie ostatnio zamieniono parę liczb w poprzednim etapie. Algorytm porządkowania przez wybór 1) Jeśli chcemy ustawić elementy ciągu w kolejności od najmniejszego do największego to można wybrać najmniejszy element ciągu i umieścić go na początku. 2) W drugim etapie należy znaleźć element najmniejszy z pozostałych elementów (poza tymi już ustawionymi) i umieścić go na drugim miejscu itd.. 3) Elementy należy ustawiać ekonomicznie, najlepiej w ramach tej samej struktury danych, tzn. przestawiać elementy na właściwe miejsca.

4) Algorytm wymaga dla N elementów N-1 etapów przy czym w każdym etapie porządkowany jest dokładnie jeden element. Linia przerywana wskazuje miejsce poniżej którego w danym etapie elementy są ustawione. Jest to miejsce, w którym ustawiono element w wyniku zamiany w poprzednim etapie.

Porządkowanie kubełkowe i pozycyjne W porządkowaniu kubełkowym kolejne elementy zbioru, który sortujemy umieszczamy w odpowiednich kubełkach. By zbiór został całkowicie uporządkowany, kubełki wypełnione w pierwszym etapie, muszą być opróżniane w drugim etapie, według kolejności przypisanych im nazw. Kolejność opróżniania kubełków jest kolejnością posortowanych elementów rozważanego zbioru. Kubełki są napełniane i opróżniane od dołu tworząc strukturę danych zwaną kolejką. Kolejki pracują według zasady FIFO (First-In, First-Out). Inna wykorzystywana strukturą jest stos. W stosie elementy są składowane jeden na drugim i opróżnianie stosu następuje od góry, tj. od elementu najpóźniej wprowadzonego do stosu. Stosy pracują według zasady LIFO (Last-In, First-Out). Stos najczęściej występuje w iteracyjnych realizacjach algorytmów rekurencyjnych. Częstym błędem pojawiającym się przy programowaniu jest przepełnienie stosu ( stack overflow ). Porządkowanie kubełkowe liter wyrazu ABRAKADABRA.

Porządkowanie pozycyjne to sortowanie słów zgodnie z porządkiem słownikowym, czyli tak jak w słownikach i encyklopediach. Należy zachować dwie zasady: - jeśli dwa słowa mają jednakową długość, to szukamy w nich pierwszej pozycji, na której się różnią i pierwsze jest to słowo, które ma na tej pozycji wcześniejszą literę (np. ARAB ARAK) - jeśli słowa mają nierówną długość, to albo szukamy pierwszej pozycji, na której się różnią i litera na tej pozycji decyduje o miejscu ustawienia słowa, albo jedno słowo jest częścią drugiego i wtedy występuje w słowniku przed każdym słowem, w którym jest zawarte na początku (np. BAR BARD). Porządkowanie słów jednakowej długości polega na porządkowaniu ich od końca, pozycja po pozycji, z zastosowaniem do każdej pozycji algorytmu kubełkowego. Porządkowanie słów czteroliterowych powstałych z liter słowa ABRAKADABRA.