• Nie Znaleziono Wyników

Porzadek wsrod informacji kluczem do szybkiego wyszukiwania.NET

N/A
N/A
Protected

Academic year: 2021

Share "Porzadek wsrod informacji kluczem do szybkiego wyszukiwania.NET"

Copied!
50
0
0

Pełen tekst

(1)

(2) PORZĄDEK WŚRÓD INFORMACJI KLUCZEM DO SZYBKIEGO WYSZUKIWANIA Maciej M. Sysło. Uniwersytet Wrocławski Uniwersytet UMK w Toruniu syslo@ii.uni.wroc.pl. informatyka +. 2.

(3) Algorytm, algorytmika Algorytm – opis rozwiązania krok po kroku postawionego problemu lub sposobu osiągnięcia jakiegoś celu Pierwszy algorytm – algorytm Euklidesa 300 p.n.e algorytm od Muhammad ibn Musa al-Chorezmi IX w. Algorytmika – dziedzina zajmująca się algorytmami i ich własnościami. informatyka +. 3.

(4) Algorytmy a informatyka Informatyka – jedna z definicji: dziedzina wiedzy i działalności zajmująca się algorytmami Czy zajmuje się też algorytmami kulinarnymi? Donald E. Knuth: Mówi się często, że człowiek dotąd nie zrozumie czegoś, zanim nie nauczy tego – kogoś innego. W rzeczywistości, człowiek nie zrozumie czegoś (algorytmu) naprawdę, zanim nie zdoła nauczyć tego – komputera.. Ralf Gomory (IBM): Najlepszym sposobem przyspieszania komputerów jest obarczanie ich mniejszą liczbą działań (szybszymi algorytmami). informatyka +. 4.

(5) Myślenie algorytmiczne Myślenie komputacyjne (ang. computational thinking). Reklama firmy IBM z 1924 roku. Komputer to maszyna do myślenia !!!. informatyka +. 5.

(6) IBM. informatyka +. 6.

(7) Problemy, algorytmy i ich komputerowe realizacje (implementacje) Plan: • Poszukiwanie informacji: • w zbiorze nieuporządkowanym • w zbiorze uporządkowanym. • Przeszukiwanie zbioru: schemat blokowy, algorytm optymalny • Kompletowanie podium zwycięzców turnieju • Jednoczesne znajdowanie najmniejszego i największego elementu • zasada dziel i zwyciężaj. • Porządkowanie: przez wybór, przez zliczanie, przez scalanie • Inne zastosowania zasady dziel i zwyciężaj. informatyka +. 7.

(8) Poszukiwanie elementu w zbiorze Problem poszukiwania elementu w zbiorze – specyfikacja Dane: Zbiór elementów w postaci ciągu n liczb x1, x2, ..., xn. Wyróżniony element y Wynik: Jeśli y należy do tego zbioru, to podaj jego miejsce (indeks) w ciągu, a w przeciwnym razie – sygnalizuj brak takiego elementu w zbiorze – wstaw y do ciągu. Dwa przypadki: • Nieuporządkowany ciąg liczb x1, x2, ..., xn • Uporządkowany ciąg liczb x1, x2, ..., xn. Nasz cel: Jakie są korzyści z uporządkowania? Jak utrzymywać porządek wśród informacji?. informatyka +. 8.

(9) Poszukiwanie elementu w zbiorze – przykład Przeszukiwanie książki telefonicznej Poszukiwanie numeru telefonu danej osoby Dane: Nazwiska, adresy, numery telefonów … – książka telefoniczna. Ciąg danych x1, x2, ..., xn – kartki książki z danymi o numerach Wyróżniony element y – nazwisko osoby, której numeru szukamy Wynik: Jeśli osoba y ma numer telefony w książce, to podaj na której stronie, a w przeciwnym razie – sygnalizuj brak danych o y. Poszukiwanie osoby o danym numerze telefonu Dane: Książka telefoniczna. Ciąg danych x1, x2, ..., xn – kartki książki z danymi o numerach Wyróżniony element y – numer telefonu osoby, której szukamy Wynik: Jeśli istnieje osoba z numerem telefonu y, to podaj jej nazwisko, a w przeciwnym razie – sygnalizuj brak takiej osoby. informatyka +. 9.

