1 / 23

Materiały pochodzą z Platformy Edukacyjnej Portalu szkolnictwo.pl

Materiały pochodzą z Platformy Edukacyjnej Portalu www.szkolnictwo.pl.

Rita
Download Presentation

Materiały pochodzą z Platformy Edukacyjnej Portalu szkolnictwo.pl

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Materiały pochodzą z Platformy Edukacyjnej Portalu www.szkolnictwo.pl Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu www.szkolnictwo.pl mogą być wykorzystywane przez jego Użytkowników wyłącznie w zakresie własnego użytku osobistego oraz do użytku w szkołach podczas zajęć dydaktycznych. Kopiowanie, wprowadzanie zmian, przesyłanie, publiczne odtwarzanie i wszelkie wykorzystywanie tych treści do celów komercyjnych jest niedozwolone. Plik można dowolnie modernizować na potrzeby własne oraz do wykorzystania w szkołach podczas zajęć dydaktycznych.

  2. Algorytmy Podstawy i zastosowanie Artystyczna wizja maszyny Turinga

  3. Definicja ogólna Algorytm definiowany jest w matematyce oraz informatyce jako skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Słowo „algorytm” pochodzi od starego angielskiego słowa algorism, oznaczającego wykonywanie działań przy pomocy liczb arabskich (w odróżnieniu od abacism - przy pomocy abakusa), które z kolei wzięło się od nazwiska Muhammed ibn Musa Alchwarizmi matematyka perskiego z IX wieku. Algorytm informatyczny jest to skończony ciąg czynności, przekształcający dane wejściowe w konkretne dane wyjściowe, to zbiór określonych reguł postępowania, które, realizowane zgodnie z ustalonym porządkiem, umożliwiają rozwiązanie określonego zadania. Każdy algorytm składa się z części deklaratywnej i proceduralnej. Muhammed ibn Musa Alchwarizmi – pomnik przed uniwersytetem w Teheranie

  4. Jako przykład stosowanego w życiu codziennym algorytmu podaje się często przepis kulinarny. Dla przykładu, aby upiec ciasto z owocami należy w określonej kolejności oraz odstępach czasowych (nazywanych imperatywem czasowym) dodawać właściwe rodzaje owoców i innych składników. Może istnieć kilka różnych przepisów dających na końcu bardzo podobne ciasto. Przykład ten ma wyłącznie charakter poglądowy, ponieważ język przepisów kulinarnych nie został jasno zdefiniowany. Algorytmy zwykle formułowane są w sposób ścisły w oparciu o język matematyki. • W niektórych krajach, jak Stany Zjednoczone, algorytmy mogą zostać opatentowane, jeżeli zostaną zaimplementowane w jakimś praktycznym celu. Niektórzy twierdzą, że patentowanie algorytmów spowalnia rozwój informatyki, dlatego, iż jeden producent może uzyskać monopol, np. na pisanie oprogramowania tworzącego pewne typy plików (np. GIF). Wiele koncernów komputerowych prowadzi między sobą prawnicze spory dotyczące praw własności do niektórych patentów. Kontrargumentem jest tzw. prawo własności intelektualnej (jaką objęty jest np. utwór muzyczny, będący wytworem intelektu i pracy danego muzyka) zakładające, że program jest intelektualną własnością twórcy.

  5. Cechy algorytmów informatycznych • Algorytmy informatyczne charakteryzują się następującymi cechami: • a. jednoznaczność (określoność) - wykonanie wszystkich procesów prowadzi do uzyskania poprawnego wyniku końcowego; dobry algorytm zawiera zabezpieczenia, nie dopuszczające do jego przerwania w trakcie realizacji z powodu zaistnienia nieprzewidzianych okoliczności; wiąże się ze skończonością liczby operacji; • b. uniwersalność (masowość) – algorytm ma rozwiązywać wszystkie problemy danego typu; • c. szczegółowość – polega na tym aby tak rozpisać czynności (na czynności elementarne), aby mogły być odczytane i wykonane przez realizatora algorytmu (czyli użytkownika); • d. sekwencyjność - dotyczy kolejności wykonania operacji; • e. złożoność (czasowa i pamięciowa) - zasoby niezbędne do wykonania czynności.

  6. Jak rozwiązywać algorytmy? • Aby prawidłowo rozwiązać dany algorytm, musimy się zastanowić w jaki sposób to zrobić. Na całościowe rozwiązanie problemu składają się: • wybór metody rozwiązania problemu • plan zastosowania tej metody do rozwiązania problemu • opis czynności wykonywanych podczas realizacji tego planu wraz z opisem ich skutków • ostateczny wynik wykonywanych czynności Czynności służące do rozwiązania zadania to kroki, których używamy w danej kolejności: • analiza treści zadania • wykaz danych wejściowych; wiadomych i niewiadomych oraz relacji między nimi • sprawdzenie czy zadanie posiada jednoznaczne rozwiązanie • wybór metody rozwiązania zadania • opis czynności, które należy wykonać z danymi wejściowymi przy zastosowaniu wybranej metody rozwiązania • sporządzenie i przedstawienie wyników rozwiązania zadania Urządzenie techniczne, które może realizować algorytm nosi nazwę automatu (żelazko z termoregulatorem, lodówka, pralka automatyczna). Uniwersalnym automatem do realizacji algorytmów z zakresu przetwarzania danych jest komputer.

  7. Budowa algorytmu Składowe algorytmu to: • nazwa algorytmu • opis obiektów • deklaracja stałych i zmiennych tekstowych i liczbowych • deklaracja funkcji użytkownika • opis czynności jakie należy wykonać z obiektami, co realizujemy za pomocą instrukcji, które opisują nie tylko sposób działania i kolejność ich wykonywania ale również ewentualne warunki jakie muszą być spełnione w celu uzyskania prawidłowego rozwiązania • opis wyników - zawiera sposób udostępnienia wyników rozwiązanego zadania Przykłady algorytmów to : • Algorytm Euklidesa • Algorytmy sortowania • Algorytmy kompresji • Algorytmy sztucznej inteligencji • Algorytmy przeszukiwania drzew: min-max i alpha-beta

  8. Klasyfikacja algorytmów Do tej pory stworzono wiele różnych sposobów podziału algorytmów na grupy. Problem ten wzbudza kontrowersje, trudno jest dokonać jednoznacznej klasyfikacji, dlatego wymienimy podstawowe paradygmaty tworzenia algorytmów komputerowych: • dziel i zwyciężaj – dzielimy problem na kilka mniejszych, a te znowu dzielimy, aż ich rozwiązania staną się oczywiste, • programowanie dynamiczne – problem dzielony jest na kilka, ważność każdego z nich jest oceniana i po pewnym wnioskowaniu wyniki analizy niektórych prostszych zagadnień wykorzystuje się do rozwiązania głównego problemu, • metoda zachłanna – nie analizujemy podproblemów dokładnie, tylko wybieramy najbardziej obiecującą w tym momencie drogę rozwiązania, • programowanie liniowe – oceniamy rozwiązanie problemu przez pewną funkcję jakości i szukamy jej minimum, • poszukiwanie i wyliczanie – kiedy przeszukujemy zbiór danych aż do odnalezienia rozwiązania, • algorytm probabilistyczny – algorytm działa poprawnie z bardzo wysokim prawdopodobieństwem, ale wynik nie jest pewny, • heurystyka – człowiek na podstawie swojego doświadczenia tworzy algorytm, który działa w najbardziej prawdopodobnych warunkach, rozwiązanie zawsze jest przybliżone.

  9. Implementacja • Komputery przetwarzają przekazywane im informacje z wykorzystaniem algorytmów. Program jest algorytmem zapisanym w języku zrozumiałym dla maszyny (asemblerze). Każdy poprawny kod maszynowy da się przełożyć na zestaw instrukcji dla teoretycznego modelu komputera – maszyny Turinga. • Zwykle algorytmy pracują na danych wejściowych i uzyskują z nich dane wyjściowe. Informacje zapisane w pamięci maszyny traktuje się jako jej stan wewnętrzny. Niektóre algorytmy mają za zadanie wyłącznie przeprowadzanie komputera z jednego stanu wewnętrznego do innego. • Każdy algorytm komputerowy musi być wprowadzony do komputera w bardzo rygorystycznie zdefiniowanym języku. Ludzie często komunikując się przesyłają między sobą informację wieloznaczne. Komputery mogą reagować tylko na całkowicie jednoznaczne instrukcje. Jeżeli dany algorytm da się wykonać na maszynie o dostępnej mocy obliczeniowej i pamięci oraz akceptowalnym czasie, to mówi się że jest obliczalny. Artystyczna wizja maszyny Turinga

  10. Poprawne działanie większości algorytmów implementowanych w komputerach opiera się na kolejnej realizacji pewnego zestawu warunków. Jeżeli, któryś z nich nie zostanie spełniony, to program kończy się komunikatem błędu. Czasami podczas implementacji algorytmu ważny warunek zostanie pominięty. Dla przykładu, mamy program dzielący przez siebie dwie liczby. Użytkownik poleca wykonać dzielenie przez zero. Działanie aplikacji, która nie sprawdzi warunku „dzielnik nierówny zero”, zostanie przerwane przez system operacyjny komputera. Najważniejsze techniki implementacji algorytmów komputerowych: • proceduralność – algorytm dzielimy na szereg podstawowych procedur, wiele algorytmów współdzieli wspólne biblioteki standardowych procedur, z których są one wywoływane w razie potrzeby • praca sekwencyjna – wykonywanie kolejnych procedur algorytmu, według kolejności ich wywołań, na raz pracuje tylko jedna procedura • praca wielowątkowa – procedury wykonywane są sekwencyjnie, lecz kolejność ich wykonania jest trudna do przewidzenia dla programisty • praca równoległa – wiele procedur wykonywanych jest w tym samym czasie, wymieniają się one danymi • rekurencja – procedura lub funkcja wywołuje sama siebie, aż do uzyskania wyniku lub błędu • obiektowość – procedury i dane łączymy w pewne klasy reprezentujące najważniejsze elementy algorytmu oraz stan wewnętrzny wykonującego je urządzenia

  11. Formy zapisu i prezentacji algorytmów • Algorytmy możemy zapisać i prezentować w różnej postaci. Poniżej przedstawiony został podział metod prezentowania algorytmów: • metody opisowe (słowne) - oparte na: • języku etnicznym lub branżowym • języku formalnym np. programowania • metody graficzne (wykreślne) - oparte na symbolach graficznych: • schematy blokowe • tablice decyzyjne • schematy czynnościowe (w tym obiegu dokumentów) • schematy przetwarzania (systemów przebiegu) • technika grafów • tablice krzyżowe • matryce sprzężeń W niniejszej prezentacji zostaną omówione schematy blokowe i tablice decyzyjne.

  12. SCHEMATY BLOKOWE ISTOTA I ZASADY BUDOWY Schematy blokowe są narzędziem stosunkowo prostym, przede wszystkim nakierowanym na prezentację kolejnych czynności w projektowanym algorytmie. Są szczególnie przydatne podczas pisania złożonych programów komputerowych. • Cechuje je • prosta zasada budowy (mała liczba elementów) • pewna elastyczność zapisów • możliwość zapisu z użyciem składu wybranego języka programowania • łatwa kontrola poprawności algorytmu • pozwalają na stosunkowo prostą zamianę instrukcji na instrukcje programu komputerowego Elementy budowy: • strzałka - wskazuje jednoznacznie powiązania i ich kierunek • operand - prostokąt, do którego wpisywane są wszystkie operacje z wyjątkiem instrukcji wyboru • predykat - romb, do którego wpisywane są wyłącznie instrukcje wyboru • etykieta - owal służący do oznaczania początku bądź końca sekwencji schematu (kończą, zaczynają lub przerywają/przenoszą schemat)

  13. Przykład prostego schematu blokowego START • Poniżej przedstawiony został algorytm liniowy, obliczający średnią z trzech liczb w reprezentacji krokowej i graficznej. K01: START algorytmu K02: WPROWADŹ A, B, C K03: Oblicz SUMA:=A+B+C K04: Oblicz SR:=SUMA/3 K05: WYPROWADŹ SR K06: KONIEC algorytmu WPROWADŹ A, B, C SUMA:=A+B+CSR:=SUMA/3 WYPROWADŹSR KONIEC

  14. Tablice decyzyjne • Tablice decyzyjne służą przede wszystkim do graficznej, bardzo przejrzystej prezentacji decyzji, jaką należy podjąć w zaistniałych warunkach. Abstrahują one od pozostałych elementów procesu decyzyjnego (nie określają sposobu ani adresata decyzji, procesów wprowadzania i wyprowadzania danych). Podstawą ich budowy są związki przyczynowo-skutkowe (jeżeli - to - ). • Tablica decyzyjna jest pewną struktura opisu zbioru związanych ze sobą reguł decyzyjnych. • Reguła decyzyjna jest to wyrażenie opisujące zbiór warunków, które muszą być spełnione, aby został wykonany ciąg czynności. • Struktura tablic składa się z czterech pól: • opisu (wykazu) warunków - zawiera opisy (nazwy) poszczególnych warunków; • stanu (zapisu) warunków - zawiera wszystkie kombinacje wartości, jakie mogą przyjąć poszczególne warunki; • opisu (wykazu) czynności (działań) - zawiera zestaw wszystkich możliwych wariantów decyzji; • stanu (zapisu) czynności (działań) - zawiera oznaczone warianty decyzji, jakie należy podjąć przy określonej kombinacji wartości warunków.

  15. Rodzaje tablic decyzyjnych możemy podzielić na dwa podstawowe rodzaje: • ze względu na poziom kompletności: • pełne (kompletne) • zredukowane (uproszczone) • pośrednie • ze względu na zapis warunków: • proste • rozszerzone • mieszane • Zasady redukcji tablic decyzyjnych: • eliminacja reguł logicznie sprzecznych wewnętrznie • łączenie reguł podobnych • grupowe łączenie reguł przez użycie reguły ELSE • Tablica decyzyjna to metoda opisywania strategii zachowania programu, oparta na porównywaniu możliwych decyzji z ich konsekwencjami, często używana jako pomoc przy projektowaniu systemów. Górna część tablicy zawiera warunki podejmowania decyzji, a dolna wyniki otrzymane przy spełnieniu tych warunków. Po wyborze jakiejś opcji program kończy swe działanie lub powtarza powyższą procedurę. Drzewo decyzyjne

  16. Algorytmy sortowania Sortowanie - proces ustawienia zbioru obiektów w określonym porządku. Algorytmy sortowania są jednymi z najbardziej znanych algorytmów. Ponieważ proces sortowania jest bardzo ważny w dzisiejszym oprogramowaniu tak, więc powstało wiele algorytmów, które lepiej lub gorzej rozwiązują ten problem. Sortować można nie tylko tablice, ale także inne struktury danych, chociażby na przykład listy. Cechą charakteryzującą niektóre algorytmy sortowania jest to, że działają one w miejscu. Znaczy to, że w czasie procesu sortowania tylko stała liczba elementów tablicy wejściowej jest przechowywana poza nią. Tak, więc algorytmy, które nie działają w miejscu wymagają dodatkowej pamięci. Jednym z najważniejszych parametrów, który określa algorytmy sortowania jest ich złożoność. Można udowodnić, że dolna granica złożoności algorytmów, które porównują elementy tablicy wejściowej wynosi n*lg n. Granica ta może być przekroczona przez algorytmy, które nie wykonują porównań. Takimi są na przykład: sortowanie poprzez zliczanie, pozycyjne, kubełkowe. Najbardziej uniwersalnym i w większości przypadków najszybszym jest algorytm QuickSort. Inną jego zaletą jest jego prostota i zwięzłość. Metody sortowania: • przez zamianę (sortowanie bąbelkowe) • przez wybieranie • przez wstawianie • kubełkowe, sortowanie koszykowe • przez zliczanie • pozycyjne • wyrazów • QuickSort

  17. Algorytmy kompresji Tego typu algorytmy mają za zadanie ogólnie zmniejszenie wielkości czegoś (czyli zwiększenia gęstości). Np. wody (fizyka). Działaniem przeciwnym do kompresji jest dekompresja. W informatyce algorytm kompresji polega na zmianie sposobu zapisu informacji tak, aby zmniejszyć redundancję i tym samym objętość zbioru. Innymi słowy chodzi o wyrażenie tego samego zestawu informacji, lecz za pomocą mniejszej liczby bitów. Kompresja dzieli się na bezstratną – w której z postaci skompresowanej można odzyskać identyczną postać pierwotną, oraz stratną – w której takie odzyskanie jest niemożliwe, jednak główne właściwości, które nas interesują, zostają zachowane, np. jeśli kompresowany jest obrazek, nie występują w postaci odtworzonej widoczne różnice w stosunku do oryginału. Pomimo to może się już nie nadawać zbyt dobrze np. do dalszej przeróbki czy do wydruku, gdyż w tych zastosowaniach wymaga się zachowania innych właściwości.

  18. Algorytmy kompresji dzieli się na algorytmy zastosowania ogólnego oraz algorytmy do danego typu danych. Z definicji nie istnieją algorytmy kompresji stratnej zastosowania ogólnego, ponieważ dla różnych typów danych konieczne jest zachowanie różnych właściwości. Na przykład kompresja dźwięku używa specjalnego modelu psychoakustycznego, który nie ma sensu w zastosowaniu do obrazu, poza bardzo ogólnymi przesłankami dotyczącymi sposobu postrzegania rzeczywistości przez człowieka. Większość algorytmów bezstratnych to algorytmy zastosowania ogólnego oraz ich drobne przeróbki, dzięki którym lepiej działają z określonymi typami danych. Nawet drobne poprawki mogą znacząco polepszyć wyniki dla pewnych typów danych. Algorytmy kompresji stratnej często jako ostatniej fazy używają kompresji bezstratnej. W takim przypadku poprzednie fazy mają za zadanie nie tyle kompresować ile przygotować dane do łatwiejszej kompresji. Algorytmy kompresji używają pewnych modeli prawdopodobieństwa. Są generalnie dwa systemy: modele statyczne i modele adaptywne.

  19. Modele statyczne, jeśli nie są znane z góry, są przesyłane przed właściwymi danymi. Koszt przesłania takiego modelu jest bardzo duży i wymusza stosowanie wyłącznie bardzo prostych modeli. To powoduje, że modele statyczne rzadko są stosowane. Kompresory są tutaj zwykle znacznie bardziej złożone niż dekompresory. Modele adaptywne są tworzone w miarę przetwarzania danych. Kompresor i dekompresor używają tego samego algorytmu do nanoszenia zmian na model w miarę napływania danych. W tym przypadku złożoność kompresorów i dekompresorów jest zwykle, choć nie zawsze, podobna. Wadą modeli adaptywnych jest to, że na początku model ten znacznie odbiega od optymalnego. Jednak możliwość stosowania modeli o dowolnej złożoności, możliwość używania różnych modeli do różnych obszarów kompresowanych danych oraz brak potrzeby przesyłania modelu sprawia, że właściwie całkowicie wyparły one modele statyczne.

  20. Sztuczna Inteligencja Sztuczna Inteligencja (ang. Artificial Intelligence) (AI) to technologia i kierunek badań informatycznych, którego zadaniem jest "Konstruowanie maszyn, o których działaniu dałoby się powiedzieć, że są podobne do ludzkich przejawów inteligencji”. •  Istnieją dwa różne podejścia do pracy nad AI. Pierwsze, to tworzenie całościowych modeli matematycznych analizowanych problemów i implementowanie ich w formie programów komputerowych mających realizować konkretne cele. Drugie to próby tworzenia struktur i programów "samouczących się", takich jak modele sieci neuronowych oraz opracowywania procedur rozwiązywania problemów poprzez "uczenie" takich programów a następnie uzyskiwanie od nich odpowiedzi na "pytania". W tej grupie, tzw. podejścia symbolicznego, są np. algorytmy genetyczne, metody logiki rozmytej i wnioskowania bazującego na doświadczeniu. • Termin sztuczna inteligencja został po raz pierwszy zaproponowany prawdopodobnie przez Johna McCarthy'ego, który w 1955 r. zdefiniował go w następujący sposób: • "konstruowanie maszyn, o których działaniu dałoby się powiedzieć, że są podobne do ludzkich przejawów inteligencji".

  21. Algorytm min-max Minimax (czasami minmax) jest metodą w teorii decyzji do minimalizowania maksymalnych możliwych strat. Alternatywnie można je traktować jako maksymalizację minimalnego zysku (maximin). Wywodzi się to z teorii gry o sumie zerowej, obejmujących oba przypadki, zarówno ten, gdzie gracze wykonują ruchy naprzemiennie, jak i ten, gdzie wykonują ruchy jednocześnie. Zostało to również rozszerzone na bardziej skomplikowane gry i ogólne podejmowanie decyzji w obecności niepewności. Algorytm min–max to najprostszy algorytm przeszukiwania drzew mający zastosowanie w komputerowych nielosowych algorytmach gry w dwie osoby, np. szachów. Wybieramy ten ruch który po ruchu przeciwnika ma "największą najmniejszą" wartość (stąd nazwa). Czyli dla każdego ruchu symulujemy wszystkie możliwe ruchy przeciwnika i za wartość danego naszego ruchu uznajemy wartość najlepszego z punktu przeciwnika ruchu który może on wykonać jeśli my wykonamy dany ruch (część min). Potem wybieramy ruch o najwyższej wartości (część max).  Wartość sytuacji można szacować rekurencyjnie algorytmem min-max, jednak po kilku poziomach konieczne jest użycie jakiejś innej funkcji, np. przyjmującej 1 dla wygranej, 0 dla przegranej i inną wartość dla pozostałych sytuacji.

  22. Algorytm alpha-beta Algorytm Alfa-Beta – algorytm przeszukujący, redukujący liczbę węzłów, które muszą być rozwiązywane w drzewach przeszukujących przez algorytm min-max. Jest to przeszukiwanie wykorzystywane w grach dwuosobowych, takich jak kółko i krzyżyk, szachy, go. Warunkiem stopu jest znalezienie przynajmniej jednego rozwiązania czyniącego obecnie badaną opcję ruchu gorszą od poprzednio zbadanych opcji. Wybranie takiej opcji ruchu nie przyniosłoby korzyści graczowi ruszającemu się, dlatego też nie ma potrzeby przeszukiwać dalej gałęzi drzewa tej opcji. Ta technika pozwala zaoszczędzić czas poszukiwania bez zmiany wyniku działania algorytmu. Algorytm alfa-beta. Zaznaczone na szaro poddrzewa nie muszą być przeszukiwane, ponieważ wiemy, że nie wpłyną na poprawę wartości węzła leżącego powyżej odcięcia, toteż ich odrzucenie nie wpłynie na ostateczny ich wynik. Na przykład odcięcie poddrzewa o wartości 8 na trzecim poziomie nie wpłynie na wynik. Gdyby wpływało na zmianę wartości minimalnej gałęzi o wartości 5 na drugim poziomie, to może ją tylko zmniejszyć, zatem nie zmieni wartości korzenia (6), która jest maksymalną wartością spośród wartości wszystkich poddrzew. Odcięcia dokonać możemy jednak dopiero w momencie, gdy znamy wartość 6 drugiego poddrzewa na drugim poziomie.

  23. Bibliografia • S. J. Russell, P. Norvig (2003). Artificial Intelligence: A Modern Approach, Second Edition, Prentice Hall. • Von Neumann, J: Zur Theorie der Gesellschaftsspiele, Math. Annalen. 100 (1928) • John L Casti: Five golden rules: great theories of 20th-century mathematics – and why they matter, New York: Wiley-Interscience, 1996 • Donald E. Knuth: Sztuka programowania, T. 1. Warszawa: Wydawnictwo Naukowo-Techniczne, 2002 • Neil Gershenfeld i Isaac L. Chuang, Molekularne komputery kwantowe, Świat Nauki, sierpień 1998 • Nadrian C. Seeman, Na granicy życia i nanotechnologii, Świat Nauki, lipiec 2004 • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Wprowadzenie do algorytmów, WNT, wyd. VI 2004 • pl.wikipedia.org • algorytm.org • neuralnets.eu • computerchess.us/gtchess • encyklopedia.pwn.pl

More Related