Krzysztof Diks Instytut Informatyki Uniwersytet Warszawski

Podobne dokumenty
Informatyka w szkole - algorytm Dijkstry dla każdego. Krzysztof Diks Instytut Informatyki, Uniwersytet Warszawski

Algorytmika Internetu

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

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

Algorytmy. Programowanie Proceduralne 1

Algorytmy w teorii liczb

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

Algorytmy. Programowanie Proceduralne 1

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Teoria obliczeń i złożoność obliczeniowa

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

KARTA MODUŁU KSZTAŁCENIA

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

Efektywność algorytmów

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

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

Wprowadzenie do złożoności obliczeniowej

Podstawy Informatyki. Sprawność algorytmów

Wykład z Technologii Informacyjnych. Piotr Mika

Wstęp do programowania

Matematyczne Podstawy Informatyki

Zasady analizy algorytmów

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

Algorytmy dla maszyny PRAM

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

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

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

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

Zadanie 1. Potęgi (14 pkt)

Modelowanie procesów współbieżnych

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

Liczby pierwsze wielomianowo - ekstremalnie trudne?

Sortowanie przez wstawianie

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

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

Definicje. Algorytm to:

Algorytmika i pseudoprogramowanie

PROBLEMY NIEROZSTRZYGALNE

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

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny

Technologie informacyjne Wykład VII-IX

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

Algorytmy i Struktury Danych.

Z nowym bitem. Informatyka dla gimnazjum. Część II

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Logika i teoria mnogości Wykład 14

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

WHILE (wyrażenie) instrukcja;

EGZAMIN MATURALNY 2012 INFORMATYKA

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

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Czas pracy: 60 minut

Sortowanie przez scalanie

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu

Wstęp do Programowania potok funkcyjny

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

JAKIEGO RODZAJU NAUKĄ JEST

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

TEORETYCZNE PODSTAWY INFORMATYKI

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

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

EGZAMIN MATURALNY Z INFORMATYKI

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

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Algorytmy Równoległe i Rozproszone Część IV - Model PRAM

Matematyczne Podstawy Informatyki

Optymalizacja. Przeszukiwanie lokalne

Sortowanie topologiczne skierowanych grafów acyklicznych

Podstawy systemów kryptograficznych z kluczem jawnym RSA

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

WYMAGANIA PROGRAMOWE INFORMATYKA DLA KLAS IV-VIII. II Programowanie i rozwiązywanie problemów z wykorzystaniem komputera i innych urządzeń cyfrowych

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

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

Metody numeryczne w przykładach

WHILE (wyrażenie) instrukcja;

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

Algorytmika Internetu. Krzysztof Diks Instytut Informatyki, Uniwersytet Warszawski

WYMAGANIA EDUKACYJNE

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

EGZAMIN MATURALNY OD ROKU SZKOLNEGO

Temat 20. Techniki algorytmiczne

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Roman Mocek Zabrze Opracowanie zbiorcze ze źródeł Scholaris i CKE

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne)

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Podstawy Programowania Algorytmy i programowanie

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

... (środowisko) minut

Dr inż. hab. Siergiej Fialko, IF-PK,

Algorytmy i struktury danych.

EGZAMIN MATURALNY W ROKU SZKOLNYM 2017/2018 INFORMATYKA

Algorytm i złożoność obliczeniowa algorytmu

INFORMATYKA POZIOM ROZSZERZONY

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

Transkrypt:

Krzysztof Diks Instytut Informatyki Uniwersytet Warszawski Pięć algorytmów, o których każdy wiedzieć powinien - wybór osobisty

David Harel: ALGORITHMICS. The Spirit of Computing. (Rzecz o istocie informatyki. Algorytmika.) Przepisy określiliśmy mianem algorytmów, obszar zaś ludzkich dociekań, wiedzy i doświadczeń dotyczących algorytmów nazwiemy algorytmiką. Algorytmika to więcej niż dział informatyki. Tkwi ona w centrum wszystkich działów informatyki

Donald E. Knuth: The art of computer programming (Sztuka programowania) Proces przygotowywania programu dla komputera cyfrowego jest pociągający nie tylko ze względu na potencjalne korzyści ekonomiczne czy naukowe. Wiążą się z nim również przeżycia estetyczne, podobne do tworzenia poezji lub komponowania muzyki. W dziedzinie programowania komputerów algorytm to rzecz podstawowa.

