PODSTAWY INFORMATYKI wykład 10.

Podobne dokumenty
PODSTAWY INFORMATYKI wykład 5.

PODSTAWY INFORMATYKI wykład 6.

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

PODSTAWY INFORMATYKI wykład 1.

WSTĘP DO INFORMATYKI WPROWADZENIE DO ALGORYTMIKI

Sortowanie w czasie liniowym

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

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

WSTĘP DO INFORMATYKI. Złożoność obliczeniowa, efektywność i algorytmy sortowania

Sortowanie danych. Jolanta Bachan. Podstawy programowania

WSTĘP DO INFORMATYKI. Struktury liniowe

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

PODSTAWY INFORMATYKI wykład 13.

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

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

Zadania do samodzielnego rozwiązania

PODSTAWY INFORMATYKI wykład 4.

Algorytmy sortujące i wyszukujące

METODY INŻYNIERII WIEDZY

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Programowanie Proceduralne

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

Struktury Danych i Złożoność Obliczeniowa

Programowanie w VB Proste algorytmy sortowania

METODY INŻYNIERII WIEDZY

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej.

Załącznik Nr 5 do Zarz. Nr 33/11/ Kod przedmiotu:aisd2

Laboratorium nr 7 Sortowanie

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Algorytm selekcji Hoare a. Łukasz Miemus

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Matematyczne Podstawy Informatyki

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

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

Podstawy informatyki I r.

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

Algorytmy i Struktury Danych.

Algorytmy i struktury danych.

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

KONKURS MATEMATYCZNY

METODY INŻYNIERII WIEDZY

Jeszcze o algorytmach

Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Niestacjonarne (stacjonarne / niestacjonarne)

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Podstawy Programowania

Wstęp do programowania

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Zestaw zadań dotyczących liczb całkowitych

Sortowanie. Bartman Jacek Algorytmy i struktury

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

VII Olimpiada Matematyczna Gimnazjalistów

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

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność.

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

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 równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010.

Sortowanie bąbelkowe

PRZEWODNIK PO PRZEDMIOCIE

Ogólne wiadomości o grafach

Skrypt 31. Powtórzenie do matury Liczby rzeczywiste

Sortowanie Shella Shell Sort

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

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

Luty 2001 Algorytmy (4) 2000/2001

Sortowanie topologiczne skierowanych grafów acyklicznych

Graf. Definicja marca / 1

Sortowanie - wybrane algorytmy

Generowanie ciągów pseudolosowych o zadanych rozkładach przykładowy raport

KARTA MODUŁU KSZTAŁCENIA

Wprowadzenie do złożoności obliczeniowej

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

4. Postęp arytmetyczny i geometryczny. Wartość bezwzględna, potęgowanie i pierwiastkowanie liczb rzeczywistych.

Modelowanie i obliczenia techniczne. dr inż. Paweł Pełczyński

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Egzaminy i inne zadania. Semestr II.

Obliczenia naukowe Wykład nr 8

Scenariusz lekcji. podać definicję liczby pierwszej i naturalnej; opisać sposób szukania liczb pierwszych za pomocą sita Eratostenesa.

Laboratoria nr 1. Sortowanie

Sortowanie przez wstawianie Insertion Sort

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

Obliczenia naukowe Wykład nr 6

Jarosław Wróblewski Matematyka Elementarna, zima 2012/13

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Materiały dla finalistów

INFORMATYKA SORTOWANIE DANYCH.

Algorytmiczna teoria grafów

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

Język programowania PASCAL

Filtracja obrazów. w dziedzinie częstotliwości. w dziedzinie przestrzennej

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania. Technologie informatyczne

Algorytmy zrandomizowane

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

Zestaw 1: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.adb i.ads)!!! Zad. 1: Zad. 2: 2,2,2 5,5,5,5,5,5 Zad.

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

Macierze - obliczanie wyznacznika macierzy z użyciem permutacji

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

Transkrypt:

PODSTAWY INFORMATYKI wykład 10. Adrian Horzyk Web: http://home.agh.edu.pl/~horzyk/ E-mail: horzyk@agh.edu.pl Google: Adrian Horzyk Gabinet: paw. D13 p. 325 Akademia Górniczo-Hutniacza w Krakowie WEAIiE, Katedra Automatyki http://www.agh.edu.pl Mickiewicza Av. 30, 30-059059 Cracow, Poland