(10) Poszukiwania w zbiorze nieuporządkowanym Algorytm – Poszukiwanie liniowe Krok 1. Dla i = 1, 2, ..., n, jeśli xi = y, to przejdź do kroku 3. Krok 2. Komunikat: W ciągu danych nie ma elementu równego y. Zakończ algorytm: – wynik: –1 Krok 3. Element równy y znajduje się na miejscu i w ciągu danych. Zakończ algorytm: wynik: i Przykład: Dane: ciąg: 2, 5, 1, 4, 10, 7. y = 1 Wynik: i = 3. Pewna niedogodność – sprawdzanie, czy koniec ciągu.. begin i:=1; while (x[i]<>y) and (i<n) do i:=i+1; if x[i]=y then PrzeszukiwanieLiniowe:=i else PrzeszukiwanieLiniowe:=-1 end. informatyka +. 10.

(11) Poszukiwania w zbiorze nieuporządkowanym z wartownikiem Algorytm – Poszukiwanie liniowe z wartownikiem Takie same kroki algorytmu inna implementacja, czyli komputerowa realizacja: na końcu ciągu: x1 x2 x3 x4 … xn xn+1. wstawiamy wartownika – pilnuje końca ciągu. begin i:=1; Nie ma sprawdzania, x[n+1]:=y; czy koniec ciągu while x[i]<>y do i:=i+1; if i<=n then PrzeszukiwanieLinioweWartownik:=i else PrzeszukiwanieLinioweWartownik:=-1 end. informatyka +. 11.

(12) Poszukiwanie w zbiorze uporządkowanym Zabawa w zgadywanie liczby Zgadywana liczba: Metoda: Kolejne kroki:. 17 w przedziale [1 : 20]. połowienia przedziału strzałka wskazuje wybór; kolor czerwony – ciąg do przeszukania:. informatyka +. 12.

(13) Poszukiwanie przez połowienie w ciągu uporządkowanym. function PrzeszukiwanieBinarne(x:tablicax; k,l:integer; y:integer):integer; {Przeszukiwanie binarne ciagu x[k..l] w poszukiwaniu elementu y.} var Lewy,Prawy,Srodek:integer; Początkowe końce przedziału begin Lewy:=k; Prawy:=l; while Lewy<=Prawy do begin Połowienie przedziału Srodek:=(Lewy+Prawy) div 2; if x[Srodek]=y then begin y należy do przedziału PrzeszukiwanieBinarne:=Srodek; exit end; {element y nalezy do przeszukiwanego ciagu} if x[Srodek]<y then Lewy:=Srodek+1 else Prawy:=Srodek-1 Zmiana końców przedziału end; PrzeszukiwanieBinarne:=-1 y nie należy do end przeszukiwanego przedziału. informatyka +. 13.

(14) Umieszczanie przez połowienie w ciągu uporządkowanym. Dane: Uporządkowany ciąg liczb w tablicy x[k..l] oraz element y Wynik: Miejsce dla y w ciągu x[k..l] takie, aby po wstawieniu y ciąg nadal był uporządkowany Algorytm: y wstawiamy do przeszukiwanego ciągu w to miejsce, gdzie algorytm poszukiwania kończy działanie, a więc tam, gdzie jest y (jeśli y jest już w ciągu), albo gdzie powinien być.. informatyka +. 14.

(15) Poszukiwanie przez połowienie Złożoność (1). Liczba kroków w algorytmie połowienia: Ile razy należy przepołowić ciąg o danej długości, aby znaleźć element lub miejsce dla niego? Przykład dla n = 1200 Kolejne długości ciągu: 1200, 600, 300, 150, 75, 38, 19, 10, 5, 3, 2, 1 11 razy dzielono ciąg o długości 1200, by pozostał 1 element. Liczba porównań w algorytmach poszukiwania dla n = 1200: • przez połowienie • liniowy. 11 1200. informatyka +. Porównaj, jaka jest potęga uporządkowania !!!. 15.

(16) Poszukiwanie przez połowienie złożoność (2). Dla n = 1200 liczba porównań w algorytmie połowienia wyniosła 11 Pytania: • Jak liczba porównań zależy od n? • Jak dobry jest to algorytm?. Liczba porównań dla różnych n: n 100 1 000 10 000 100 000 1 000 000 10 000 000. liczba porównań 7 10 14 17 20 24. Algorytm poszukiwania przez połowienie jest optymalny, czyli najszybciej przeszukuje zbiory uporządkowane.. Funkcja logarytm, bardzo ważna w algorytmice. logarytm to anagram od algorytm. ok.log2 n. informatyka +. 16.