Bardzo krótka historia algorytmów około 350 p.n.e.: Algorytm Euklidesa IX wiek, Muhammed Alchwarizmi (lać. Algorismus): reguły dodawania, odejmowania, mnożenia i dzielenia zwykłych liczb dziesiętnych; rozwiązywanie równa liniowych i kwadratowych 1845, Lamé: analiza złożoności algorytmu Euklidesa ( co najwyżej 4.8 log(n)/log(10) - 0.32 kroków )

Bardzo krótka historia algorytmów 1936, Alan Turing: maszyna Turinga model obliczeń ogólnego przeznaczenia 1947, George Dantzig: metoda sympleks 1959, Edsger Wybe Dijkstra: najkrótsze ścieżki 1961, C.A.R. Hoare: Quicksort 1965, Edmonds: wielomianowa, a wykładnicza złożoność

Bardzo krótka historia algorytmów 1971, Stephen Cook: NP-zupełność problemu SAT 1971, Richard Karp: NP-zupełność ośmiu kluczowych problemów kombinatorycznych (redukcja Karpa) 1977, R. Rivest, A. Shamir, L. Adleman: RSA 2002, M. Agrawal, N. Kayal, N. Saxena: wielomianowy test pierwszości

Parametry jakości algorytmu: Poprawność (zgodność ze specyfikacją): częściowa poprawność, własność stopu, określoność obliczeń Złożoność obliczenia: czasowa i pamięciowa; pesymistyczna i oczekiwana

Algorytm 1 Najkrótsze ścieżki - Dijkstra

Edsger Wybe Dijkstra 1930-2002

For a demonstration for noncomputing people you have to have a problem statement that non-mathematicians can understand; they even have to understand the answer. So I designed a program that would find the shortest route between two cities in the Netherlands, using a somewhat reduced roadmap of the Netherlands, on which I had selected 64 cities (so that in the coding six bits would suffice to identify a city). What s the shortest way to travel from Rotterdam to Groningen? It is the algorithm for the shortest path, which I designed in about 20 minutes.

Google scholar:

Algorytm 2 QuickSort

Donald E. Knuth: Problematyka sortowania i wyszukiwania nadaje się do omówienia kilku ważnych zagadnień natury ogólnej: W jaki sposób tworzyć dobre algorytmy? W jaki sposób poprawiać istniejące programy i algorytmy? W jaki sposób matematycznie analizować efektywność algorytmów? Jak dokonywać racjonalnego wyboru między różnymi algorytmami dla tego samego zadania? Co to znaczy, że algorytm jest najlepszy z możliwych? Jak oddziałują na siebie teoria i praktyka? W jaki sposób efektywnie wykorzystać pamięci zewnętrzne, takie jak taśmy, bębny i dyski, w dużych bazach danych?

QuickSort idea: QS(X: (multi-)zbiór do posortowania); begin if X > 1 then begin niech x będzie elementem X; podziel X na zbiory M, {x}, W takie, że M = {m: m <= x} W = {w: w >= x} oraz M + W + 1 = X ; QS(M); wypisz x; QS(W) end end;

Składowe sort w C++: 1. QuickSort (Hoare, 1961) 2. HeapSort (Wiliams, 1964) 3. InsertionSort (folklor, lata 50-te XX wieku) Razem: IntroSort (Introspective Sorting)

Algorytm 3 System krytpograficzny RSA

System kryptograficzny (RSA) Rivest-Shamir-Adleman Fakt z teorii liczb: Niech p i q będą różnymi liczbami pierwszymi i niech N=pq. Wówczas dla dowolnej dodatniej liczby całkowitej e względnie pierwszej z (p-1)(q-1) zachodzi: 1. Funkcja f: {0,1,, N-1} -> {0,1,, N-1} określona jako f(x) = x^e mod N, jest różnowartościowa. 2. Jeśli d jest odwrotnością e modulo (p-1)(q-1), to dla każdego x ze zbioru {0,1,, N-1}, (x^e)^d x mod N

Algorytm 4 PageRank

1,062,660,523 Jak wielki jest Internet? Estimated size of Google's index: 49*10^9 (Wednesday, 27 September, 2017). Internet System Consortium # hosts Jan 2017 1,062,660,523 Jan 2016 1,048,766,623 Jan 2014 1,028,544,414 Jan 2013 926,230,757 Jan 2008 541,677,360 Jan 2001 109,574,429 Jan 2000 72,398,092

Topologia WWW (A. Broder et al. 9th WWW Conference, 2000)

Czym charakteryzuje się sieć WWW? -Sieć skierowana -Miliardy węzłów (Broder: 2.7*10^8 URLi) -Sieć jest rzadka (Broder: 2.13*10^9 linków) -Mała średnica (eksperyment Brodera: średnia długość zorientowanej ścieżki 16; średnia długość niezorientowanej ścieżki - 6)