Sortowanie kubełkowe (Bucket Sort) Sortowanie kubełkowe stosujemy przy założeniu, że dane wejściowe będą liczbami rzeczywistymi wybieranymi z przedziału [0, 1) zgodnie z rozkładem jednostajnym (tj. taki, że dla każdego zdarzenia elementarnego s należącego do przestrzeni skończonej prawdopodobieństwo wynosi 1/ S ). Idea sortowania kubełkowego opiera się na triku polegającym na podziale przedziału [0,1) na n podprzedziałów jednakowych rozmiarów, tzw. kubełków, a następnie rozrzuceniu n liczb do kubełków, do których należą. Ponieważ liczby są jednostajnie rozłożone w przedziale [0,1), więc oczekujemy, że w każdym kubełku nie będzie ich zbyt wiele. Aby otrzymać ciąg wynikowy, sortujemy najpierw liczby w każdym z kubełków, a następnie wypisujemy je, przeglądając kolejno kubełki. Kubełki implementujemy w postaci list, do których wstawiamy elementy przy pomocy algorytmu sortowania przez proste wstawianie. W ten sposób uzyskujemy kubełki składające się z posortowanych elementów. Wykład 10. Strona 2.

Sortowanie kubełkowe procedure Bucket-Sort; var i : integer; begin for i := 1 to n do Wstaw a[i] do posortowanej listy b[ n * a[i] ]; Połącz listy b[0], b[1],..., b[n-1]; end {Bucket -Sort}; Pesymistyczny czas wstawiania kolejnych elementów do n list algorytmem prostego wstawiania wynosi, gdyż ze względu na przyjętą jednostajność rozkładu. Wykład 10. Strona 3.

Mediana i jej odnajdywanie Mediana (median) to taki element zbioru, od którego w tym zbiorze jest tyle samo elementów większych lub równych co mniejszych lub równych. Jeśli zbiór Z jest posortowany rosnąco, to: Przy nieparzystej liczbie elementów n > 1 mediana jest elementem środkowym Z[ n / 2 ] (indeksy elementów rozpoczynają się od 0), np. dla zbioru Z = {1,3,5,8,9} medianą jest element 5 - poprzedzają go dwa elementy 1 i 3 oraz wyprzedzają dwa elementy 8 i 9. Przy parzystej liczbie elementów n > 1 mediana jest średnią arytmetyczną dwóch środkowych elementów Z[ n / 2-1] i Z[ n / 2 ], np. dla zbioru Z = {1,3,5,8,9,9} mediana jest równa (5 + 8) / 2 = 6,5. Od tej wartości jest dokładnie tyle samo elementów mniejszych (1,3,5) co większych (8,9,9). Istnieją również pojęcia dolnej mediany (lowermedian) i górnej mediany (upper median), które w tym przypadku oznaczają odpowiednio element Z[ n / 2-1] i Z[ n / 2 ] w ciągu uporządkowanym o parzystej liczbie elementów. Mediana posiada wiele ważnych zastosowań praktycznych w statystyce, grafice, obróbce dźwięku i wielu innych dziedzinach. Wykład 10. Strona 4.

Wyznaczanie liczb pierwszych Liczby pierwsze pełnią niezwykle ważne zadanie w matematyce oraz wszelkiego rodzaju algorytmach szyfrowania danych ze względu na to, iż nie są podzielne przez inne liczby tylko przez siebie same i przez 1. Liczby pierwsze możemy najprościej wyznaczyć przez sprawdzenie ich podzielności przez inne liczby mniejsze od nich. Czy można efektywniej? Eliminujemy podzielne przez 2, 3, Sprawdzanie podzielności przez liczby mniejsze od sqrt(p), bo jeśli istnieje jeden dzielnik większy lub równy sqrt(p) to drugi musi być mniejszy lub równy sqrt(p), Umieszczanie odnalezionych liczb pierwszych w tablicy i sprawdzanie podzielności tylko przez nie. Wykład 10. Strona 5.

Liczby pierwsze Sito Eratostenesa Sito Eratostenesa jeśli ze zbioru usuniemy wszystkie wielokrotności liczby pierwszej 2, potem 3, potem kolejnej jaka pozostała, czyli 5, bo 4 już zostało zredukowane, to w wyniku otrzymamy listę/tablicę liczb pierwszych. azwa sito pochodzi od czynności odsiewania kolejnych wielokrotności liczb pierwszych ze zbioru liczb. Wykład 10. Strona 6.