(17) Poszukiwanie interpolacyjne function PrzeszukiwanieBinarne(x:tablicax; k,l:integer; y:integer):integer; {Przeszukiwanie binarne ciagu x[k..l] w poszukiwaniu elementu y.} var Lewy,Prawy,Srodek:integer; Srodek = lewy + (prawy – lewy)/2 begin Lewy:=k; Prawy:=l; Srodek = lewy + while Lewy<=Prawy do begin (y – x[lewy])(prawy – lewy)/(x[prawy] – x[lewy]) Srodek:=(Lewy+Prawy) div 2; if x[Srodek]=y then begin PrzeszukiwanieBinarne:=Srodek; exit end; {element y nalezy do przeszukiwanego ciagu} if x[Srodek]<y then Lewy:=Srodek+1 else Prawy:=Srodek-1 end; PrzeszukiwanieBinarne:=-1 Przeciętny czas interpolacyjnego end umieszczania wynosi ok. log log n. informatyka +. 17.

(18) Suwaki logarytmiczne Na wyposażeniu każdego inżyniera do 1972 roku. Skala 30 cm. Skala 150 cm Skala 12 m. informatyka +. 18. 18.

(19) Znajdowanie elementu w zbiorze Znajdź w zbiorze element o pewnych własnościach: • najwyższego ucznia w swojej klasie – metoda spaghetti • jak zmieni się Twój algorytm, jeśli chciałbyś znaleźć w klasie najniższego ucznia • znajdź w swojej klasie ucznia, któremu droga do szkoły zabiera najwięcej czasu • znajdź najstarszego (lub najmłodszego) ucznia w swojej szkole • znajdź największą kartę w potasowanej talii kart • znajdź najlepszego tenisistę w swojej klasie – nie ma remisów • znajdź najlepszego gracza w warcaby w swojej klasie – możliwe są remisy. Podstawowa operacja – porównanie: • dwóch liczb lub kombinacji liczb (data, karty): • dwóch zawodników:. informatyka +. czy x < y ? rozegranie meczu. 19.

(20) Znajdowanie elementu w zbiorze Różnica między dwoma problemami: Czy zbiór zawiera y? Dane: Ciąg n liczb x1, x2, ..., xn Wyróżniony element y Wynik: Czy w ciągu jest element y ?. Znajdź w zbiorze element o pewnych własnościach Dane: Ciąg n liczb x1, x2, ..., xn Wynik: Najmniejsza wśród liczb x1, x2, ..., xn. Przeszukujemy ciąg aż znajdziemy y, Przeglądamy cały ciąg, by stwierdzić, że nie zawiera y.. Trzeba przejrzeć cały ciąg. Zakładamy, że ciąg nie jest uporządkowany.. Uporządkowanie ciągu ułatwia.. informatyka +. 20.

(21) Specyfikacja problemu Specyfikacja problemu – dokładne opisanie problemu Problem Min – Znajdowanie najmniejszego elementu w zbiorze Dane: Liczba naturalna n i zbiór n liczb dany w ciągu x1, x2, ..., xn Wynik: Najmniejsza wśród liczb x1, x2, ..., xn – oznaczmy ją min. Metoda rozwiązania: przeszukiwanie liniowe – od lewej do prawej Algorytm Min – Znajdowanie najmniejszego elementu w zbiorze Krok 1. Przyjmij za min pierwszy element w zbiorze (w ciągu), imin := 1 czyli przypisz min := x1. Krok 2. Dla kolejnych elementów xi, gdzie i = 2, 3, ..., n, imin := i jeśli min > xi, to przypisz min := xi.. Algorytm Max – prosta modyfikacja: zamiana > na < Wyznaczanie imin – indeksu elementu o wartości min. informatyka +. 21.

(22) Algorytm Min – demo Demonstracja przeszukiwania od lewej do prawej:. informatyka +. 22.

