Rok akademicki 007/008, Wykład r 7 /44 Pla wykładu r 7 Iformatyka Politechika Białostocka - Wydział Elektryczy Elektrotechika, semestr II, studia stacjoare I stopia Rok akademicki 007/008 Wykład r 7 (09.06.008) Defiicje algorytmu komputerowego Sposoby opisu algorytmów opis słowy schemat blokowy pseudokod język programowaia Klasyfikacje algorytmów Rekurecja ZłoŜoość obliczeiowa Języki programowaia Geeracje języków programowaia Rok akademicki 007/008, Wykład r 7 3/44 Rok akademicki 007/008, Wykład r 7 4/44 Algorytm - defiicje Defiicja Algorytm to skończoy, uporządkoway ciąg jaso zdefiiowaych czyości, koieczych do wykoaia pewego zadaia Defiicja Metoda rozwiązaia zadaia Defiicja 3 Ściśle określoa procedura obliczeiowa, która dla właściwych daych wejściowych zwraca Ŝądae dae wyjściowe zwae wyikiem działaia algorytmu Defiicja 4 Skończoy zbiór reguł, wskazujący kolejość operacji przy rozwiązywaiu problemu pewego typu Algorytmy Słowo algorytm pochodzi od azwiska Mohammed ib Musa al-khowarizmiego (po łaciie pisae jako Algorismus), matematyka perskiego z IX wieku i początkowo ozaczało w Europie sposób obliczeń oparty a dziesiętym systemie liczbowym Badaiem algorytmów zajmuje się algorytmika Algorytm moŝe zostać zaimplemetoway w postaci programu komputerowego lub dla iego urządzeia Te sam algorytm moŝe być zaimplemetoway w róŝy sposób przy uŝyciu róŝych języków programowaia Jeśli day algorytm da się wykoać a maszyie o dostępej mocy obliczeiowej i pamięci oraz akceptowalym czasie, to mówi się Ŝe jest to algorytm obliczaly
Rok akademicki 007/008, Wykład r 7 5/44 Rok akademicki 007/008, Wykład r 7 6/44 Algorytmy Podstawowe cechy algorytmu Algorytm powiie posiadać dae wejściowe (w ilości większej lub rówej zeru) pochodzące z dobrze zdefiiowaego zbioru Algorytm powiie zwracać pewie wyik Algorytm powiie być precyzyjie zdefiioway (kaŝdy krok algorytmu musi być jedozaczie określoy) Sposoby opisu algorytmów. Opis w puktach, w języku aturalym (opis słowy, lista kroków). Za pomocą schematu blokowego 3. Z zastosowaiem pseudokodu (język publikacyjy), czyli iezbyt formalej odmiaie języka programowaia (p. odformalizoway Pascal, C, C++) 4. W kokretym języku programowaia, p. Pascalu, C, C++, Matlabie Algorytm powiie być zawsze poprawy (dla kaŝdego z załoŝoego dopuszczalego zestawu daych wejściowych) Algorytm powiie zawsze kończyć się po skończoej liczbie kroków (powia istieć poprawie działająca reguła stopu algorytmu) Algorytm powiie być efektywy (jak ajkrótszy czas wykoaia i jak ajmiejsze zapotrzebowaie a pamięć) Rok akademicki 007/008, Wykład r 7 7/44 Rok akademicki 007/008, Wykład r 7 8/44 Opis słowy s algorytmu Opis słowy przypomia przepis kuliary z ksiąŝki kucharskiej Schematy blokowe Elemety występujące a schematach blokowych: Przykład: Algorytm: Tortilla (a podstawie PodróŜy kuliarych R. Makłowicza) Dae wejściowe: Dae wyjściowe: Koleje kroki: 0,5 kg ziemiaków, 00 g kiełbasy Chorizo, 8 jajek gotowa Tortilla początek algorytmu moŝe występować tylko jede raz koiec algorytmu musi występować przyajmiej jede raz. Ziemiaki obrać i pokroić w plasterki. Kiełbasę pokroić w plasterki 3. Ziemiaki wrzucić a gorącą oliwę a pateli i przyrumieić z obu stro 4. Kiełbasę wrzucić a gorącą oliwę a pateli i przyrumieić z obu stro 5. Ubić jajka i dodać do połączoych ziemiaków i kiełbasy 6. Dodać sól i pieprz 7. UsmaŜyć z obu stro wielki omlet adzieway chipsami ziemiaczaymi z kiełbaską Opis operacji elemetara istrukcja blok fukcyjy operacje obliczeiowe lub orgaizacyje blok decyzyjy operacje warukowe testy
Rok akademicki 007/008, Wykład r 7 9/44 Rok akademicki 007/008, Wykład r 7 0/44 algorytm Euklidesa zajdowaia ajwiększego wspólego dzielika dwóch liczb - NWD(a,b) algorytm Euklidesa zajdowaia ajwiększego wspólego dzielika dwóch liczb - NWD(a,b) Opis w puktach: Dae wejściowe: iezerowe liczby aturale a i b NWD(675,375) =? Dae wyjściowe: Koleje kroki: NWD(a,b). Czytaj liczby a i b. Dopóki a i b są większe od zera, powtarzaj krok 3, a astępie przejdź do kroku 4 3. Jeśli a jest większe od b, to weź za a resztę z dzieleia a przez b, w przeciwym razie weź za b resztę z dzieleia b przez a 4. Przyjmij jako ajwiększy wspóly dzielik tę z liczb a i b, która pozostała większa od zera 5. Drukuj NWD(a,b) a b 675 375 675 40 67 40 67 0 NWD(675,375) = 67 Dzieleie większej liczby przez miejszą b/a = 375/675 = reszta 40 a/b = 675/40 = 4 reszta 67 b/a = 40/67 = 6 reszta 0 KONIEC Zamiaa b = 40 a = 67 b = 0 Rok akademicki 007/008, Wykład r 7 /44 Rok akademicki 007/008, Wykład r 7 /44 algorytm Euklidesa zajdowaia ajwiększego wspólego dzielika dwóch liczb - NWD(a,b) algorytm Euklidesa zajdowaia ajwiększego wspólego dzielika dwóch liczb - NWD(a,b) Schemat blokowy: Pseudokod: NWD(a,b) while a>0 i b>0 do if a>b the a a mod b else b b mod a if a>0 the retur a else retur b
Rok akademicki 007/008, Wykład r 7 3/44 Rok akademicki 007/008, Wykład r 7 4/44 algorytm Euklidesa zajdowaia ajwiększego wspólego dzielika dwóch liczb - NWD(a,b) zamiaa zapisu liczby aturalej l daej w systemie dziesiętym, a zapis w systemie pozycyjym o podstawie p Język C: it NWD(it a, it b) { while (a>0 && b>0) if (a>b) a = a % b; else b = b % a; if (a>0) retur a; else retur b; } Opis w puktach: Dae wejściowe: Dae wyjściowe: Koleje kroki:. Czytaj liczby l i p liczba l w systemie dziesiętym, podstawa systemu p zapis liczby l w systemie o podstawie p. Dopóki l > 0 powtarzaj krok 3 3. Wykoaj dzieleie całkowite liczby l przez p, resztę z dzieleia zapamiętaj jako koleją cyfrę przedstawieia liczby l w owym systemie pozycyjym 4. Drukuj cyfry przedstawieia liczby l w owym systemie pozycyjym w odwrotej kolejości iŝ były zapamiętywae Rok akademicki 007/008, Wykład r 7 5/44 Rok akademicki 007/008, Wykład r 7 6/44 zamiaa zapisu liczby aturalej l daej w systemie dziesiętym, a zapis w systemie pozycyjym o podstawie p 75 (0) =?(6) 75(0) = 035(6) 75/ 6 9/ 6 48 / 6 8 / 6 / 6 = = = = = 9 48 8 0 reszta reszta reszta reszta reszta 5 3 0 kolejość odczytywaia cyfr liczby w systemie szóstkowym Klasyfikacje algorytmów Podstawowe paradygmaty tworzeia programów komputerowych: strategia dziel i zwycięŝaj programowaie dyamicze algorytmy zachłae programowaie liiowe algorytmy siłowe (brute force) algorytmy probabilistycze heurystyka NajwaŜiejsze techiki implemetacji algorytmów komputerowych: proceduralość obiektowość praca sekwecyja praca wielowątkowa praca rówoległa rekurecja
Rok akademicki 007/008, Wykład r 7 7/44 Rok akademicki 007/008, Wykład r 7 8/44 Strategia dziel i zwycięŝ ęŝaj Strategia dziel i zwycięŝaj (ag. divide ad coquer) jest strategią kostruowaia algorytmów, jedą z ajefektywiejszych metod w iformatyce W strategii tej zazwyczaj rekurecyjie dzielimy problem a dwa lub więcej miejszych problemów tego samego (lub podobego) typu tak długo, aŝ staie się o wystarczająco prosty do bezpośrediego rozwiązaia Rozwiązaia otrzymae dla miejszych podproblemów są scalae w celu uzyskaia rozwiązaia całego zadaia Przykłady zastosowań: sortowaie szybkie (quicksort) wyszukiwaie biare - polega a sprawdzeiu czy szukay elemet zajduje się w uporządkowaej tablicy, jeśli tak, to zwraca jego ideks Programowaie dyamicze Kostrukcja programu wykorzystującego zasadę programowaia dyamiczego moŝe być sformułowaa w trzech etapach: Kocepcja: Iicjacja: Progresja: dla daego problemu stwórz rekurecyjy model jego rozwiązaia (wraz z jedozaczym określeiem przypadków elemetarych) stwórz tablicę, w której będzie moŝa zapamiętywać rozwiązaia przypadków elemetarych i podproblemów, które zostaą obliczoe a ich podstawie wpisz do tablicy wartości umerycze odpowiadające przypadkom elemetarym a podstawie wartości wpisaych do tablicy, uŝywając formuły rekurecyjej, oblicz rozwiązaie problemu wyŝszego rzędu i wpisz je do tablicy postępuj w te sposób do osiągięcia poŝądaej wartości Rok akademicki 007/008, Wykład r 7 9/44 Rok akademicki 007/008, Wykład r 7 0/44 Programowaie dyamicze - przykład Kocepcja: (F 0 w ciągu Fiboaciego) Iicjacja: Progresja: model rekurecyjy rozwiązaia + przypadki elemetare F, tablica z rozwiązaiem 0 = 0 F =, F = F + F 0 3 4 5 6 7 8 F wpisaie do tablicy wartości dla przypadków elemetarych 0 3 4 5 6 7 8 F 0 obliczeie rozwiązań problemów wyŝszego rzędu aŝ do osiągięcia poŝądaej wartości i wpisaie ich do tablicy 0 3 4 5 6 7 8 F 0 3 5 8 3 9 9 9 34 0 0 0 55 Algorytmy zachłae ae Algorytm zachłay (ag. greedy algorithm) jest to algorytm, w którym w celu rozwiązaia pewego zadaia w kaŝdym kroku dokouje się zachłaego, tj. ajlepiej rokującego w daym momecie wyboru rozwiązaia częściowego Algorytm podejmuje decyzję lokalie optymalą, dokouje wyboru wydającego się w daej chwili ajlepszym, kotyuując rozwiązaie podproblemu wyikające z podjętej decyzji Algorytmy zachłae stosowae są przede wszystkim w optymalizacji Musi zawsze istieć kryterium pozwalające oceić jakość rozwiązaia Dokoyway lokalie ajkorzystiejszy wybór ma w załoŝeiu prowadzić do zalezieia globalego optymalego rozwiązaia
Rok akademicki 007/008, Wykład r 7 /44 Rok akademicki 007/008, Wykład r 7 /44 Programowaie liiowe Programowaie liiowe to klasa programowaia matematyczego, w której wszystkie waruki ograiczające oraz fukcja celu mają postać liiową, p. waruki ograiczające: Zadaie polega a zmaksymalizowaiu (zmiimalizowaiu) fukcji celu: a x + a x a x + a x a x + a x + K+ a x + K+ a x + K+ a x α α = α f = α + c x + c x + K+ c x wiele problemów moŝa sprowadzić do maksymalizacji lub miimalizacji pewej fukcji celu, przy ograiczoych zasobach i atagoistyczych warukach programowaie liiowe zalazło szerokie zastosowaie w teorii decyzji, p. do optymalizacji plau produkcyjego Programowaie liiowe Fabryka produkuje urządzeia A i B. W ciągu jedego dia moŝa wytworzyć łączie 00 urządzeń. Wyprodukowaie urządzeia A zajmuje 3 roboczogodziy, a urządzeia B - 4 roboczogodziy. Dziea liczba dostępych roboczogodzi wyosi 600. W ciągu jedego dia aleŝy wyprodukować mi. 50 urządzeń A i mi. 50 urządzeń B. Zysk ze sprzedaŝy urządzeia A to 000 PLN, a B - 00 PLN. Ile urządzeń A i B aleŝy dzieie wyprodukować, aby zysk był jak ajwiększy? Waruki ograiczające: Fukcja celu: x A 3 x + x x, x A A 00 + 4 x B B B 50 f = 000 x 600 + 00 A x B Rok akademicki 007/008, Wykład r 7 3/44 Rok akademicki 007/008, Wykład r 7 4/44 Algorytmy siłowe Algorytm siłowy (ag. brute force) jest to określeie algorytmu opierającego się a sukcesywym sprawdzaiu wszystkich moŝliwych kombiacji w poszukiwaiu rozwiązaia problemu Algorytmy probabilistycze Ogólie algorytmy moŝa podzielić a determiistycze i probabilistycze Dae wejściowe Dae wejściowe Algorytm siłowy jest zazwyczaj ieoptymaly, ale ajprostszy w implemetacji W programowaiu termi te odosi się do dowolego algorytmu, który rozwiązuje problem przez weryfikację i oceę wszystkich wariatów postępowaia Algorytm determiistyczy Dae wyjściowe Algorytm probabilistyczy Dae wyjściowe Geerator liczb losowych Stosowae jest takŝe pojęcie ataku brute force, odoszące się do przeprowadzaych przez człowieka lub program komputerowy prób złamaia zabezpieczeń, p. odgadięcia hasła, poprzez wypróbowaie wszystkich moŝliwych kombiacji cyfr, liter i iych zaków Działaie algorytmu determiistyczego jest całkowicie zdetermiowae przez waruki początkowe (wejście), tz. dla takich samych daych wejściowych algorytm zawsze zwraca taki sam wyik Algorytm probabilistyczy albo radomizoway (ag. radomized algorithm) to algorytm, który do swojego działaia uŝywa losowości (geeratora liczb pseudolosowych)
Rok akademicki 007/008, Wykład r 7 5/44 Rok akademicki 007/008, Wykład r 7 6/44 Algorytmy probabilistycze Algorytmy probabilistycze - algorytm Mote Carlo Główą zaletą algorytmów probabilistyczych jest działaie w średim przypadku, dzięki czemu złośliwe dae wejściowe ie wydłuŝają jego działaia Wśród algorytmów probabilistyczych wyróŝia się algorytmy Las Vegas i algorytmy Mote Carlo Algorytm Las Vegas: Algorytm Las Vegas zawsze zwraca prawidłową odpowiedź, ale jego czas działaia ie jest z góry ustaloy (p. szukaie litery a w tablicy zawierającej połowę liter a i połowę liter b ) Algorytm Moe Carlo: Algorytm Mote Carlo kończy się w ustaloym czasie, ale moŝe z pewym prawdopodobieństwem zwrócić zły wyik lub zwrócić wyik tylko z pewą dokładością (p. obliczaie całek ozaczoych) obliczamy przybliŝoą wartość całki ozaczoej metodą Mote Carlo: dla fukcji f(x), której całkę chcemy obliczyć w przedziale [x p,x k ] wyzaczamy prostokąt obejmujący pole pod wykresem tej fukcji o wysokości h i długości podstawy (x k -x p ) losujemy puktów i zliczamy te pukty w, które wpadają w pole pod wykresem fukcji wartość całki obliczaa jest a podstawie wzoru przybliŝoego: I xk = x p xk I = f ( x) dx x p w f ( x) dx h( xk x p ) Rok akademicki 007/008, Wykład r 7 7/44 Rok akademicki 007/008, Wykład r 7 8/44 Rekurecja Rekurecja - przykłady Rekurecja lub rekursja (ag. recursio, z łac. recurrere, przybiec z powrotem) jest to odwoływaie się p. fukcji do samej siebie Rekurecja polega a tym, Ŝe rozwiązaie daego problemu wyraŝa się za pomocą rozwiązań tego samego problemu, ale dla daych o miejszych rozmiarach W matematyce mechaizm rekurecji stosoway jest dość często do defiiowaia lub opisywaia algorytmów silia liczby! = ( )! dla dla = 0 UŜycie opisu rekurecyjego w przypadku algorytmu pozwala a przejrzysty, zwarty opis fukcji lub procedury Nie zawsze rozwiązaie rekurecyje prowadzi do rozwiązaia efektywego, czasem prowadzi do obiŝeia efektywości programu Rekurecja zawsze zwiększa zapotrzebowaie programu a pamięć it silia(it ) { if (==0) retur ; else retur *silia(-); }
Rok akademicki 007/008, Wykład r 7 9/44 Rok akademicki 007/008, Wykład r 7 30/44 Rekurecja - przykłady Rekurecja - przykłady defiicja ciągu Fiboacciego ajwiększy wspóly dzielik - algorytm Euklidesa 0 dla = 0 F = dla = F + F dla > NWD(a, b) a = NWD(b,a mod b) dla dla b = 0 b it F(it ) { if (==0) retur 0; else if (==) retur ; else retur F(-) + F(-); } it NWD(it a, it b) { if (b==0) retur a; else retur NWD(b,a % b); } Rok akademicki 007/008, Wykład r 7 3/44 Rok akademicki 007/008, Wykład r 7 3/44 ZłoŜoość obliczeiowa W celu rozwiązaia daego problemu obliczeiowego staramy się zaleźć algorytm ajbardziej efektywy, tz. ajszybszy i o moŝliwie małym zapotrzebowaiu a pamięć Do ocey efektywości programu słuŝy tzw. złoŝoość obliczeiowa ZłoŜoość obliczeiowa azywaa jest takŝe kosztem algorytmu ZłoŜoość obliczeiowa algorytmu jest to ilość zasobów (czas, pamięć, liczba procesorów) potrzebych do jego działaia ZłoŜoość obliczeiowa algorytmu jest fukcją rozmiaru daych wejściowych (p. sortowaie tablicy - im większa tablica tym więcej zasobów jest potrzebych do jej posortowaia) W zaleŝości od rozwaŝaego zasobu mówimy o: złoŝoości czasowej złoŝoości pamięciowe ZłoŜoość obliczeiowa ZłoŜoość czasowa: Miarą złoŝoości czasowej jest liczba operacji podstawowych (domiujących) w zaleŝości od rozmiaru daych wejściowych Operacje podstawowe to p. podstawieie, porówaie, operacja arytmetycza Pomiar czasu zegarowego ie jest stosoway ze względu a silą zaleŝość od implemetacji algorytmu, zastosowaego kompilatora, komputera, doświadczeia programisty ZłoŜoość pamięciowa: ZłoŜoość pamięciowa jest miarą wykorzystaia pamięci (liczba komórek pamięci)
Rok akademicki 007/008, Wykład r 7 33/44 Rok akademicki 007/008, Wykład r 7 34/44 ZłoŜoość obliczeiowa ZłoŜoość obliczeiowa zaleŝy od postaci daych a jakich algorytm operuje Dla pewych, specyficzych daych algorytm moŝe wykoać się bardzo szybko, dla iych zaś zaczie woliej Z powyŝszych powodów rozróŝia się: złoŝoość pesymistyczą złoŝoość średią ZłoŜoość obliczeiowa Porówując złoŝoość algorytmów bierze się pod uwagę asymptotycze tempo wzrostu, czyli to jak zachowuje się fukcja określająca złoŝoość wraz ze wzrostem wartości jej argumetów Asymptotycze tempo wzrostu opisuje jak szybko daa fukcja rośie lub maleje abstrahując od kokretej postaci tych zmia Do opisu asymptotyczego tempa wzrostu stosuje się otację duŝego O, zwaą otacją Ladaua ZłoŜoość pesymistycza: Odpowiada ajbardziej iesprzyjającym dla algorytmu daym ZłoŜoość średia: ZłoŜoość uśredioa po wszystkich moŝliwych zestawach daych ZłoŜoość dla typowych daych wejściowych Rok akademicki 007/008, Wykład r 7 35/44 Rok akademicki 007/008, Wykład r 7 36/44 Notacja O Notacja O otacja ta wyraŝa złoŝoość matematyczą algorytmu porówaie ajczęściej występujących złoŝoości: w otacji tej po literze O występuje wyraŝeie w awiasach zawierające literę, która ozacza liczbę elemetów, a której działa algorytm za miarę dobroci algorytmu przyjmuje się liczbę wykoywaych w im elemetarych operacji, p. dodawaie, moŝeie, porówywaie Elemety 0 00 O(log ) 3 7 O() 0 00 O( log ) 33 664 O( ) 00 0 000 O( ) 04,7 0 30 Przykład: O() - złoŝoość algorytmu jest prostą fukcją liczby elemetów 000 0 000 0 3 000 0 000 9 966 3 877 000 000 00 000 000,07 0 30,99 0 300 O( ) - (jeśli sortowaie 000 elemetów zajmuje s, to sortowaie - (000 elemetów zajmie s) - czas koieczy do wykoaia algorytmu rośie wraz z kwadratem liczby elemetów (przy podwojeiu liczby elemetów ich obsługa będzie trwała cztery razy dłuŝej) O(log ) - złoŝoość logarytmicza O() - złoŝoość liiowa O( log ) - złoŝoość liiowo-logarytmicza O( ) - złoŝoość kwadratowa O( ) - złoŝoość wykładicza
Rok akademicki 007/008, Wykład r 7 37/44 Rok akademicki 007/008, Wykład r 7 38/44 Notacja O Uwagi: przy porówywaiu róŝych wyraŝeń O() stałe ie mają zaczeia i mogą być igorowae, p. O( ) i O(9 ) mogą być rozwaŝae jak O( ) Język programowaia Język programowaia jest to usystematyzoway sposób przekazywaia komputerowi poleceń do wykoaia Język programowaia pozwala a dokłady zapis algorytmów oraz iych zadań jakie komputer ma wykoać połączeie algorytmów o róŝych złoŝoościach tworzy algorytm o wyŝszej z połączoych złoŝoości, p. dołączeie algorytmu o złoŝoości O( ) do algorytmu o złoŝoości O() tworzy algorytm o złoŝoości O( ) zagłębiaie algorytmów (tj. moŝeie ich wpływu) tworzy algorytm z pomoŝoą złoŝoością, p. algorytm O() zagłębioy w O(log ) daje w wyiku O( log ) Rok akademicki 007/008, Wykład r 7 39/44 Rok akademicki 007/008, Wykład r 7 40/44 Język programowaia Składia języka określa: sposób opisywaia struktur sterujących sposób opisywaia struktur daych sposób tworzeia poprawych symboli do azywaia zmieych i struktur daych sposób stosowaia iterpukcji, tj. zaków typu spacje, średiki, kropki, awiasy sposób budowy poprawych wyraŝeń Sematyka języka określa zaczeie poprawych składiowo wyraŝeń Język programowaia Implemetacja języka - kokreta realizacja języka dla maszy określoego typu Program komputerowy - zbiór (ciąg) istrukcji opisujących zadaie, które ma wykoać komputer Program komputerowy - pewa metoda obliczeiowa wyraŝoa za pomocą języka programowaia Kod źródłowy - postać programu wyraŝoa w języku programowaia Przetwarzaie kodu źródłowego odbywa się a dwa sposoby kompilacja (kompilowae języki programowaia) iterpretacja (iterpretowae języki programowaia)
Rok akademicki 007/008, Wykład r 7 4/44 Rok akademicki 007/008, Wykład r 7 4/44 Język programowaia Kompilacja: Kod źródłowy jest tłumaczoy do postaci kodu maszyowego (sekwecji elemetarych operacji gotowych do bezpośrediego przetworzeia przez procesor) Kompilacja do kodu maszyowego zapewia ajwyŝszą wydajość Wygeeroway kod jest ściśle powiązay z platformą sprzętową Iterpretacja: Kod źródłowy jest a bieŝąco tłumaczoy i wykoyway przez dodatkowy program zway iterpreterem Języki iterpretowae zapewiają większą przeośość programów, które są często iezaleŝe od platformy i systemu operacyjego Programy w językach iterpretowaych są miej wydaje iŝ w językach kompilowaych Geeracje językj zyków w programowaia Geeracje języków opisują zaawasowaie (rozbudowaie) struktury języka, co jest rówocześie związae z łatwością posługiwaia się imi im miejsza liczba ozaczająca geerację języka tym bardziej jest o zbliŝoy do sprzętu im większa geeracja języka tym jest o bardziej ituicyjy i iezaleŝy od sprzętu Rok akademicki 007/008, Wykład r 7 43/44 Rok akademicki 007/008, Wykład r 7 44/44 Języki programowaia Języki programowaia Istieje około 500 języków programowaia http://www.oreilly.com/pub/a/oreilly/ews/laguageposter_0504.html http://www.oreilly.com/pub/a/oreilly/ews/laguageposter_0504.html
Rok akademicki 007/008, Wykład r 7 45/44 Rok akademicki 007/008, Wykład r 7 46/44 Koiec wykładu r 7 Źródła a (KsiąŜ ąŝki): Dziękuj kuję za uwagę! Adamski T., Ogrodzki J.: Algorytmy komputerowe i struktury daych. Oficya Wydawicza Politechiki Warszawskiej, Warszawa, 005 - Rozdz... Wprowadzeie (str. 9-48) Goczyła K.: Struktury daych. Wydawictwo Politechiki Gdańskiej, Gdańsk, 00 - Rozdz..3 Miary jakości algorytmów (str. 9-0) Goczyła K.: Struktury daych. Wydawictwo Politechiki Gdańskiej, Gdańsk, 00 - Rozdz..4 Szacowaie (str. 0-3) Alexader R., Besley G.: C++. Optymalizacja oprogramowaia. Wydawictwo RM, Warszawa, 00 - Rozdz. 5 Pomiary czasu i złoŝoości (str. 89-9) Baachowski L., Diks K., Rytter W.: Algorytmy i struktury daych. WNT, Warszawa, 006 - Rozdz... ZłoŜoość obliczeiowa (str. 3-0) Baachowski L., Diks K., Rytter W.: Algorytmy i struktury daych. WNT, Warszawa, 006 - Rozdz..8. Metody układaia algorytmów (str. 40-4) Corme T.H., Leiserso Ch.E., Rivest R.L., Stei C.: Wprowadzeie do algorytmów. WNT, Warszawa, 005 - Rozdz.. Rola algorytmów w obliczeiach (str. 4-) Rok akademicki 007/008, Wykład r 7 47/44 Rok akademicki 007/008, Wykład r 7 48/44 Źródła a (KsiąŜ ąŝki): Źródła a (Iteret): Corme T.H., Leiserso Ch.E., Rivest R.L., Stei C.: Wprowadzeie do algorytmów. WNT, Warszawa, 005 - Rozdz..3. Projektowaie algorytmów (str. 7-36) Corme T.H., Leiserso Ch.E., Rivest R.L., Stei C.: Wprowadzeie do algorytmów. WNT, Warszawa, 005 - Rozdz. 4. Rekurecje (str. 60-87) Wróblewski P.: Algorytmy, struktury daych i techiki programowaia. Wydaie III, Helio, Gliwice, 003 - Rozdz.. Zaim wystartujemy (str. 9-8) Wróblewski P.: Algorytmy, struktury daych i techiki programowaia. Wydaie III, Helio, Gliwice, 003 - Rozdz.. Rekurecja (str. 9-5) Wróblewski P.: Algorytmy, struktury daych i techiki programowaia. Wydaie III, Helio, Gliwice, 003 - Rozdz. 9. Zaawasowae techiki programowaia (str. 09-7) http://pl.wikipedia.org/wiki/algorytm - Algorytm http://pl.wikipedia.org/wiki/dziel_i_zwyci%c4%99%c5%bcaj - Dziel i zwycięŝaj http://pl.wikipedia.org/wiki/programowaie_dyamicze - Programowaie dyamicze http://pl.wikipedia.org/wiki/algorytm_zach%c5%8ay - Algorytm zachłay http://pl.wikipedia.org/wiki/programowaie_liiowe - Programowaie liiowe http://pl.wikipedia.org/wiki/brute_force - Atak brute force http://pl.wikipedia.org/wiki/algorytm_probabilistyczy - Algorytm probabilistyczy http://pl.wikipedia.org/wiki/heurystyka - Heurystyka http://pl.wikipedia.org/wiki/rekurecja - Rekurecja http://pl.wikipedia.org/wiki/z%c5%8o%c5%bcoo%c5%9b%c4%87_obliczeiowa - ZłoŜoość obliczeiowa