Algorytmika Internetu

Podobne dokumenty
Algorytmika Internetu. Krzysztof Diks Instytut Informatyki, Uniwersytet Warszawski

Wszechnica Popołudniowa: Tendencje w rozwoju informatyki i jej zastosowań Algorytmika Internetu. Krzysztof Diks

Krzysztof Diks Instytut Informatyki Uniwersytet Warszawski

Sieci komputerowe. Wykład 8: Wyszukiwarki internetowe. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

Efektywność algorytmów

Badanie struktury sieci WWW

Algorytm Grovera. Kwantowe przeszukiwanie zbiorów. Robert Nowotniak

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

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Programowanie dynamiczne cz. 2

Algorytmy w teorii liczb

UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne

Podstawy Programowania Algorytmy i programowanie

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

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Liczby pierwsze wielomianowo - ekstremalnie trudne?

Ogólne wiadomości o grafach

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

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

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

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

Algorytmy. Programowanie Proceduralne 1

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

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Lista 0. Kamil Matuszewski 1 marca 2016

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

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

PageRank i HITS. Mikołajczyk Grzegorz

Sortowanie topologiczne skierowanych grafów acyklicznych

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

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

Programowanie liniowe metoda sympleks

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

Algorytmy. Programowanie Proceduralne 1

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

Programowanie liniowe metoda sympleks

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

METODY NUMERYCZNE. wykład. konsultacje: wtorek 10:00-11:30 środa 10:00-11:30. dr inż. Grażyna Kałuża pokój

UKŁADY RÓWNAŃ LINIOWYCH -Metody dokładne

Problem komiwojażera ACO. Zagadnienie optymalizacyjne, polegające na znalezieniu minimalnego cyklu Hamiltona w pełnym grafie ważonym.

Sztuczna Inteligencja i Systemy Doradcze

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Analiza numeryczna Kurs INP002009W. Wykłady 6 i 7 Rozwiązywanie układów równań liniowych. Karol Tarnowski A-1 p.

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

Zadanie 1. Suma silni (11 pkt)

Matematyczne Podstawy Informatyki

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

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

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

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Informatyka A. Algorytmy

Wykład z Technologii Informacyjnych. Piotr Mika

Znajdowanie maksymalnych skojarzeń przy pomocy eliminacji Gaussa

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Podstawy systemów kryptograficznych z kluczem jawnym RSA

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

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

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

WHILE (wyrażenie) instrukcja;

Algorytmy i Struktury Danych.

WHILE (wyrażenie) instrukcja;

Szyfrowanie RSA (Podróż do krainy kryptografii)

Algorytm selekcji Hoare a. Łukasz Miemus

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

Programowanie liniowe

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

Maksymalne skojarzenia przy pomocy eliminacji Gaussa

Grafy Alberta-Barabasiego

Układy równań liniowych, macierze, Google

Sortowanie przez scalanie

Technologie informacyjne Wykład VII-IX

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

Siedem cudów informatyki czyli o algorytmach zdumiewajacych

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

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Zagadnienie transportowe

Programowanie liniowe metoda sympleks

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

Elementy modelowania matematycznego

PageRank. Bartosz Makuracki. 28 listopada B. Makuracki PageRank

Scenariusz lekcji. rozpoznać prawidłową deklarację tablicy; podać odwołanie do określonego elementu tablicy.

Narodziny Rozwój Dojrzałość Historia Internetu

Matematyka dyskretna

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

Wykład 2. Drzewa poszukiwań binarnych (BST)

3. Macierze i Układy Równań Liniowych

Zaawansowane algorytmy i struktury danych

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

Kierunek: Informatyka. Przedmiot:

Metody numeryczne w przykładach

Optymalizacja. Symulowane wyżarzanie

Analiza algorytmów zadania podstawowe

1 Wprowadzenie do algorytmiki

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

Programowanie w VB Proste algorytmy sortowania

Zaawansowane metody numeryczne

Podstawy Informatyki. Sprawność algorytmów

SI w procesach przepływu i porządkowania informacji. Paweł Buchwald Wyższa Szkoła Biznesu

Transkrypt:

Algorytmika Internetu Krzysztof Diks Instytut Informatyki Uniwersytet Warszawski informatyka + 2

Czym jest 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 David Harel: ALGORITHMICS. The Spirit of Computing. (Rzecz o istocie informatyki. Algorytmika.) informatyka + 3