(23) (Zgrubny) schemat blokowy algorytmu Min Krok 1:. Krok 2:. Instrukcje warunkowe: rozgałęzienia algorytmu. min ← pierwszy element ze zbioru A. Czy porównano wszystkie elementy ze zbioru A ? Tak Koniec algorytmu. Instrukcja iteracyjna. Nie x ← kolejny element ze zbioru A. Nie min > x ? Tak min ← x. Ada Augusta, córka Byrona, uznawana powszechnie za pierwszą programistkę komputerów, przełomowe znaczenie maszyny analitycznej Ch. Babbage’a, pierwowzoru dzisiejszych komputerów, upatrywała właśnie „w możliwości wielokrotnego wykonywania przez nią danego ciągu instrukcji, z liczbą powtórzeń z góry zadaną lub zależną od wyników obliczeń”, a więc w iteracji.. informatyka +. 23.

(24) Pełny schemat blokowy algorytmu Min. informatyka +. 24.

(25) Algorytm Min w postaci programu Program w języku Pascal program Min; var i,imin,min,n,x:integer; begin read(n); read(x); min:=x; imin:=1; for i:=2 to n do begin read(x); if min > x then begin min:=x; imin:=i end end; write(imin,min) end.. informatyka +. nazwa programu deklaracje, typy zmiennych blok programu – początek czytaj n czytaj pierwszy element iteracja od 2 do n czytaj kolejny element instrukcja warunkowa popraw min instrukcja war. – koniec iteracja – koniec pisz wynik blok programu – koniec. 25.

(26) Pracochłonność algorytmu Min • Porównanie – podstawowa operacja w algorytmie Min. • Pracochłonność (złożoność obliczeniowa) algorytmu – liczba podstawowych operacji wykonywanych przez algorytm. • Pytanie: Ile porównań wykonuje algorytm Min? • Odpowiedź: o jedno mniej niż jest elementów, czyli n – 1 Pytania:. • Czy można szybciej? • Czy istnieje szybszy algorytm znajdowania min? • A może metoda pucharowa wyłaniania zwycięzcy w turnieju jest szybsza?. informatyka +. 26.

(27) Wyłanianie najlepszego zawodnika w turnieju czyli inny sposób znajdowania max (lub min) Porównania – mecze. Ośmiu zawodników: 7 meczy n zawodników: n – 1 meczy a więc nie jest szybsza. Tomek. Tomek. Bartek. Bartek. Bartek. Romek. Jednak jest szybciej. Gdy liczmy równolegle. Witek. Bolek. Witek. Tomek. Tomek. Zenek. informatyka +. Tolek. Tolek. Felek. 27.

(28) A może mamy algorytm najlepszy? Podsumowanie: Mamy dwa algorytmy znajdowania min lub max: • przeszukiwanie liniowe • rozegranie turnieju. które na zbiorze n elementów wykonują n – 1 porównań Może nie ma szybszego algorytmu? TAK!. Hugo Steinhaus tak to uzasadnił:. Jeśli Tomek jest zwycięzcą turnieju, w którym startuje n zawodników, to każdy inny spośród n – 1 zawodników musiał przegrać przynajmniej raz, a zatem rozegrano przynajmniej n – 1 meczy. Zatem każdy algorytm musi wykonać przynajmniej n – 1 porównań, czyli nasze algorytmy są najszybsze – są optymalne.. informatyka +. 28.

(29) A jak znaleźć drugiego najlepszego zawodnika w turnieju? Tomek. Ale Bartek nie grał z drugą połową!. Czy jest nim Bartek? Bo przegrał z Tomkiem?. Tomek ???. Bartek. Bartek. Bartek. Romek. Witek. Bolek. Witek. ??? Tomek. Tomek. Zenek. informatyka +. Tylko dwa dodatkowe mecze!. Tolek. Tolek. Felek. 29.

(30) Jednoczesne znajdowanie min i max Obserwacja:. jeśli x ≤ y, to x kandydatem na min, a y kandydatem na max. Algorytm „dziel i zwyciężaj”:. Krok 1. Podział na kandydatów na min i kandydatów na max Kandydaci na max Porównania parami. 5. 8. ↑. ↑. ↑. 3 ? 1. 2 ? 2. 5 ? 3. ↓. ↓. 1. 2. 3. ↓. Kandydaci na min. 5. 2. 3. ↑. ↑. 4 ? 8. 2 ? 5. ↓. ↓. 4. 2. max = 8. min = 1. Krok 2. Znajdź min i max. Liczba porównań: • algorytm naiwny: n – 1 (min) + n – 2 (max) = 2n – 3 • algorytm dziel i zwyciężaj: n/2(podział)+ (n/2–1)(min) + (n/2–1)(max) ok. 3n/2 – 2 – jest to algorytm optymalny. informatyka +. 30.

