Poprawność semantyczna
|
|
- Witold Żurek
- 4 lat temu
- Przeglądów:
Transkrypt
1 Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych części programu, jak definicje typów, deklaracje stałych i zmiennych, zmian wartościowania zmiennych będących instrukcjami programu.
2 Algorytm jako napis może być poprawny składniowo, ale niepoprawny semantycznie, co jest równoznaczne z niemożnością poprawnego deklarowania i wartościowania zmiennych. Powody: w wyrażeniu występuje argument nie należący do typu związanego z tym wyrażeniem (np. w wyniku działania funkcji otrzymujemy liczbę rzeczywistą, a funkcja miała zwracać wartości całkowite); wystąpienie w algorytmie pętli o wyrażeniu logicznym stale wartościowanym jako prawdziwe (pętla będzie wykonywana bez końca); końcowe wartościowanie zmiennych nie odpowiada oczekiwaniom (program poprawnie kończy obliczenia, ale wyniki nie rozwiązują postawionego zadania).
3 Niech A oznacza algorytm-program, -warunek (warunki), jakie powinny spełniać dane wejściowe (początkowe wartościowania zmiennych) algorytmu A, -warunek, jaki powinny spełniać końcowe wartościowania zmiennych (własności danych wyjściowych i ich związek z danymi wejściowymi)
4 Semantyczna poprawność nazywana jest też inaczej pełną poprawnością. Dowodzenie jest trudne. Niekiedy zadowalamy się sprawdzeniem elementów tej definicji. Częściowa semantyczna poprawność Własność określoności dla warunku początkowego Własność stopu Semantyczna poprawność
5 Definicje elementów:
6 Dowodzenie Indukcja Definicja 1 Metoda niezmienników Częściowa poprawność Własność stopu
7 W dowodzeniu indukcyjnym semantycznej poprawności algorytmu przeprowadza się zwykle indukcję względem liczby powtórzeń instrukcji iteracyjnej lub poziomu zagnieżdżenia realizacji procedury rekurencyjnej. Przykład. Rozważmy algorytm przeszukiwania drzewa binarnego DB zadanego przez wskaźnik na korzeń DB określonego przez zmienną typu el_drzewa zdefiniowanego następująco: struct element { int wartosc; element *pien; element *konar_lewy; element *konar_prawy; } typedef element, *el_drzewa;
8 struct element { int wartosc; element *pien; element *konar_lewy; element *konar_prawy; } typedef element, *el_drzewa; int preorder (el_drzewa korzen, int x) { //{ : korzen!=null} int pom=0; if ((*korzen).wartosc==x) return 1; if ((*korzen).konar_lewy!=null) //2 pom=preorder((*korzen).konar_lewy,x); if (pom) return 1; //3 else if ((*korzen).konar_prawy!=null) //4 pom=preorder((*korzen).konar_prawy,x); if (pom) return 1; //5 else return 0; //{ : funkcja zwraca 1, gdy "x jest elementem drzewa"}, // zwraca 0, gdy "x nie jest elementem drzewa".} } Rozważmy następujący algorytm przeszukiwania drzewa binarnego:
9 Dowód przeprowadzimy indukcyjnie względem parametru określającego wysokość drzewa. Oznaczmy wysokość drzewa przez wd. Dla dowodu poprawności semantycznej algorytmu preorder sformułujmy własność: Własność. Dla dowolnego drzewa binarnego o wysokości wd będącej liczbą naturalną wd>0, algorytm preorder dla danych spełniających w skończonej liczbie kroków dochodzi do wartościowania końcowego i to wartościowanie spełnia.
10 Dowód: Przeprowadzimy go metodą indukcji matematycznej. Krok 1 sprawdzenie poprawności algorytmu dla początkowej wartości. Należy pokazać, że preorder(korzen) poprawnie określa wynik końcowy dla dowolnego drzewa binarnego o określonym adresie korzenia i wysokości wd=1. Istotnie, jeśli (*korzen).wartosc==x, to nastąpi koniec wartościowania funkcji i wartością funkcji będzie 1, co będzie oznaczać zajście. Jeśli (*korzen).wartosc!=x, to wobec i założenia, że wd=1 mamy (*korzen).konar_lewy==null oraz (*korzen).konar_prawy==null. Zatem wobec początkowego wartościowania zmiennej pom=0, nie wykona się żadna z pięciu instrukcji warunkowych i funkcja zwróci 0, co będzie oznaczało zajście. Ponieważ jedynym miejscem elementem w drzewie, gdzie może znajdować się pole wartościujące równe x jest pole korzenia, zatem dla wd=1 program jest semantycznie poprawny.
11 Krok2 założenie i teza indukcyjna z dowodem. Zał. ind. Załóżmy, że algorytm preorder jest poprawnie określony dla drzew binarnych o wysokości wd<=n. Teza. ind. Udowodnimy, że jest wtedy poprawnie określony dla drzew binarnych o wysokości wd=n+1.
12 Istotnie. Rozważmy drzewo binarne o wysokości wd=n+1. Jeśli (*korzen).wartosc==x, to nastąpi koniec wartościowania funkcji i wartością będzie 1, co oznacza zajście. Jeśli (*korzen).wartosc!=x, to nastąpi ewentualne wykonanie kolejnych instrukcji programu (2,3,4,5). Wobec założenia indukcyjnego, ponieważ lewe i prawe poddrzewo drzewa o wysokości n+1, będą drzewami o wysokościach mniejszych lub równych n, więc instrukcje 2,3,4 zostaną wykonane poprawnie i spowodują wartościowanie funkcji spełniające. Instrukcja 5 dokona wartościowania funkcji jako 0, jeśli x nie będzie elementem lewego i prawego poddrzewa, czyli nie będzie elementem drzewa. Zatem wartością funkcji będzie 1, gdy x jest elementem drzewa, 0 gdy nie jest elementem drzewa, co oznacza zajście.
13 Zatem na mocy zasady indukcji matematycznej ma miejsce teza własności dla drzew binarnych o dowolnej wysokości wd, co jest równoważne całkowitej poprawności semantycznej algorytmu preorder wobec definicji 1.
14 Przykład. Algorytm obliczający wartość wyrażenia 2 n +1 int POTEGA_2(int n) { // : n>=0 if((n==0) (n==1)) return n+2; return 3*POTEGA_2(n-1)-2*POTEGA_2(n-2); } // : wartością funkcji jest 2 n +1. Przykład algorytmu rekurencyjnego (poprzedni też taki był)
15 Dowód przeprowadzimy indukcyjnie względem parametru n określającego wykładnik potęgi 2. Dla dowodu poprawności semantycznej algorytmu POTEGA_2 sformułujmy własność: Własność. Dla dowolnego wykładnika potęgi o podstawie 2 będącego liczbą naturalną n>=0, algorytm POTEGA_2 dla danych spełniających w skończonej liczbie kroków dochodzi do wartościowania końcowego i to wartościowanie spełnia.
16 Dowód: Przeprowadzimy go metodą indukcji matematycznej. Krok 1 sprawdzenie poprawności algorytmu dla początkowej wartości. Należy pokazać, że POTEGA_2(n) poprawnie określa wynik końcowy dla potęgi o podstawie 2 i wykładniku n=0 lub n=1. Istotnie, jeśli n=0, to zachodzi warunek if((n==0) (n==1)) i nastąpi koniec wartościowania funkcji i wartością funkcji będzie n+2, czyli 2, co będzie oznaczać zajście. Jeśli natomiast n=1, to również zachodzi warunek if((n==0) (n==1)) i nastąpi koniec wartościowania funkcji i wartością funkcji będzie również n+2, czyli 3, co także będzie oznaczać zajście. Zatem dla n=0 lub n=1 program jest semantycznie poprawny.
17 Krok2 założenie i teza indukcyjna z dowodem. Zał. ind. Załóżmy, że algorytm POTEGA_2 jest poprawnie określony dla potęgi o podstawie 2 i wykładniku k<=n, n=1,2,3. Teza. ind. Udowodnimy, że jest wtedy poprawnie określony dla potęgi o wykładniku n+1.
18 Istotnie. Rozważmy potęgę o podstawie 2 i wykładniku n+1. Ponieważ n+1>1, to POTEGA_2(n+1) zwróci wartościowanie funkcji spełniające 3*POTEGA_2 ((n+1)-1)-2*potega_2((n+1)-2). Policzmy: 3*POTEGA_2((n+1)-1)-2*POTEGA_2((n+1)-2)=3*POTEGA_2(n)-2*POTEGA_2(n-1). Wobec założenia indukcyjnego, ponieważ POTEGA_2(n) i POTEGA_2 (n-1) będą funkcjami obliczającymi wartość potęgi dla wykładników mniejszych lub równych n, więc zostaną wykonane poprawnie i spowodują wartościowanie funkcji spełniające. Zatem POTEGA_2(n) zwróci 2 n +1, a POTEGA_2(n-1) zwróci 2 n Możemy więc napisać: 3*POTEGA_2 ((n+1)-1)-2*potega_2 ((n+1)-2)= =3*POTEGA_2 (n)-2*potega_2 (n-1) = =3*(2 n +1)-2*(2 n-1 +1) =3*2 n +3-2 n -2=2*2 n +1=2 n+1 +1, co oznacza zajście.
19 Zatem na mocy zasady indukcji matematycznej ma miejsce teza własności dla algorytmu POTEGA_2 dla dowolnego wykładnika potęgi n, co jest równoważne całkowitej poprawności semantycznej algorytmu POTEGA_2 wobec definicji 1.
20 Wprowadzimy teraz pojęcie niezmiennika pętli, które jest często wykorzystywane do projektowania algorytmów i dowodzenia ich poprawności. Rozważmy pętlę while, która ma postać:
21
22
23 Ostatnie stwierdzenie dotyczące prawdziwości zdania g po zakończeniu pętli jest tak oczywistym, że często się o nim zapomina. Jednak dostarcza ono ważnych informacji pozwalających uzasadnić semantyczną poprawność algorytmów. Dlatego zostało umieszczone w treści twierdzenia.
24 k=4; while(k>=4) k=k+1;
25 Przykład 1. Algorytm NWD Euklidesa. Zapis w pseudokodzie Jak znaleźć niezmiennik pętli?
26 Najpierw należy pokazać, że
27
28
29
30
31
32 Ćwiczenie
33
34
35 Przykład 2. Rozważmy algorytm dzielenia całkowitego liczb naturalnych. void dzielenie (int x,y) { // : 0<=x i 0<=y int q,r; q=0; r=x; while(y<=r) //p: x=q*y+r i 0<=r i 0<=y { q=q+1; r=r-y; }; } // : x=q*y+r i 0<=r<y. Pokażemy, że algorytm ten jest częściowo poprawny względem warunku początkowego i końcowego.
36 Należy udowodnić pewną własność obliczeń algorytmu, która łączy zachodzenie warunku początkowego z warunkiem końcowym. Jaki warunek spełniają x, y, q, r w pętli while w chwili sprawdzenia warunku y<=r sterującego iteracją? Określamy niezmiennik p. Wykażemy, że za każdym razem, gdy obliczenie algorytmu rozpoczyna się stanem spełniającym warunek początkowy oraz dochodzi do warunku iteracji, to spełniony jest warunek p.
37 void dzielenie (int x,y) { // : 0<=x i 0<=y int q,r; q=0; r=x; while(y<=r) //p: x=q*y+r i 0<=r i 0<=y { q=q+1; z pętli r=r-y; }; } // : x=q*y+r i 0<=r<y. bezpośrednio z początku algorytmu Możemy dojść do p dwiema drogami:
38 void dzielenie (int x,y) { // : 0<=x i 0<=y int q,r; q=0; r=x; while(y<=r) //p: x=q*y+r i 0<=r i 0<=y { q=q+1; r=r-y; }; } // : x=q*y+r i 0<=r<y. Wtedy zostaje wykonana instrukcja złożona: q =q+1;r =r-y. Trzeba sprawdzić, czy dla q i r zachodzi warunek p: p: x=q *y+r i 0<=r i 0<=y. Jeśli dojdziemy do p z początku algorytmu, to q=0, r=x i p jest spełniony, bo zachodzi. Jeśli już przejdziemy przez pętlę while i dojdziemy do p, to wiemy, że y<=r i zaszedł już warunek p: x=q*y+r i 0<=r i 0<=y. Ale x=(q+1)*y+(r-y)=q*y+r 0<=r =r-y, bo y<=r i 0<=y.
39 void dzielenie (int x,y) { // : 0<=x i 0<=y int q,r; q=0; r=x; while(y<=r) //p: x=q*y+r i 0<=r i 0<=y { q=q+1; r=r-y; }; } // : x=q*y+r i 0<=r<y. Stosując teraz indukcję względem liczby wykonanych sprawdzeń warunku iteracji y<=r, wnioskujemy, że przy każdym sprawdzeniu warunku iteracji zachodzi p. Zatem, albo cały czas zachodzi y<=r i wtedy nie dochodzimy do, albo w pewnej chwili y>r i wtedy dochodzimy do, ale ponieważ p był spełniony, więc musi być spełniony. Zwróćmy uwagę, że jeśli x=0 i y=0, to obliczenie algorytmu jest nieskończone, a więc według podanych warunków algorytm jest tylko częściowo poprawny i ma własność określoności obliczeń, ale nie ma własności stopu!
Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak
Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka
Podstawy Informatyki. Algorytmy i ich poprawność
Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania
Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku
Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku Rozdział 1 Poprawność programów Jeżeli projektujemy algorytmy lub piszemy programy, to ważne jest pytanie, czy nasz algorytm lub program
Wykład 2. Poprawność algorytmów
Wykład 2 Poprawność algorytmów 1 Przegląd Ø Poprawność algorytmów Ø Podstawy matematyczne: Przyrost funkcji i notacje asymptotyczne Sumowanie szeregów Indukcja matematyczna 2 Poprawność algorytmów Ø Algorytm
Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik
Wykład X Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2016 c Copyright 2016 Janusz Słupik Drzewa binarne Drzewa binarne Drzewo binarne - to drzewo (graf spójny bez cykli) z korzeniem (wyróżnionym
Matematyka dyskretna
Matematyka dyskretna Wykład 4: Podzielność liczb całkowitych Gniewomir Sarbicki Dzielenie całkowitoliczbowe Twierdzenie: Dla każdej pary liczb całkowitych (a, b) istnieje dokładnie jedna para liczb całkowitych
Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017
Logika Stosowana Wykład 1 - Logika zdaniowa Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika Stosowana 2017 1 / 30 Plan wykładu 1 Język
ALGORYTMY I STRUKTURY DANYCH
KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala
TEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 14c 2 Definicje indukcyjne Twierdzenia dowodzone przez indukcje Definicje indukcyjne Definicja drzewa
Wielomiany jednej zmiennej rzeczywistej algorytmy
Rozdział 15 Wielomiany jednej zmiennej rzeczywistej algorytmy 15.1 Algorytm dzielenia Definicja 15.1 Niech dany będzie niezerowy wielomian f K[x] (K jest ciałem) f = a 0 x m + a 1 x m 1 +... + a m, gdzie
Algorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
Indukcja matematyczna
Indukcja matematyczna 1 Zasada indukcji Rozpatrzmy najpierw następujący przykład. Przykład 1 Oblicz sumę 1 + + 5 +... + (n 1). Dyskusja. Widzimy że dla n = 1 ostatnim składnikiem powyższej sumy jest n
Wyszukiwanie. Wyszukiwanie binarne
Wyszukiwanie Wejście: posortowana, n-elementowa tablica liczbowa T oraz liczba p. Wyjście: liczba naturalna, określająca pozycję elementu p w tablicy T, bądź 1, jeŝeli element w tablicy nie występuje.
Rekurencja (rekursja)
Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)
1 Wprowadzenie do algorytmiki
Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności
Definicje. Algorytm to:
Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi
Poprawność algorytmów
Poprawność algorytmów Jeśli uważasz, że jakiś program komputerowy jest bezbłędny, to się mylisz - po prostu nie zauważyłeś jeszcze skutków błędu, który jest w nim zawarty. Jakie błędy można popełnić? Błędy
Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303
Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Kilka podstawowych pojęć Definition Programy imperatywne zmieniają stan, czyli wartości zmiennych. Asercja = warunek logiczny, który
Drzewa poszukiwań binarnych
1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie
Programowanie - wykład 4
Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów
Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d
C. Bagiński Materiały dydaktyczne 1 Matematyka Dyskretna /008 rozwiązania 1. W każdym z następujących przypadków podać jawny wzór na s n i udowodnić indukcyjnie jego poprawność: (a) s 0 3, s 1 6, oraz
Porządek symetryczny: right(x)
Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)
Matematyka Dyskretna Zestaw 2
Materiały dydaktyczne Matematyka Dyskretna (Zestaw ) Matematyka Dyskretna Zestaw 1. Wykazać, że nie istnieje liczba naturalna, która przy dzieleniu przez 18 daje resztę 13, a przy dzieleniu przez 1 daje
Indukcja matematyczna, zasada minimum i maksimum. 17 lutego 2017
Indukcja matematyczna, zasada minimum i maksimum 17 lutego 2017 Liczby naturalne - Aksjomatyka Peano (bez zera) Aksjomatyka liczb naturalnych N jest nazwą zbioru liczb naturalnych, 1 jest nazwą elementu
(1) Poprawność Algorytmów
(1) Algorytmów Kontakt dr hab. Marcin, Katedra SIAM, PJATK Polecane Podręczniki: Ogólne: T.Cormen, C.Leiserson, R.Rivest et al. do Algorytmów, PWN 2018 (lub wydanie anglojęzyczne) G.Mirkowska et al. -
Zapis algorytmów: schematy blokowe i pseudokod 1
Zapis algorytmów: schematy blokowe i pseudokod 1 Przed przystąpieniem do napisania kodu programu należy ten program najpierw zaprojektować. Projekt tworzącego go algorytmu może być zapisany w formie schematu
Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Analiza Algorytmów - Moduł 2- Ćwiczenia
Analiza Algorytmów - Moduł 2- Ćwiczenia Aleksandra Orpel 1 Niezmienniki pętli Ćwiczenie 1. Wykaż, że podany warunek "k 4 > 2m 6 " jest niezmiennikiem pętli 1while 1 mdo 2 3 m := 2m; 4 k := 3k; 5 end: Rozwiazanie:
ALGORYTMY. 1. Podstawowe definicje Schemat blokowy
ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności
Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna
Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2016 1 / 8 Plan Wstęp Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz Zmiany w funkcji main()
Wskazówki dotyczące zmiennych, tablic i procedur 1
Wskazówki dotyczące zmiennych, tablic i procedur 1 Spis treści 1. Tworzenie zmiennych i tablic 1 2. Procedury i zmienne, przekazywanie zmiennych do procedur 5 3. Zakończenie działania procedury 9 1. Tworzenie
ALGORYTMY. 1. Podstawowe definicje Schemat blokowy
ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności
Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe
I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom
3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.
1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę
Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek
Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących
Metoda Tablic Semantycznych
Procedura Plan Reguły Algorytm Logika obliczeniowa Instytut Informatyki Plan Procedura Reguły 1 Procedura decyzyjna Logiczna równoważność formuł Logiczna konsekwencja Procedura decyzyjna 2 Reguły α, β,
n=0 (n + r)a n x n+r 1 (n + r)(n + r 1)a n x n+r 2. Wykorzystując te obliczenia otrzymujemy, że lewa strona równania (1) jest równa
Równanie Bessela Będziemy rozważać następujące równanie Bessela x y xy x ν )y 0 ) gdzie ν 0 jest pewnym parametrem Rozwiązania równania ) nazywamy funkcjami Bessela rzędu ν Sprawdzamy, że x 0 jest regularnym
Wstęp do programowania
Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH Temat : Drzewa zrównoważone, sortowanie drzewiaste Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/
WHILE (wyrażenie) instrukcja;
INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while
Schemat rekursji. 1 Schemat rekursji dla funkcji jednej zmiennej
Schemat rekursji 1 Schemat rekursji dla funkcji jednej zmiennej Dla dowolnej liczby naturalnej a i dowolnej funkcji h: N 2 N istnieje dokładnie jedna funkcja f: N N spełniająca następujące warunki: f(0)
Indukcja matematyczna. Zasada minimum. Zastosowania.
Indukcja matematyczna. Zasada minimum. Zastosowania. Arkadiusz Męcel Uwagi początkowe W trakcie zajęć przyjęte zostaną następujące oznaczenia: 1. Zbiory liczb: R - zbiór liczb rzeczywistych; Q - zbiór
Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. 1. Identyfikator funkcji,
. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019
.. Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2019 1 / 39 Plan.1 Wstęp.2 Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz.3.4 Zmiany w
Przykładami ciągów, które Czytelnik dobrze zna (a jeśli nie, to niniejszym poznaje), jest ciąg arytmetyczny:
Podstawowe definicje Definicja ciągu Ciągiem nazywamy funkcję na zbiorze liczb naturalnych, tzn. przyporządkowanie każdej liczbie naturalnej jakiejś liczby rzeczywistej. (Mówimy wtedy o ciągu o wyrazach
Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa
Informatyka 1 Wykład III Wyrażenia i instrukcje, złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: składnia wyrażeń, drzewa rozbioru gramatycznego i wyliczenia wartości wyrażeń, operatory
Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny
Algorytm to przepis; zestawienie kolejnych kroków prowadzących do wykonania określonego zadania; to uporządkowany sposób postępowania przy rozwiązywaniu zadania, problemu, z uwzględnieniem opisu danych
Podstawowe elementy programu. patrz: następne 2 slajdy. Podstawowe elementy programu. Komendy proste:
Podstawowe elementy programu Zestaw komend stojący do dyspozycji programisty zależy od języka programowania; jest ograniczony; jestnatylebogaty,żedajesięznichzłożyć(jakzklocków)sensowne programy Umiejętność
WHILE (wyrażenie) instrukcja;
INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while
Algorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie
Algorytmika i programowanie dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Algorytmy i sposoby ich przedstawiania Algorytm - informatyczny opis planu rozwiązania zadania Sposoby
Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz
Grafy (3): drzewa Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków UTP Bydgoszcz 13 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 1 / 107 Drzewo Definicja. Drzewo to graf acykliczny
ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.
POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie
Programowanie strukturalne i obiektowe. Funkcje
Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy
3. Wykład 3: Dowody indukcyjne, strategie dowodowe Dowody indukcyjne. Dotychczas zobaczyliśmy w jaki sposób można specyfikować definicje
3. Wykład 3: Dowody indukcyjne, strategie dowodowe. 3.1. Dowody indukcyjne. Dotychczas zobaczyliśmy w jaki sposób można specyfikować definicje indukcyjne kategorii syntaktycznych lub osądów, czy też w
Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.
Plan Procedura decyzyjna Reguły α i β - algorytm Plan Procedura decyzyjna Reguły α i β - algorytm Logika obliczeniowa Instytut Informatyki 1 Procedura decyzyjna Logiczna konsekwencja Teoria aksjomatyzowalna
... [a n,b n ] kn [M 1,M 2 ], gdzie a i M 1, b i M 2, dla i {1,..., n}. Wówczas: [a 1,b 1 ] k 1. ... [a n,b n ] kn =(a 1 b 1 a 1
4. Wykład 4: Grupy rozwiązalne i nilpotentne. Definicja 4.1. Niech (G, ) będzie grupą. Wówczas (1) ciąg podgrup grupy G zdefiniowany indukcyjnie wzorami G (0) = G, G (i) =[G (i 1),G (i 1) ], dla i N nazywamy
Instrukcje sterujące
Podstawy programowania w C++ Bibliografia: Instrukcje sterujące Nauka programowania dla początkujących; A. Struzińska-Walczak / K. Walczak CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com Opracował:
Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).
Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z
Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów
Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów Liga zadaniowa 202/203 Seria VI (grudzień 202) rozwiązania zadań 26. Udowodnij, że istnieje 0 00 kolejnych liczb całkowitych dodatnich nie większych
Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady
Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą
Drzewa wyszukiwań binarnych (BST)
Drzewa wyszukiwań binarnych (BST) Krzysztof Grządziel 12 czerwca 2007 roku 1 Drzewa Binarne Drzewa wyszukiwań binarnych, w skrócie BST (od ang. binary search trees), to szczególny przypadek drzew binarnych.
Programowanie w języku C++ Grażyna Koba
Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad
LX Olimpiada Matematyczna
LX Olimpiada Matematyczna Rozwiązania zadań konkursowych zawodów stopnia drugiego 13 lutego 2009 r. (pierwszy dzień zawodów) Zadanie 1. Liczby rzeczywiste a 1, a 2,..., a n (n 2) spełniają warunek a 1
Matematyka dyskretna. Andrzej Łachwa, UJ, a/15
Matematyka dyskretna Andrzej Łachwa, UJ, 2017 andrzej.lachwa@uj.edu.pl 3a/15 Indukcja matematyczna Zasada Minimum Dowolny niepusty podzbiór S zbioru liczb naturalnych ma w sobie liczbę najmniejszą. Zasada
Algorytmy i struktury danych. Wykład 4
Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych
Zasada indukcji matematycznej
Zasada indukcji matematycznej Twierdzenie 1 (Zasada indukcji matematycznej). Niech ϕ(n) będzie formą zdaniową zmiennej n N 0. Załóżmy, że istnieje n 0 N 0 takie, że 1. ϕ(n 0 ) jest zdaniem prawdziwym,.
Algorytm. Krótka historia algorytmów
Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne
Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie
Algorytmika i programowanie Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Tablice Tablica jest zbiorem elementów tego samego typu. Każdy element jest identyfikowany (numer
TEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Wysokość drzewa Głębokość węzła
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Matematyka dyskretna. Andrzej Łachwa, UJ, /15
Matematyka dyskretna Andrzej Łachwa, UJ, 2015 andrzej.lachwa@uj.edu.pl 3/15 Indukcja matematyczna Poprawność indukcji matematycznej wynika z dobrego uporządkowania liczb naturalnych, czyli z następującej
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał
REKURENCJA W JĘZYKU HASKELL Autor: Walczak Michał CZYM JEST REKURENCJA? Rekurencja zwana rekursją, polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne zastępują w pewnym sensie iteracje.
Teoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 4a: Rozwiązywanie rekurencji http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Czas działania programu Dla konkretnych
Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują
Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel
Wstęp do programowania Drzewa podstawowe techniki Piotr Chrząstowski-Wachtel Drzewa wyszukiwań Drzewa często służą do przechowywania informacji. Jeśli uda sie nam stworzyć drzewo o niewielkiej wysokości
Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 13 Rekurencja 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Rekurencja - pojęcie 2 Rekurencja - pojęcie Rekurencja (rekursja) wywołanie
Podstawy Programowania
Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl
Języki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Programowanie komputerowe. Zajęcia 2
Programowanie komputerowe Zajęcia 2 Funkcje Funkcje są podstawowym składnikiem programów w C++. Każda funkcja jest fragmentem programu, który można używać wielokrotnie i niezależnie od pozostałych funkcji.
Anatomia definicji rekursywnej. Anatomia definicji rekursywnej. int silnia(intn){ if(n==0) return 1; else return n*silnia(n-1); }
Anatomia definicji rekursywnej int silnia(intn){ if(n==0) return 1; else return n*silnia(n-1); PRZYPADEK BAZOWY PRZYPADEK REKURSYWNY Definicja rekursywna musi zawierać przypadek bazowy, czyli kod bez wywołania
FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;
Rekurencja Wykład: rekursja, funkcje rekurencyjne, wywołanie samej siebie, wyznaczanie poszczególnych liczb Fibonacciego, potęgowanie, algorytm Euklidesa REKURENCJA Rekurencja (z łac. recurrere), zwana
4 Klasyczny rachunek zdań
4 Klasyczny rachunek zdań Elementy Logiki i Teorii Mnogości 2015/2016 Spis najważniejszych tautologii: (a) p p prawo wyłączonego środka (b) ( p) p prawo podwójnej negacji (c) p q q p (d) p q q p prawo
F t+ := s>t. F s = F t.
M. Beśka, Całka Stochastyczna, wykład 1 1 1 Wiadomości wstępne 1.1 Przestrzeń probabilistyczna z filtracją Niech (Ω, F, P ) będzie ustaloną przestrzenią probabilistyczną i niech F = {F t } t 0 będzie rodziną
Indukcja matematyczna. Matematyka dyskretna
Indukcja matematyczna Matematyka dyskretna Indukcja matematyczna Indukcja matematyczna będzie przez nas używana jako metoda dowodzenia twierdzeń. Zazwyczaj są to twierdzenia dotyczące liczb naturalnych,
Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:
Ciągi rekurencyjne Zadanie 1 Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie: w dwóch przypadkach: dla i, oraz dla i. Wskazówka Należy poszukiwać rozwiązania w postaci, gdzie
Strategia "dziel i zwyciężaj"
Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania
Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 10. Twierdzenie o pełności systemu aksjomatycznego KRZ
Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 10. Twierdzenie o pełności systemu aksjomatycznego KRZ 1 Tezy KRZ Pewien system aksjomatyczny KRZ został przedstawiony
Język C zajęcia nr 5
Język C zajęcia nr 5 Instrukcja wyboru switch switch ( wyr ) inst Głównym przeznaczeniem instrukcji switch jest rozgałęzianie wykonania programu na wiele różnych ścieżek w zależności od wartości pewnego
Wprowadzenie do algorytmiki
Wprowadzenie do algorytmiki Pojecie algorytmu Powszechnie przyjmuje się, że algorytm jest opisem krok po kroku rozwiązania postawionego problemu lub sposób osiągnięcia jakiegoś celu. Wywodzi się z matematyki
Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char
Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od
E-learning - matematyka - poziom rozszerzony. Funkcja wykładnicza. Materiały merytoryczne do kursu
E-learning - matematyka - poziom rozszerzony Funkcja wykładnicza Materiały merytoryczne do kursu Definicję i własności funkcji wykładniczej poprzedzimy definicją potęgi o wykładniku rzeczywistym. Poprawna
Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny
Klasa 2 INFORMATYKA dla szkół ponadgimnazjalnych zakres rozszerzony Założone osiągnięcia ucznia wymagania edukacyjne na poszczególne oceny Algorytmy 2 3 4 5 6 Wie, co to jest algorytm. Wymienia przykłady
Matematyka dyskretna - 7.Drzewa
Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja
Matematyka dyskretna. Andrzej Łachwa, UJ, /14
Matematyka dyskretna Andrzej Łachwa, UJ, 2019 andrzej.lachwa@uj.edu.pl 4/14 Indukcja matematyczna Poprawność indukcji matematycznej wynika z dobrego uporządkowania liczb naturalnych, czyli z następującej