Krótko o długiej historii algorytmiki około 350 p.n.e.: algorytm Euklidesa IX wiek, Muhammed Alchwarizmi: reguły dodawania, odejmowania, mnożenia i dzielenia zwykłych liczb dziesiętnych 1845, Lamé: analiza złożoności algorytmu Euklidesa ( co najwyżej 4.8 log(n)/log(10) - 0.32 kroków ) 1936, Alan Turing: maszyna Turinga model obliczeń ogólnego przeznaczenia 1947, George Dantzig: metoda sympleks informatyka + 4

Krótko o długiej historii algorytmiki 1962, C.A.R. Hoare: Quicksort 1965, Edmonds: wielomianowa, a wykładnicza złożoność 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 informatyka + 5

Przykłady problemów algorytmicznych Lider Dane: skończony ciąg liczb całkowitych a[1], a[2],, a[n], dla pewnego n > 0. Wynik: liczba całkowita x taka, że {i: a[i] = x} > n/2, o ile takie x istnieje; w przeciwnym przypadku dowolny element z ciągu a Rozmiar zadania: n długość ciągu

Lider x := pierwszy element ciągu; licz := 1; while nie koniec ciągu do { y := kolejny element ciągu; if licz = 0 then { x := y; licz := 1} else if x = y then licz := licz +1 else licz := licz 1 } return x;

Lider - przykład 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 a: 3 1 2 3 3 2 3 3 1 3 3 3 2 2 2 2 2 x: 3 3 2 2 3 3 3 3 3 3 3 3 3 3 3 3 2 licz:1 0 1 0 1 0 1 2 1 2 3 4 3 2 1 0 1

Mnożenie macierzy przez wektor Dane: liczba naturalna n > 0, macierz rzeczywista A[1..n,1..n], wektor rzeczywisty x[1..n] Wynik: wektor y[1..n] = Ax, gdzie y[i] = A[i,1]*x[1] + A[i,2]*x[2] + + A[i,n]*x[n] Algorytm Macierz_x_Wektor:: for i := 1 to n do{ } y[i] := 0; for j := 1 to n do return y; y[i] := y[i] + A[i,j]*x[j]

Analiza algorytmu mnożenia Rozmiar zadania: n^2 macierzy przez wektor Złożoność czasowa: Θ(n^2), n^2 mnożeń n = 100 000 000; szybkość komputera 10^8 instrukcji na sekundę; czas obliczeń - 100 000 000 sekund 1600 dni Do zapamiętania macierzy: 8*10^16 bajtów Niech Nz(A) będzie liczbą niezerowych elementów w A. Wówczas liczba mnożeń wynosi Nz(A).

Silnie spójne składowe Dane: G=(V,E) graf skierowany. Wynik: funkcja s: V {1,, V } taka, że dla każdej pary węzłów u, v, s(u) = s(v) wtedy i tylko wtedy, gdy istnieją ścieżki w grafie G z u do v i z v do u. Możliwe reprezentacje grafu: - macierz sąsiedztwa: A[1.. V,1.. V ], A[u,v] є {0,1}, A[u,v] = 1 (u,v) є E rozmiar: Θ( V ^2) - listy sąsiedztwa: L[1.. V ], L[u] lista węzłów, do których prowadzą krawędzie z u rozmiar: Θ( V + E )

1,10 5,3 2,9 4,5 6,2 11,2 7,1 12,1 3,6 8,1 10,1 9,2

W_przód(v: węzeł){ } Silnie spójne składowe faza I ost_nr := ost_nr + 1; nr[v] := ost_nr; // ost_nr ostatnio nadany // numer wezly[ost_nr] := v; // porządkowanie węzłów według numerów for each u węzeł na liście w przód węzła v do if nr[u] = 0 then // nr[u] = 0 oznacza, że węzeł nie został W_przód(u); // odwiedzony w_poddrzewie[v] := ost_nr nr[v] + 1 // rozmiar //poddrzewa w przód

Silnie spójne składowe faza I Przeszukiwanie w przód:: ost_nr := 0; for each węzeł v do nr[v] := 0; for each węzeł v do if nr[v] = 0 then W_przód(v);