(31) Problem porządkowania (sortowania) Problem porządkowania (sortowania) Dane: Liczba naturalna n i ciąg n liczb x1, x2, ..., xn Wynik: Uporządkowanie tego ciągu liczb od najmniejszej do największej. Algorytm: porządkowanie przez wybór – Selection Sort Idea: najmniejszy wśród nieuporządkowanych daj na początek Krok 1. Dla i = 1, 2, ..., n – 1 wykonaj kroki 2 i 3, a następnie zakończ algorytm Krok 2. Znajdź k takie, że xk jest najmniejszym elementem w ciągu xi, ..., xn Krok 3. Zamień miejscami elementy xi oraz xk. informatyka +. 31.

(32) Znajdowanie elementu w zbiorze Podsumowanie Różnica między dwoma problemami: Czy zbiór zawiera y? Dane: Ciąg n liczb x1, x2, ..., xn Wyróżniony element y Wynik: Czy w ciągu jest element y ?. Znajdź w zbiorze element o pewnych własnościach Dane: Ciąg n liczb x1, x2, ..., xn Wynik: Najmniejsza wśród liczb x1, x2, ..., xn. Przeszukujemy ciąg aż znajdziemy y, Przeglądamy cały ciąg, by stwierdzić, że nie zawiera y.. Trzeba przejrzeć cały ciąg. Zakładamy, że ciąg nie jest uporządkowany.. Uporządkowanie ciągu ułatwia.. informatyka +. 32.

(33) Porządkowanie przez wybór – demo (1) Żółte – podciąg już uporządkowany. Zielone i czerwone – podciąg porządkowany. informatyka +. 33.

(34) Porządkowanie przez wybór – demo (2). Podciąg już uporządkowany Podciąg porządkowany. informatyka +. 34.

(35) Złożoność porządkowania przez wybór Liczba zamian elementów w kolejnych krokach: 1+1+1+…+1=n–1 Liczba porównań w kolejnych krokach: (n – 1) + (n – 2) + (n – 3) + … + 3 + 2 + 1 = ?. Przykład n=6. Pole prostokąta: 5 x 6 Suma = pole czarnych diamentów:. 5. ♦. ♦. ♦. ♦. ♦. ∇. 5x6. 4. ♦. ♦. ♦. ♦. ∇. ∇. 2. 3. ♦. ♦. ♦. ∇. ∇. ∇. 2. ♦. ♦. ∇. ∇. ∇. ∇. 1. ♦. ∇. ∇. ∇. ∇. 5=n–1. ∇. 6=n. informatyka +. Ogólnie suma: (n – 1) x n 2. Liczby trójkątne. 35.

(36) Porządkowanie przez zliczanie Problem porządkowania niewielkich liczb Dane: Liczba naturalna n i ciąg n liczb całkowitych x1, x2, ..., xn, należących do przedziału [1..M] – na ogół n < M. Wynik: Uporządkowanie tego ciągu liczb od najmniejszej do największej. Algorytm. Porządkowanie przez zliczanie – CountingSort Idea: Liczymy, ile jest konkretnych liczb w ciągu Krok 1. Dla i = 1, 2, ..., M: ci = 0 zerowanie liczników. Krok 2. Dla i = 1, 2, ..., n: zwiększ ck o 1, gdzie k = xi. Krok 3. Dla i = 1, 2, ..., M: na kolejnych ci pozycjach w ciągu x umieść element i. Liczba operacji – proporcjonalna do n + M.. informatyka +. 36.

(37) Sortowanie przez scalanie – scalanie Scalanie – z dwóch uporządkowanych ciągów utwórz jeden uporządkowany Algorytm scalania. Scal. Dane: dwa ciągi uporządkowane Wynik: scalony ciąg uporządkowany Krok: do tworzonego ciągu pobieraj najmniejszy element z czoła scalanych ciągów Scalane ciągi. Scalanie 1 1 Scalony ciąg. 35 2. 7 6. 10 9. 1 3 5 7 10 12. 12 11. 15 17 20. 1 2 6 9 11 15 17 20. 1 1 2 3 5 6 7 9 10 11 12 15 17 20. informatyka +. 37.