Liczby pierwsze Sito Etkina-Bernsteina Sito Atkina-Bernsteina rozpoczyna pracę ze zbiorem S, w którym wszystkie liczby są zaznaczone jako złożone (czyli nie pierwsze). Algorytm zupełnie ignoruje liczby podzielne przez 2, 3 lub 5 i opiera swoje działanie na następujących faktach matematycznych: Wszystkie liczby dające resztę z dzielenia przez 60 równą 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56 lub 58 są podzielne przez 2, zatem nie są pierwsze - algorytm je ignoruje. Wszystkie liczby dające resztę z dzielenia przez 60 równą 3, 9, 15, 21, 27, 33, 39, 45, 51 lub 57 są z kolei podzielne przez 3 i również nie są pierwsze - algorytm je ignoruje. Wszystkie liczby dające resztę z dzielenia przez 60 równą 5, 25, 35 lub 55 są podzielne przez 5 i nie są pierwsze - algorytm je ignoruje. Wszystkie liczby dające resztę z dzielenia przez 60 równą 1, 13, 17, 29, 37, 41, 49 lub 53 posiadają resztę z dzielenia przez 12 równą 1 lub 5. Liczby te są pierwsze wtedy i tylko wtedy, gdy liczba rozwiązań równania 4x 2 + y 2 = n jest nieparzysta dla x,y N, a liczba n nie jest kwadratem innej liczby naturalnej. Wszystkie liczby dające resztę z dzielenia przez 60 równą 7, 19, 31 lub 43 posiadają resztę z dzielenia przez 12 równą 7. Są one liczbami pierwszymi wtedy i tylko wtedy, gdy liczba rozwiązań równania 3x 2 + y 2 = n jest nieparzysta dla x,y N, a liczba n nie jest kwadratem innej liczby naturalnej. Wszystkie liczby dające resztę z dzielenia przez 60 równą 11, 23, 47 lub 59 posiadają resztę z dzielenia przez 12 równą 11. Są one liczbami pierwszymi wtedy i tylko wtedy, gdy liczba rozwiązań równania 3x 2 y 2 = n jest nieparzysta dla x,y N, a liczba n nie jest kwadratem innej liczby naturalnej. Wykład 10. Strona 7.

Graf Graf to taka struktura danych, w której poszczególne węzły zwane też wierzchołkami połączone mogą być każdy z każdym krawędziami skierowanymi lub nieskierowanymi. Wierzchołki i krawędzie mogą być odpowiednio etykietowane i nieść pewną dodatkową informację. W porównaniu do drzew w grafach mogą występować pętle i cykle. Grafy możemy zaimplementować w postaci tablicy określającej rodzaj połączenia oraz jego etykietę lub dynamicznie korzystając ze wskaźników. 4. 10. 1. 7. 5. 2. 3. 8. 6. 9. 1 2 3 4 5 6 7 8 9 10 1 1 1 2 1 1 3 1 1 4 1 1 1 5 1 1 1 1 6 1 1 1 7 1 1 8 1 1 9 1 10 1 Wykład 10. Strona 8.

Dynamiczna implementacja grafu Grafy podobnie jak listy i drzewa mogą być zaimplementowane z wykorzystaniem rekordów(ew. obiektów) z wykorzystaniem wskaźników. 4. 10. 1. 7. 5. 2. 3. 8. 6. 9. 1. 2. 4. W3 5. W3 W4 7. 8. 10. 3. 6. W3 9. Wykład 10. Strona 9.

Literatura i bibliografia: L. Banachowski, K. Diks, W. Rytter: Algorytmy i struktury danych, WNT, Warszawa, 2001 Z. Fortuna, B. Macukow, J. Wąsowski, Metody numeryczne, WNT, Warszawa, 1993. K. Jakubczyk, Turbo Pascal i Borland C++, Wydanie II, Helion, 2006. J. i M. Jankowscy, Przegląd metod i algorytmów numerycznych, WNT, Warszawa, 1988. A. Kiełbasiński, H. Schwetlick, Numeryczna algebra liniowa, WNT, Warszawa 1992. A. Kierzkowski, Turbo Pascal. Ćwiczenia praktyczne., Helion 2006. K. Koleśnik, Wstęp do programowania z przykładami w Turbo Pascalu, Helion, M. Sysło: Elementy Informatyki. A. Szepietowski: Podstawy Informatyki. R. Tadeusiewicz, P. Moszner, A. Szydełko: Teoretyczne podstawy informatyki. W. M. Turski: Propedeutyka informatyki. N. Wirth: Wstęp do programowania systematycznego. N. Wirth: ALGORYTMY + STRUKTURY DANYCH = PROGRAMY. Wikipedia Algorytmy sortujące: http://edu.i-lo.tarnow.pl/inf/index.php Algorytmy sortujące: http://www.home.umk.pl/~abak/wdimat/s/index.html Wykład 10. Strona 10.