Silnie spójne składowe faza II W_tył(v: węzeł, id_s: 1.. V ){ // id_s id aktualnie // wykrywanej składowej } s[v] := id_s; for each węzeł u na liście w tył węzła v do if ( (s[u] = 0) // u nie był jeszcze odwiedzony AND // oraz (nr[id_s] < nr[u] < nr[id_s]+w_poddrzewie[id_s])) // jest w poddrzewie id_s then W_tył(u, id_s);

Silnie spójne składowe faza II Przeszukiwanie w tył:: for each węzeł v do s[v] := 0; // s[v] = 0 oznacza, że // v nie był odwiedzony for i := 1 to V do if s[wezly[i]] = 0 then W_tył(wezly[i], wezly[i]);

Krótko o krótkiej historii Internetu 1969 Powstaje ARPANET (Stanford Research Institute, UCLA, UC Santa Barbara, the University of Utah); pierwszy komunikat przesłany z UCLA do SRI 1974 Transmission Control Protocol 1975 Początki Microsoftu 1976 Unix; pierwszy e-mail wysłany przez królową Elżbietę 1979 Powstaje Usenet (matka grup dyskusyjnych) 1981 Pojawia się IBM PC 1982 Narodziny nazwy Internet ; protokól TCP/IP 1987 Liczba hostów w Internecie przekracza 10 000 1989 Liczba hostów w Internecie przekracza 100 000

Krótko o krótkiej historii Internetu 1990 ARPANET przechodzi do historii, liczba hostów przekracza 300 000 1991 Narodziny World Wide Web 1992 Liczba hostów przekracza 1 000 000 1993 Pojawia się Mosaic, pierwsza graficzna przeglądarka 1994 Powstaje Netscape, pojawia się Yahoo 1995 Powstaje wyszukiwarka AltaVista; Internet Explorer 1998 Pojawia się Google 1999 Odpalony zostaje Napster 2000 Udostępniony zostaje komunikator Gadu-Gadu 2001 Serwis gier Kurnik 2004 Start serwisu Facebook 2006 Narodziny Naszej-klasy

Jak wielki jest Internet? The Indexed Web contains at least 13.16 billion pages (Sunday, 02 January, 2011). Google: about 21 billion pages. Internet System Consortium # hosts Jan 2010 732 740 444 Jan 2009 625 226 456 Jan 2008 541 677 360 Jul 2007 489 774 269 Jan 2007 433 193 199 Jul 2006 439 286 364 Jan 2006 394 991 609 Jul 2005 353 284 187 Jan 2005 317 646 084 http://www.domaintools.com Countries Total IPs 240 3 300 466 944 Poland 16 731 391 (21. miejsce w świecie)

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

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

Algorytm PageRank Sergiej Brin i Lary Page, 1998 Pięć pierwszych odpowiedzi na zapytanie matematyka wybranych przez Google.pl spośród 4 970 000 kandydatów: (1) www.matematyka.org, (2) www.matematyka.pisz.pl, (3) pl.wikipedia.org/wiki/matematyka, (4) www.matematyka.org, (5) www.math.edu.pl.

Algorytm PageRank S 1, S 2,, S n strony; w(s i ) ranga (ważność), liczba rzeczywista dodatnia Żądamy, żeby Początkowo wszystkie rangi wynoszą 1/n. Rangi obliczamy iteracyjnie (proces 1):

Algorytm PageRank Ucieczka ze stron bez dowiązań (proces 2): K zbiór stron bez dowiązań

Algorytm PageRank Porzucamy bieżące przeszukiwanie i kontynuujemy od losowej strony (proces 3):

Algorytm PageRank Związek procesu iteracyjnego z mnożeniem macierzy przez wektor. Macierz H opisuje sieć W Wówczas proces 1 możemy zapisać jak następuje: H jest macierzą rzadką!!!

Algorytm PageRank Proces 2 uwzględnia fakt, że są strony nie zawierające żadnych dowiązań. W macierzy H kolumny odpowiadające takim stronom zawierają same 0. Z takich stron do dalszego przeszukiwania wybieramy dowolną stronę z prawdopodobieństwem 1/n. W podejściu macierzowym wystarczy zatem zastąpić w macierzy H wszystkie kolumny zawierające same 0 przez kolumny posiadające na każdej pozycji wartość 1/n. Oznaczmy tak powstałą macierz przez S. Wówczas proces 2 ma postać:

Algorytm PageRank Proces 3 to zmodyfikowany proces 2, w którym z prawdopodobieństwem α kontynuujemy przeszukiwanie sieci z danej strony, a z prawdopodobieństwem (1 α) przechodzimy do losowej strony. Oznacza to następującą modyfikację macierzy S: każdą pozycję macierzy S mnożymy przez α i dodajemy do tego (1 α)/n. Tak otrzymaną macierz oznaczmy przez G. Proces 3 w zapisie macierzowym: Uwaga: G nie jest macierzą rzadką!!!

Algorytm PageRank Mnożenie przez macierz rzadką: Do każdego elementu wektora w k+1 dodaj β k. W Google za α przyjmuje się 0.85.

Podsumowanie Lider analiza ruchu pakietów w sieci Mnożenie macierzy przez wektor ustalanie ważności stron Silnie spójne składowe analiza struktury Internetu Wiele problemów i ich rozwiązań czeka na swoich odkrywców może to będziesz Ty!!!