(38) Sortowanie przez scalanie – scalanie Scalane ciągi. Scalone ciągi, w innym miejscu. informatyka +. 38.

(39) Sortowanie przez scalanie – opis Metoda dziel i zwyciężaj. Rekurencyjne wywołania na podciągach. Algorytm porządkowania przez scalanie MergeSort(l,p,x) Dane: Ciąg liczb xl, xl+1, …, xp Wynik: Uporządkowanie tego ciągu liczb od najmniejszej do największej. Krok 1. Jeśli l < p, to przyjmij s:=(l+p) div 2 i wykonaj trzy następne kroki. { s w połowie ciągu} Krok 2. MergeSort(l,s,x) – sortowanie pierwszej połowy ciągu Krok 3. MergeSort(s+1,p,x) – sortowanie drugiej połowy ciągu Krok 4. Zastosuj algorytm Scal do ciągów (xl, …, xs) i (xs+1, …, xp) i wynik umieść w ciągu (xl, …, xp).. informatyka +. 39.

(40) Sortowanie przez scalanie. DEMO. 212950 dziel. 2 1 2. 950. dziel dziel. 2 1. 9 5. 2 dziel. dziel 1. 2. 0. 5. 9. scal. scal. 1 2. 5 9 scal 1 2 2. scal 0 5 9 scal 0 1 2 2 5 9. informatyka +. 40.

(41) Sortowanie przez scalanie. DEMO Posortowana jest już pierwsza połowa ciągu i w trakcie sortowania drugiej połowy, scalane są dwa podciągi z pierwszej części drugiej połowy, uporządkowane wcześniej rekurencyjnie tą samą metodą. Posortowana pierwsza połowa ciągu. Scalane ciągi Wynik scalania dodatkowym miejscu. informatyka +. 41.

(42) Potęga algorytmu binarnego (dziel i zwyciężaj) Kryptografia: Szyfr RSA, jeden z najpopularniejszych obecnie, bazuje na podnoszeniu do dużej potęgi dużych liczb, np. 1234567890987654321234567890987654321123456789987654321 123456789012345678909876543211234567890987654321123456789098765432123456789101 234567891012345678910123456789123456789123456789123456789. Jak można szybko obliczać takie potęgi? Odpowiedź: 12345678912345678912345678912345. Np., obliczenie x. 10. • Ze szkolnej definicji: x. Szybkość superkomputera. wymaga:. = x*x*x*x*x*x*x*x*x*x – 9 mnożeń, wtedy:. 12345678912345678912345678912344/1015 sek. = 4*108 lat • Algorytm „binarny”, np.:. x10 = (x5)2 , x11 = (x5)2*x. 12345678912345678912345678912345. Wykonuje dla x. ok. …200 mnożeń < 1 sek.. informatyka +. 42.

(43) Konkluzja Najlepszym sposobem przyspieszania komputerów jest obarczanie ich mniejszą liczbą działań (szybszymi algorytmami) [Ralf Gomory, IBM]. 43. 43.

(44) Algorytm, algorytmika Algorytm – opis rozwiązania krok po kroku postawionego problemu lub sposobu osiągnięcia jakiegoś celu Pierwszy algorytm – algorytm Euklidesa 300 p.n.e algorytm od Muhammad ibn Musa al-Chorezmi IX w. Algorytmika – dziedzina zajmująca się algorytmami i ich własnościami. informatyka +. 44.

(45) Algorytmy a informatyka Informatyka – jedna z definicji: dziedzina wiedzy i działalności zajmująca się algorytmami Czy zajmuje się też algorytmami kulinarnymi? Donald E. Knuth: Mówi się często, że człowiek dotąd nie zrozumie czegoś, zanim nie nauczy tego – kogoś innego. W rzeczywistości, człowiek nie zrozumie czegoś (algorytmu) naprawdę, zanim nie zdoła nauczyć tego – komputera.. Ralf Gomory (IBM): Najlepszym sposobem przyspieszania komputerów jest obarczanie ich mniejszą liczbą działań (szybszymi algorytmami). informatyka +. 45.