Kilka podstawowych problemów algorytmicznych związanych z siecią WWW -wyszukiwanie i składowanie stron (zawartości) -indeksowanie -przetwarzania zapytań -odpowiadanie na zapytania w sposób zadowalający użytkownika -zgłębianie i analiza sieci WWW

1 1/4 1/2 1/2 3 1/2 1/2 1/4 2 1/4 1 1/4 4 5 1 6 In(2) I = {1,3,6}; Out(2) = {1,3,4,5}

PageRank, Brin & Page, 1998 ważność strony o nr i: R(i) = j ε We(i) R(j)/ Wy(j) Ważności obliczamy iteracyjnie. Początkowo wszystkie ważności są równe i wynoszą 1/n, gdzie n to liczba stron. Jeżeli przez R k (i) oznaczymy ważność strony i po wykonaniu k-tej iteracji, to R k+1 (i) = j ε We(i) R k (j)/ Wy(j)

PageRank, Brin & Page, 1998 Rozważmy macierz H o wymiarach nxn i taką, że H[i,j] = 1/ Wy(i) gdy istnieje połączenie od strony i do strony j, a 0 w przeciwnym przypadku. Niech R[1..n] będzie wektorem rang. Wówczas jedną iterację możemy zapisać jako: R (k+1)t = R (k)t H

Algorytm PageRank Obserwacje: -Każda iteracja kosztuje O(n^2) operacji arytmetycznych. -Szczęśliwie macierz H jest rzadka. Mnożenie można wykonać w czasie O(Nz(H)), czyli w praktyce O(n). -H jest prawie stochastyczną macierzą przejść. - Prawie powoduje, że węzeł lub grupy węzłów mogą pochłaniać rangi. -Problem stanowią też cykle, (np. O< >O).

Algorytm 5 Równoległość kontrakcja drzewa

Wojciech Rytter

Model komputera równoległego PRAM Parallel Random Access Machine Wspólna pamięć procesory P P P 1 P n- 2 P n- 3 2 2 P n Sterowanie

Podstawowa konstrukcja programistyczna for each x in X //do Instrukcja(x); obliczenia synchroniczne: odczyt ze wspólnej pamięci obliczenia lokalne zapis do wspólnej pamięci

Proste programy sekwencyjne Ciąg instrukcji przypisania x 1 := w 1 ; x 2 := w 2 ; x 3 := w 3 ; x n := w n ; nazywamy prostym programem sekwencyjnym, jeżeli wyrażenie w i (arytmetyczne) zawiera tylko zmienne o numerach < i lub stałe. Jeżeli P jest prostym programem sekwencyjnym, to przez graf(p) nazywamy graf skierowany o wierzchołkach będących zmiennymi i krawędziach łączących zmienną x i ze zmienną x j, jeżeli tylko x i, występuje w wyrażeniu w j. Będziemy rozważać tylko proste programy sekwencyjne, których grafy są drzewami binarnymi.

Obliczanie wartości wyrażenia arytmetycznego W = 2*(3*(x 1 + x 2 ) + 2*(2* x 3 ) + 2)) + x 4 Niech x 1 = 1, x 2 = 2, x 3 = 3, x 4 = 4. Oto prosty program sekwencyjny obliczający W. x 1 := 1; x 2 := 2; x 3 := 3; x 4 := 4; x 5 := 2*x 3 ; x 6 := x 5 + 2; x 7 := x 1 + x 2 ; x 8 := 3*x 7 + 2*x 6 ; x 9 := 2*x 8 + x 4 ; Powiemy, że zmienna x i jest bezpieczna, gdy wyrażenie w i zawiera co najwyżej jedną zmienną.

Równoległe obliczanie prostych programów sekwencyjnych repeat for each i = 1, 2,, n // do if x i bezpieczna then redukcja(x i ); until x n policzone; redukcja: zastąpienie zmiennej przez jej wyrażenie i maksymalne uproszczenie tak otrzymanego wyrażenia

43

Robert Bogucki Marek Cygan Maciej Klimek Jan Kanty Milczek Marcin Mucha

Quirin Fischer Rafał Józefowicz Jakub Pachocki Christopher Hesse Szymon Sidor Greg Brockman Shariq Hashme Jie Tang Przemyslaw Debiak Jeremy Schlatter Ilya Sutskever Tim Salimans Christopher Berner Catherine Olsson Jonas Schneider Vicki Cheung

Dziękuję!