(46) Algorytmiczne rozwiązywanie problemu Dla problemu – chcemy otrzymać rozwiązanie komputerowe, które jest: • zrozumiałe dla każdego, kto zna problemu • poprawne, czyli spełnia specyfikację (opis) problemu • efektywne, czyli nie marnuje czasu i pamięci. Metoda rozwiązywania: • analiza sytuacji problemowej • sporządzenie specyfikacji: wykaz danych, wyników i relacji • projekt rozwiązania • komputerowa realizacja rozwiązania – implementacja • testowanie poprawności rozwiązania • dokumentacja i prezentacja rozwiązania. informatyka +. 46.

(47) Rozwiązywanie problemów z pomocą komputerów Objaśnienie dwóch terminów: Problem: • problem, gdy nie podano nam, jak należy go rozwiązać, ale wiemy wystarczająco, by poradzić sobie z nim • a więc, problem jest dla każdego nie tylko dla orłów. Programowanie: • komputery wykonują tylko programy • cokolwiek uruchamiamy na komputerze: Google, dokument w Word, arkusz w Excel, naciśnięcie klawisza – jest programem • każdy widoczny i niewidoczny efekt działania komputera to wynik działania jakiegoś programu. Konkluzja: powinniśmy lepiej poznać programowanie komputerów. informatyka +. 47.

(48) Pokrewne zajęcia w Projekcie Informatyka + Wykład+Warsztaty (Wszechnica Poranna): • Wprowadzenie do algorytmiki i programowania – wyszukiwanie i porządkowanie informacji • Proste rachunki wykonywane za pomocą komputera. • Techniki algorytmiczne – przybliżone (heurystyczne) i dokładne. Wykłady (Wszechnica Popołudniowa): • Czy wszystko można policzyć na komputerze? • Porządek wśród informacji kluczem do szybkiego wyszukiwania. • Dlaczego możemy się czuć bezpieczni w sieci, czyli o szyfrowaniu informacji. • Znajdowanie najkrótszych dróg, najniższych drzew, najlepszych małżeństw. informatyka +. 48.

(49) Pokrewne zajęcia w Projekcie Informatyka + Kursy (24 godz.) – Wszechnica na Kołach: • Algorytmy poszukiwania i porządkowania. Elementy języka programowania • Różnorodne algorytmy obliczeń i ich komputerowe realizacje • Grafy, algorytmy grafowe i ich komputerowe realizacje Kursy (24 godz.) – Kuźnia Informatycznych Talentów – KIT dla Orłów: • Przegląd podstawowych algorytmów • Struktury danych i ich wykorzystanie • Zaawansowane algorytmy Tendencje – Wykłady • Algorytmy w Internecie, K. Diks • Czy P = NP, czyli jak wygrać milion dolarów w Sudoku, J. Grytczuk • Między przeszłością a przyszłość informatyki, M.M Sysło. informatyka +. 49.

(50)

(51)

Cytaty

Powiązane dokumenty

Zmiana znaku R d powoduje odpo- wiednią zmianę znaku delt  i i automatycznie zmiany znaków Q,M; czyli wystarczy jeden raz przeliczyć przypadek górniczy (rys3. Ponieważ P

Energetyki i Paliw AGH, w roku akademickim 2012/2013 Uwaga: KaŜdy student, oprócz tego arkusza, przynosi na ćwiczenie:.. • wydruk tekstu pt.: „Wprowadzenie nr 1 do ćwiczeń..” -

Które z wªasno±ci relacji równowa»no±ci i racjonalnej preferencji maj¡ relacje z zadania 1?. Je±li która± z tych relacji jest równowa»no±ci¡, poda¢ jej

Udowodnił niemożliwość rozwiązania równania algebraicznego stopnia wyższego niż cztery przez pierwiastniki, prowadził badania w dziedzinie teorii szeregów i całek

x-tyle kupiono długopisów y- tyle kupiono ołówków 3∙x – tyle wydano na długopisy 2∙y – tyle wydano na ołówki Tworzymy układ równań:. { 3 x +2 y=24

Niech F oznacza liczbę losowań, w których wyciągnięto monetę fałszywą, K-liczbę

[r]

Metoda rozwiązywania równania różniczkowego cząstkowego po- legająca na sprowadzeniu równania do postaci kanonicznej a następnie na rozwiązaniu równania w sposób