Brulion this version for your eyes only Dowód poprawnośći algorytmu Winograda. 1. Wprowadzenie. 2. Algorytm
|
|
- Aleksandra Skiba
- 6 lat temu
- Przeglądów:
Transkrypt
1 SpecVer & LEM 12 projects XX Dombrova Research Brulion this version for your eyes only Dowód poprawnośći algorytmu Winograda Andrzej Salwicki salwicki@mimuw.edu.pl Dabrowa Leśna Streszczenie. Przedstawiamy algorytm Winograda i wód jego poprawności. 1. Wprowadzenie Algorytm Winograda może być przydatny w obliczaniu iloczynu macierzy kwadratowych, szczególnie gdy elementami macierzy są obiekty reprezentujące jakieś ciało inne od ciała liczb rzeczywistych. Tzn. w przypadku gdy dane ciało C jest zaimplementowane w programie przez klasę C. Drugim i ważniejszym powodem skreślenia tej notatki jest potrzeba zwrócenia uwagi na znikomą przydatność asercji i tzw. programowania przez kontrakt ang. design by contract. Asercje są przydatne jako notatki, ale nie stanowią rozwiązania problemu zapewnienia poprawności algorytmu. Zapraszam czytania, zwłaszcza rozdziału Dowód poprawności. 2. Algorytm W tym rozdziale pojawiają się dwa warunki: warunek wstepny Precondition, warunek końcowy Postcondition oraz algorytm algorytm Winograda. Jak się upewnić, że algorytm jest poprawny ze względu na warunek poczatkowy i warunek końcowy? W literaturze proponowane są dwa podejścia: uwodnij częściową porawność sprawdzając pewne niezmienniki jest to tzw. metoda Floyda- Hoare a,
2 2 G. Mirkowska & A. Salwicki / Dowód procedury Winograd wykonaj pewną liczbę obliczeń testowych i zaufaj, że w trakcie eksploatacji algorytmu nie okaże się, że jest on niepoprawny. W obliczeniach testowych można w trakcie obliczeń sprawdzać wcześniej wstawione warunki asercje. Czy rzeczywiście są one pomocne? W następnym rozdziale pokażemy inną drogę - drogę wodzenia lematów i w końcu twierdzenia o poprawności całkowitej algorytmu Winograda względem warunku początkowego Precondition i warunku końcowego Postcondition. 1: signal Niezgoda; 2: unit W inograd : procedurea, B : array_of array_of real; output C : array_of array_of real; Precondition: wymagaj by A i B były macierzami kwadratowymi rozmiaru n x n Postcondition: zapewnij, że obliczona macierz C jest produktem macierzy A i B, C = A * B 3: var i, j, k, n, m : integer, W, V : array_of real, p : boolean, s : real; 4: begin { ustalić czy macierze moga być mnożone tzn. czy ilość wierszy w A = ilosc kolumn w B? } { ustalić czy n jest parzyste? } { obliczyc preprocessing } { dynamiczne sprawdzanie precondition } 5: if lowera lowerb or lowera 1 or uppera upperb then 6: raise Niezgoda 7: fi; 8: i := uppera; 9: j := lowera; 10: n := i-j+1; 11: for l := j to i 12: if loweral lowerbl or loweral 1 or upperal upperbl or upperal uppera then 13: raise Niezgoda 14: fi; 15: Assertion sprawdzono: macierze są kwadratowe, rozmiaru n x n { można mnożyć } 16: p := n mod 2 = 0; 17: m := n div 2; 18: array W dim1 : n; 19: array V dim1 : n; 20: array C dim1 : n; 21: for i := 1 to n 22: array Ci dim1 : n 23:
3 G. Mirkowska & A. Salwicki / Dowód procedury Winograd 3 { obliczanie "preprocessingu"} 24: for j:= 1 to n 25: s:=0; 26: for i := 1 to m 27: s := A[j, 2 i 1] A[j, 2 i] + s; 28: 29: W[j] := s; 30: Assertion 1: Dla każdego j, 1 j n, W j = A j,2i 1 A j,2i 31: for j:= 1 to n 32: s:=0; 33: for i := 1 to m 34: s := B[2*i-1,j] * B[2*i,j] +s; 35: 36: V[j] := s; 37: Assertion 2: Dla każdego j, 1 j n, V j = B 2i 1,j B 2 i,j {obliczanie iloczynu macierzy } 38: for i := 1 to n 39: for j := 1 to n 40: s:= 0; 41: for k := 1 to m 42: s:= A[i,2*k-1]+B[2*k,j] * B[2*k-1,j]+A[i,2*k] +s; 43: Assertion 3: 1 i n, 1 j n, s = A i,2k 1 + B 2k,j B 2 k 1,j + A i,2k 44: C[i, j] := s W [i] V [j]; Assertion 4: 1 i n, 1 j n C i,j = 2 A i,k B k,j 45: if not p then 46: C[i, j] := C[i, j] + A[i, n] B[n, j]; { poprawiamy - gdy n jest nieparzyste } 47: fi; 48: { j } 49: { i } Assertion 5: Dla każdych wartości i, j, 1 i n, 1 j n, C i,j = n A i,k B k,j 50: endw inograd;
4 4 G. Mirkowska & A. Salwicki / Dowód procedury Winograd 3. Dowód poprawności Naszym zadaniem jest wykazać nastepującą implikację Precondition [Algorytm Winograda]Postcondition co się czyta tak: jeśli dane spełniaja warunek wstępny to algorytm Winograda kończy obliczenia nie sygnalizujac błędu i wyniki spełniaja warunek końcowy. Sprawdzenie czy warunek wstępny jest spełniony przez dane może być w części wykonane przez kompilator. Kompilator może sprawdzić czy parametry aktualne sa tablicami dwuwymiarowymi. Druga część warunku, że rozmiary tablic są równe n n nie może być sprawdzona przed wywołaniem procedury Winograd, nie może też być uwodniona. Wobec tego wykonywanie procedury rozpoczynamy od dynamicznego sprawdzania kształtu i rozmiaru tablic 1. Można rozważać czy nie dałoby się uwodnić, o programie stosującym procedurę Winograd, że warunek wstępny jest spełniony za każdym razem gdy procedura Winograd jest wywoływana w naszym programie. Ale czy można zagwarantować, że każdy program stosujący algorytm Winograda będzie sprawdzał warunek wstępny? lub go wodził? Lepiej więc zostawić sprawdzanie warunku wstępnego procedurze Winograd. Do algorytmu Winograd wstawiliśmy asercje. Mają one za zadanie: 1. umożliwić sygnalizację naruszenia warunku asercji w trakcie wykonywania programu, 2. ułatwić argumentację na rzecz tezy o poprawności algorytmu. W tym przypadku trudno mówić o dynamiczej weryfikacji: ażeby sprawdzić warunek wyliczony w asercji trzeba powtórzyć obliczenia to niewiele nam daje. Ponadto, tu uwaga natury ogólnej, zamiana asercji na instrukcję warunkową if warunek_asercji then wrzuć_ wyjątek fi zapewnia tylko tyle, że podczas wykonywania algorytmu zostanie zasygnalizowany błąd. Nie mamy nawet gwarancji, że zdarzy się to zawsze gdy program zawiera błędy. Natomiast asercje możemy zastąpić lematami i uwodnić je Lemat 1. Dla każdego j, 1 j n, i m = n 2 zachodzi for i := 1 to m K : s := A[j, 2 i 1] A[j, 2 i] + s; W [j] := s; W j = A j,2i 1 A j,2i 1 W loglanie 82 dwuwymiarowej tablicy możemy nadać kształt trójkatny, wstęgowy i oczywiście kształt kwadratowy
5 G. Mirkowska & A. Salwicki / Dowód procedury Winograd 5 Lemat 2. Dla każdego j, 1 j n, i m = n 2 zachodzi for i := 1 to m V j = B 2i 1,j B 2i,j s := B[2 i 1, j] B[2 i, j] + s; V [j] := s; Kolejny lemat Lemat 3. 1 i n, 1 j n for k:= 1 to m s := A[i, 2 k 1] + B[2 k, j] B[2 k 1, j] + A[i, 2 k] + s; s = A i,2k 1 + B 2k,j B 2k 1,j + A i,2k Lemat 4. Przy założeniu, że tablice A i B są macierzami kwadratowymi rozmiaru n x n i że zachodzą lematy 1 oraz 2, prawdziwa jest nastepująca formuła algorytmiczna 1 i n, 1 j n for k := 1 to m s := A[i, 2 k 1] + B[2 k, j] B[2 k 1, j] + A[i, 2 k] + s; C[i, j] := s W [i] V [j]; s = 2 A i,k B k,j
6 6 G. Mirkowska & A. Salwicki / Dowód procedury Winograd Lemat 5. Z prawdziwości lematów 1 i 2 wynika, że następująca formuła jest prawdziwa for i := 1 to n od for j := 1 to n od for k:= 1 to m s := A[i, 2 k 1] + B[2 k, j] B[2 k 1, j] + A[i, 2 k] + s; C[i, j] := s W [i] V [j]; if not p then fi; C[i, j] := C[i, j] + A[i, n] B[n, j] 4. Dowody lematów 4.1. Dowód lematu 1 1 i n, 1 j n C i,j = n A i,k B k,j W wodzie wykorzystujemy następującą własność programów for: niech napis ωi oznacza wyrażenie arytmetyczne zmienna i może, ale nie musi, w nim wystepować s := 0 for i := 1 to n n s = ωi od s := ωi + s i=0 Pozostaje skorzystać z aksjomatu instrukcji przypisania n s = ωi {W [j] := s} W j = i=0 Dowody lematów 2 i 3 przebiegają pobnie. n ωi i=0
7 G. Mirkowska & A. Salwicki / Dowód procedury Winograd Dowód lematu 4 Należy uwodnić s = A i,2k 1 + B 2k,j B 2 k 1,j + A i,2k s W [i] V [j] = Rozwińmy mnożenie i zastosujmy rozdzielność mnożenia wzgledem dawania A i,2k 1 + B 2k,j B 2 k 1,j + A i,2k 2 [A i,2k 1 B 2 k 1,j + A i,2k 1 A i,2k + B 2k,j B 2k 1,j + B 2k,j A i,2k ] = = A i,2k 1 B 2 k 1,j + Skorzystamy z lematów 1 oraz 2 A i,2k 1 A i,2k + B 2k,j B 2k 1,j + =1 A i,k B k,j B 2k,j A i,2k A i,2k 1 + B 2k,j B 2 k 1,j + A i,2k W [i] V [j] = A i,2k 1 B 2 k 1,j + B 2k,j A i,2k Wykorzystujemy przemienność mnożenia i łączność dawania A i,2k 1 B 2 k 1,j + B 2k,j A i,2k = 2 A i,k B k,j 4.3. Dowód lematu 5 Trzeba wykazać, że s = 2 A i,k B k,j if not p then C[i, j] := C[i, j] + A[i, n] B[n, j] fi; s = n A i,k B k,j Pamiętamy, że p= n mod 2 =0. Jeżeli n jest liczbą parzystą to 2n 2 = n. n C i,j = A i,k B k,j W przeciwnym przypadku tzn. gdy not p sumowanie zakonczyło się dla k = n 1. Trzeba więc dać wartość A[i, n] B[n, j]
8 8 G. Mirkowska & A. Salwicki / Dowód procedury Winograd 5. Uwagi końcowe 1. Zauważ, że algorytm ten pozwala mnożyć macierze liczb zespolonych,... Zmieńmy nagłówek procedury unit Winograd_Generic: procedure type T, function addx,y:t:t, function multx,y:t:t, function subtx,y:t:t, A, B: array_of array_of T, output C: array_of array_of T; i odpowiednio w treści procedury zapiszmy addu,v zamiast u+v, multu,v zmiast u*v, subtu,v zamiast u-v., Nasz warunek wstępny przybiera teraz inną postać Precondition: Argumenty procedury Winograd_Generic spełniaja następujące warunki 1. pierwszy argument jest nazwą klasy, 2. kolejne trzy argumenty są nazwami funkcji, dwuargumentowych ze zbioru T obiektów typu T w zbiór T, 3. następne dwa argumenty to nazwy tablic kwadratowych jednakowego rozmiaru n x n, 4. ostatni argument także jest nazwą tablicy, tablica ta zostanie przekazana wywołującemu procedurę Winograd_Generic, 5. zbiór T obiektów klasy T wraz z operacjami add, mult i subt jest pierścieniem. Postcondition: Algorytm zwraca tablicę C obiektów typu T, taką, że dla każdych i, j, 1 i n, 1 j n C i,j = add n k=0 multa i,k, B k,j
9 G. Mirkowska & A. Salwicki / Dowód procedury Winograd 9 Poprzednia wersja wodu lematu 1 Niech j będzie liczbą naturalną taką, że 1 j n, niech m = n 2. Wykażemy, po wykonaniu instrukcji ujętych w nawiasy zachodzi warunek W j = A j,2i 1 A j,2i. Przypadek m = 0. Jesli m jest równe zero to na mocy aksjomatu instrukcji for for i := 1 to 0 K od α α mamy równoważną jej formułę, { W [j] := s; } W j = A j,2i 1 A j,2i czyli { W [j] := s; } W j = A j,2i 1 A j,2i Jeśli dwukrotnie zastosujemy aksjomat instrukcji przypisania to otrzymamy najpierw a potem { } s = A j,2i 1 A j,2i 0 = A j,2i 1 A j,2i Równocześnie z własności sumy Σ wyrażenie po prawej znaku = ma wartość zero, co kończy analizę przypadku m = 0 ponieważ wszystkie te formuły sa sobie równoważne. Krok indukcyjny Załóżmy, że nasz lemat zachodzi dla wartości m równej k. Wykażemy, że zachodzi on też dla m = k + 1. Rozważmy formułę for i := 1 to k + 1 k+1 W j = A j,2i 1 A j,2i s := A[j, 2 i 1] A[j, 2 i] + s; W [j] := s; Wykorzystamy inny aksjomat instrukcji for.
10 10 G. Mirkowska & A. Salwicki / Dowód procedury Winograd {for i := 1 to n + 1 K od } α {for i := 1 to n K i := n + 1; K} α Z założenia indukcyjnego wiemy, że for i := 1 to k s := A[j, 2 i 1] A[j, 2 i] + s; s = k A j,2i 1 A j,2i Pozostaje wykazania, że k k+1 s = A j,2i 1 A j,2i {i := k + 1; s := A[j, 2 i 1] A[j, 2 i] + s}s = A j,2i 1 A j,2i... UZUPEŁNIJ!
1 Zbiory i działania na zbiorach.
Matematyka notatki do wykładu 1 Zbiory i działania na zbiorach Pojęcie zbioru jest to pojęcie pierwotne (nie definiuje się tego pojęcia) Pojęciami pierwotnymi są: element zbioru i przynależność elementu
Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu
Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji
1 Macierze i wyznaczniki
1 Macierze i wyznaczniki 11 Definicje, twierdzenia, wzory 1 Macierzą rzeczywistą (zespoloną) wymiaru m n, gdzie m N oraz n N, nazywamy prostokątną tablicę złożoną z mn liczb rzeczywistych (zespolonych)
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
Macierzowe algorytmy równoległe
Macierzowe algorytmy równoległe Zanim przedstawimy te algorytmy zapoznajmy się z metodami dekompozycji macierzy, możemy wyróżnić dwa sposoby dekompozycji macierzy: Dekompozycja paskowa - kolumnowa, wierszowa
Programowanie dynamiczne
Programowanie dynamiczne Ciąg Fibonacciego fib(0)=1 fib(1)=1 fib(n)=fib(n-1)+fib(n-2), gdzie n 2 Elementy tego ciągu stanowią liczby naturalne tworzące ciąg o takiej własności, że kolejny wyraz (z wyjątkiem
Macierze. Rozdział Działania na macierzach
Rozdział 5 Macierze Funkcję, która każdej parze liczb naturalnych (i, j) (i 1,..., n; j 1,..., m) przyporządkowuje dokładnie jedną liczbę a ij F, gdzie F R lub F C, nazywamy macierzą (rzeczywistą, gdy
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
Poprawność semantyczna
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
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,
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
15. Macierze. Definicja Macierzy. Definicja Delty Kroneckera. Definicja Macierzy Kwadratowej. Definicja Macierzy Jednostkowej
15. Macierze Definicja Macierzy. Dla danego ciała F i dla danych m, n IN funkcję A : {1,...,m} {1,...,n} F nazywamy macierzą m n ( macierzą o m wierszach i n kolumnach) o wyrazach z F. Wartość A(i, j)
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
Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm
Rozdział 5 Macierze Funkcję, która każdej parze liczb naturalnych (i,j) (i = 1,,n;j = 1,,m) przyporządkowuje dokładnie jedną liczbę a ij F, gdzie F = R lub F = C, nazywamy macierzą (rzeczywistą, gdy F
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
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
macierze jednostkowe (identyczności) macierze diagonalne, które na przekątnej mają same
1 Macierz definicja i zapis Macierzą wymiaru m na n nazywamy tabelę a 11 a 1n A = a m1 a mn złożoną z liczb (rzeczywistych lub zespolonych) o m wierszach i n kolumnach (zamiennie będziemy też czasem mówili,
Macierz o wymiarach m n. a 21. a 22. A =
Macierze 1 Macierz o wymiarach m n A = a 11 a 12 a 1n a 21 a 22 a 2n a m1 a m2 a mn Mat m n (R) zbiór macierzy m n o współczynnikach rzeczywistych Analogicznie określamy Mat m n (Z), Mat m n (Q) itp 2
5 Wyznaczniki. 5.1 Definicja i podstawowe własności. MIMUW 5. Wyznaczniki 25
MIMUW 5 Wyznaczniki 25 5 Wyznaczniki Wyznacznik macierzy kwadratowych jest funkcją det : K m n K, (m = 1, 2, ) przypisującą każdej macierzy kwadratowej skalar, liniowo ze względu na każdy wiersz osobno
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
13 Układy równań liniowych
13 Układy równań liniowych Definicja 13.1 Niech m, n N. Układem równań liniowych nad ciałem F m równaniach i n niewiadomych x 1, x 2,..., x n nazywamy koniunkcję równań postaci a 11 x 1 + a 12 x 2 +...
Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl
System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy
Wyk lad 5 W lasności wyznaczników. Macierz odwrotna
Wyk lad 5 W lasności wyznaczników Macierz odwrotna 1 Operacje elementarne na macierzach Bardzo ważne znaczenie w algebrze liniowej odgrywaja tzw operacje elementarne na wierszach lub kolumnach macierzy
1 Elementy logiki i teorii mnogości
1 Elementy logiki i teorii mnogości 11 Elementy logiki Notatki do wykładu Definicja Zdaniem logicznym nazywamy zdanie oznajmujące, któremu przysługuje jedna z dwu logicznych ocen prawda (1) albo fałsz
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
Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.
Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach
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
Układy równań i nierówności liniowych
Układy równań i nierówności liniowych Wiesław Krakowiak 1 grudnia 2010 1 Układy równań liniowych DEFINICJA 11 Układem równań m liniowych o n niewiadomych X 1,, X n, nazywamy układ postaci: a 11 X 1 + +
Algebra abstrakcyjna
Algebra abstrakcyjna Przykłady 1. Sama liczba 0 tworzy grupę (rzędu 1) ze względu na zwykłe dodawanie, również liczba 1 tworzy grupę (rzędu 1) ze względu na zwykłe mnożenie.. Liczby 1 i 1 stanowią grupą
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
det[a 1,..., A i,..., A j,..., A n ] + det[a 1,..., ka j,..., A j,..., A n ] Dowód Udowodniliśmy, że: det[a 1,..., A i + ka j,..., A j,...
Wykład 14 Wyznacznik macierzy cd Twierdzenie 1 Niech A będzie macierzą kwadratową i niech A i, A j będą dwiema różnymi jej kolumnami, wtedy dla dowolnego k K: det[a 1,, A i,, A j,, A n ] det[a 1,, A i
PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.
PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj
Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++
Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu
Obliczenia iteracyjne
Lekcja Strona z Obliczenia iteracyjne Zmienne iteracyjne (wyliczeniowe) Obliczenia iteracyjne wymagają zdefiniowania specjalnej zmiennej nazywanej iteracyjną lub wyliczeniową. Zmienną iteracyjną od zwykłej
Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].
Zadanie 1. Wiązka zadań Od szczegółu do ogółu Rozważmy następujący algorytm: Dane: Algorytm 1: k liczba naturalna, A[1...2 k ] tablica liczb całkowitych. n 1 dla i=1,2,,k wykonuj n 2n s 1 dopóki s
Metody iteracyjne rozwiązywania układów równań liniowych (5.3) Normy wektorów i macierzy (5.3.1) Niech. x i. i =1
Normy wektorów i macierzy (5.3.1) Niech 1 X =[x x Y y =[y1 x n], oznaczają wektory przestrzeni R n, a yn] niech oznacza liczbę rzeczywistą. Wyrażenie x i p 5.3.1.a X p = p n i =1 nosi nazwę p-tej normy
0 + 0 = 0, = 1, = 1, = 0.
5 Kody liniowe Jak już wiemy, w celu przesłania zakodowanego tekstu dzielimy go na bloki i do każdego z bloków dodajemy tak zwane bity sprawdzające. Bity te są w ścisłej zależności z bitami informacyjnymi,
Wyk lad 7 Metoda eliminacji Gaussa. Wzory Cramera
Wyk lad 7 Metoda eliminacji Gaussa Wzory Cramera Metoda eliminacji Gaussa Metoda eliminacji Gaussa polega na znalezieniu dla danego uk ladu a x + a 2 x 2 + + a n x n = b a 2 x + a 22 x 2 + + a 2n x n =
Analiza funkcjonalna 1.
Analiza funkcjonalna 1. Wioletta Karpińska Semestr letni 2015/2016 0 Bibliografia [1] Banaszczyk W., Analiza matematyczna 3. Wykłady. (http://math.uni.lodz.pl/ wbanasz/am3/) [2] Birkholc A., Analiza matematyczna.
Macierze - obliczanie wyznacznika macierzy z użyciem permutacji
Macierze - obliczanie wyznacznika macierzy z użyciem permutacji I LO im. F. Ceynowy w Świeciu Radosław Rudnicki joix@mat.uni.torun.pl 17.03.2009 r. Typeset by FoilTEX Streszczenie Celem wykładu jest wprowadzenie
RACHUNEK MACIERZOWY. METODY OBLICZENIOWE Budownictwo, studia I stopnia, semestr 6. Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska
RACHUNEK MACIERZOWY METODY OBLICZENIOWE Budownictwo, studia I stopnia, semestr 6 Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Czym jest macierz? Definicja Macierzą A nazywamy
Baza w jądrze i baza obrazu ( )
Przykład Baza w jądrze i baza obrazu (839) Znajdź bazy jądra i obrazu odwzorowania α : R 4 R 3, gdzie α(x, y, z, t) = (x + 2z + t, 2x + y 3z 5t, x y + z + 4t) () zór ten oznacza, że α jest odwzorowaniem
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
Definicja macierzy Typy i właściwości macierzy Działania na macierzach Wyznacznik macierzy Macierz odwrotna Normy macierzy RACHUNEK MACIERZOWY
Transport, studia niestacjonarne I stopnia, semestr I Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Adam Wosatko Ewa Pabisek Czym jest macierz? Definicja Macierzą A nazywamy funkcję
Maria Romanowska UDOWODNIJ, ŻE... PRZYKŁADOWE ZADANIA MATURALNE Z MATEMATYKI
Maria Romanowska UDOWODNIJ, ŻE... PRZYKŁADOWE ZADANIA MATURALNE Z MATEMATYKI Matematyka dla liceum ogólnokształcącego i technikum w zakresie podstawowym i rozszerzonym Z E S Z Y T M E T O D Y C Z N Y Miejski
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
Wstęp do informatyki Ćwiczenia. Piotr Fulmański
Wstęp do informatyki Ćwiczenia Piotr Fulmański Piotr Fulmański 1 e-mail 1: fulmanp@math.uni.lodz.pl Wydział Matematyki i Informatyki, Uniwersytet Łódzki Banacha 22, 90-238, Łódź Polska Data ostaniej modyfikacji:
Wyk lad 4 Macierz odwrotna i twierdzenie Cramera
Wyk lad 4 Macierz odwrotna i twierdzenie Cramera 1 Odwracanie macierzy I n jest elementem neutralnym mnożenia macierzy w zbiorze M n (R) tzn A I n I n A A dla dowolnej macierzy A M n (R) Ponadto z twierdzenia
Zaawansowane metody numeryczne
Wykład 10 Rozkład LU i rozwiązywanie układów równań liniowych Niech będzie dany układ równań liniowych postaci Ax = b Załóżmy, że istnieją macierze L (trójkątna dolna) i U (trójkątna górna), takie że macierz
procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak
Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych
a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn a 1j a 2j R i = , C j =
11 Algebra macierzy Definicja 11.1 Dla danego ciała F i dla danych m, n N funkcję A : {1,..., m} {1,..., n} F nazywamy macierzą m n (macierzą o m wierszach i n kolumnach) o wyrazach z F. Wartość A(i, j)
utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,
Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz
Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.
Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -
O MACIERZACH I UKŁADACH RÓWNAŃ
O MACIERZACH I UKŁADACH RÓWNAŃ Problem Jak rozwiązać podany układ równań? 2x + 5y 8z = 8 4x + 3y z = 2x + 3y 5z = 7 x + 8y 7z = Definicja Równanie postaci a x + a 2 x 2 + + a n x n = b gdzie a, a 2, a
Pokazać, że wyżej zdefiniowana struktura algebraiczna jest przestrzenią wektorową nad ciałem
Zestaw zadań 9: Przestrzenie wektorowe. Podprzestrzenie () Wykazać, że V = C ze zwykłym dodawaniem jako dodawaniem wektorów i operacją mnożenia przez skalar : C C C, (z, v) z v := z v jest przestrzenią
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Treści programowe. Matematyka. Efekty kształcenia. Literatura. Terminy wykładów i ćwiczeń. Warunki zaliczenia. tnij.org/ktrabka
Treści programowe Matematyka Katarzyna Trąbka-Więcław Elementy algebry liniowej. Macierze i wyznaczniki. Ciągi liczbowe, granica ciągu i granica funkcji, rachunek granic, wyrażenia nieoznaczone, ciągłość
Obliczenia naukowe Wykład nr 8
Obliczenia naukowe Wykład nr 8 Paweł Zieliński Katedra Informatyki, Wydział Podstawowych Problemów Techniki, Politechnika Wrocławska Literatura Literatura podstawowa [] D. Kincaid, W. Cheney, Analiza numeryczna,
DB Algebra liniowa semestr zimowy 2018
DB Algebra liniowa semestr zimowy 2018 SPIS TREŚCI Teoria oraz większość zadań w niniejszym skrypcie zostały opracowane na podstawie książek: 1 G Banaszak, W Gajda, Elementy algebry liniowej cz I, Wydawnictwo
Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel
Wstęp do programowania Procedury i funkcje Piotr Chrząstowski-Wachtel Po co procedury i funkcje? Gdyby jakis tyran zabronił korzystać z procedur lub funkcji, to informatyka by upadła! Procedury i funkcje
0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.
(Aktualizacja z dnia 3 kwietnia 2013) MATEMATYKA DYSKRETNA - informatyka semestr 2 (lato 2012/2013) Zadania do omówienia na zajęciach w dniach 21 i 28 kwietnia 2013 ZESTAW NR 3/7 (przykłady zadań z rozwiązaniami)
ALGEBRA LINIOWA Z ELEMENTAMI GEOMETRII ANALITYCZNEJ
ALGEBRA LINIOWA Z ELEMENTAMI GEOMETRII ANALITYCZNEJ WSHE, O/K-CE 10. Homomorfizmy Definicja 1. Niech V, W będą dwiema przestrzeniami liniowymi nad ustalonym ciałem, odwzorowanie ϕ : V W nazywamy homomorfizmem
Wykład 4. Informatyka Stosowana. Magdalena Alama-Bućko. 25 marca Magdalena Alama-Bućko Wykład 4 25 marca / 25
Wykład 4 Informatyka Stosowana Magdalena Alama-Bućko 25 marca 2019 Magdalena Alama-Bućko Wykład 4 25 marca 2019 1 / 25 Macierze Magdalena Alama-Bućko Wykład 4 25 marca 2019 2 / 25 Macierza wymiaru m n
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
Ekoenergetyka Matematyka 1. Wykład 3.
Ekoenergetyka Matematyka Wykład 3 MACIERZE Macierzą wymiaru n m, gdzie nm, nazywamy prostokątną tablicę złożoną z n wierszy i m kolumn: a a2 a j am a2 a22 a2 j a2m [ a ] nm A ai ai 2 a aim - i-ty wiersz
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.
Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łanc Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn
Metody numeryczne Wykład 3 Dr inż. Michał Łanczont Instytut Elektrotechniki i Elektrotechnologii E419, tel. 4293, m.lanczont@pollub.pl, http://m.lanczont.pollub.pl Zakres wykładu Pojęcia podstawowe Algebra
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ą
Zastosowania wyznaczników
Zastosowania wyznaczników Mirosław Sobolewski Wydział Matematyki, Informatyki i Mechaniki UW 7.wykład z algebry liniowej Warszawa, listopad 2012 Mirosław Sobolewski (UW) Warszawa, listopad 2012 1 / 17
Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);
Ciała i wielomiany 1 Ciała i wielomiany 1 Definicja ciała Niech F będzie zbiorem, i niech + ( dodawanie ) oraz ( mnożenie ) będą działaniami na zbiorze F. Definicja. Zbiór F wraz z działaniami + i nazywamy
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
Wyznaczniki. Mirosław Sobolewski. Wydział Matematyki, Informatyki i Mechaniki UW. 6. Wykład z algebry liniowej Warszawa, listopad 2013
Wyznaczniki Mirosław Sobolewski Wydział Matematyki, Informatyki i Mechaniki UW 6. Wykład z algebry liniowej Warszawa, listopad 2013 Mirosław Sobolewski (UW) Warszawa, listopad 2013 1 / 13 Terminologia
ALGEBRA LINIOWA. Wykład 2. Analityka gospodarcza, sem. 1. Wydział Zarządzania i Ekonomii Politechnika Gdańska
ALGEBRA LINIOWA Wykład 2 Analityka gospodarcza, sem 1 Wydział Zarządzania i Ekonomii Politechnika Gdańska dr inż Natalia Jarzębkowska, CNMiKnO semzimowy 2018/2019 2/17 Macierze Niech M = {1, 2,, m} i N
1 Działania na zbiorach
M. Beśka, Wstęp do teorii miary, rozdz. 1 1 1 Działania na zbiorach W rozdziale tym przypomnimy podstawowe działania na zbiorach koncentrując się na własnościach tych działań, które będą przydatne w dalszej
1 Określenie pierścienia
1 Określenie pierścienia Definicja 1. Niech P będzie zbiorem, w którym określone są działania +, (dodawanie i mnożenie). Mówimy, że struktura (P, +, ) jest pierścieniem, jeżeli spełnione są następujące
3 Przestrzenie liniowe
MIMUW 3 Przestrzenie liniowe 8 3 Przestrzenie liniowe 31 Przestrzenie liniowe Dla dowolnego ciała K, analogicznie jak to robiliśmy dla R, wprowadza się operację dodawania wektorów kolumn z K n i mnożenia
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ą
1 Podstawowe oznaczenia
Poniżej mogą Państwo znaleźć skondensowane wiadomości z wykładu. Należy je traktować jako przegląd pojęć, które pojawiły się na wykładzie. Materiały te nie są w pełni tożsame z tym co pojawia się na wykładzie.
Analiza matematyczna i algebra liniowa Macierze
Analiza matematyczna i algebra liniowa Macierze Wojciech Kotłowski Instytut Informatyki Politechniki Poznańskiej email: imię.nazwisko@cs.put.poznan.pl pok. 2 (CW) tel. (61)665-2936 konsultacje: poniedziałek
METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH
METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 9 WYRAŻENIA LOGICZNE, INSTRUKCJE WARUNKOWE I INSTRUKCJE ITERACYJNE W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski ĆWICZENIE NR
Analiza numeryczna Kurs INP002009W. Wykłady 6 i 7 Rozwiązywanie układów równań liniowych. Karol Tarnowski A-1 p.
Analiza numeryczna Kurs INP002009W Wykłady 6 i 7 Rozwiązywanie układów równań liniowych Karol Tarnowski karol.tarnowski@pwr.wroc.pl A-1 p.223 Plan wykładu Podstawowe pojęcia Własności macierzy Działania
Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.
Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane
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:
3. Wykład Układy równań liniowych.
31 Układy równań liniowych 3 Wykład 3 Definicja 31 Niech F będzie ciałem Układem m równań liniowych o niewiadomych x 1,, x n, m, n N, o współczynnikach z ciała F nazywamy układ równań postaci: x 1 + +
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
O pewnych związkach teorii modeli z teorią reprezentacji
O pewnych związkach teorii modeli z teorią reprezentacji na podstawie referatu Stanisława Kasjana 5 i 12 grudnia 2000 roku 1. Elementy teorii modeli Będziemy rozważać język L składający się z przeliczalnej
Algebra Liniowa 2 (INF, TIN), MAP1152 Lista zadań
Algebra Liniowa 2 (INF, TIN), MAP1152 Lista zadań Przekształcenia liniowe, diagonalizacja macierzy 1. Podano współrzędne wektora v w bazie B. Znaleźć współrzędne tego wektora w bazie B, gdy: a) v = (1,
Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów
Treść wykładu Pierścienie wielomianów. Definicja Niech P będzie pierścieniem. Wielomianem jednej zmiennej o współczynnikach z P nazywamy każdy ciąg f = (f 0, f 1, f 2,...), gdzie wyrazy ciągu f są prawie
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
Przykładowe zadania z teorii liczb
Przykładowe zadania z teorii liczb I. Podzielność liczb całkowitych. Liczba a = 346 przy dzieleniu przez pewną liczbę dodatnią całkowitą b daje iloraz k = 85 i resztę r. Znaleźć dzielnik b oraz resztę
Zajmijmy się najpierw pierwszym równaniem. Zapiszmy je w postaci trygonometrycznej, podstawiając z = r(cos ϕ + i sin ϕ).
Zad (0p) Zaznacz na płaszczyźnie zespolonej wszystkie z C, które spełniają równanie ( iz 3 z z ) Re [(z + 3) ( z 3) = 0 Szukane z C spełniają: iz 3 = z z Re [(z + 3) ( z 3) = 0 Zajmijmy się najpierw pierwszym
MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata
MACIERZE Sobiesiak Łukasz Wilczyńska Małgorzata Podstawowe pojęcia dotyczące macierzy Nie bez przyczyny zaczynamy od pojęcia macierzy, które jest niezwykle przydatne we wszystkich zastosowaniach, obliczeniach
Algorytmy i struktury danych
Algorytmy i struktury danych 4. Łódź 2018 Suma szeregu harmonicznego - Wpisz kod programu w oknie edycyjnym - Zapisz kod w pliku harmonic.py - Uruchom skrypt (In[1]: run harmonic.py) - Ten program wykorzystuje
5. Rozwiązywanie układów równań liniowych
5. Rozwiązywanie układów równań liniowych Wprowadzenie (5.1) Układ n równań z n niewiadomymi: a 11 +a 12 x 2 +...+a 1n x n =a 10, a 21 +a 22 x 2 +...+a 2n x n =a 20,..., a n1 +a n2 x 2 +...+a nn x n =a
GRUPA ĆWICZENIOWA (ZAKREŚL ODPOWIEDNIĄ): MG8 MG13 MB13 MD13 BT13
Nazwisko i imię: Nr indeksu: 1 2 3 4 Σ MiNI/MatLic/AiPP/2014 2015/Kolokwium-IIA (30) GRUPA ĆWICZENIOWA (ZAKREŚL ODPOWIEDNIĄ): MG8 MG13 MB13 MD13 BT13 Uwaga: Za każde zadanie można uzyskać tę samą liczbę
Logika binarna. Prawo łączności mówimy, że operator binarny * na zbiorze S jest łączny gdy (x * y) * z = x * (y * z) dla każdego x, y, z S.
Logika binarna Logika binarna zajmuje się zmiennymi mogącymi przyjmować dwie wartości dyskretne oraz operacjami mającymi znaczenie logiczne. Dwie wartości jakie mogą te zmienne przyjmować noszą przy tym
Odczyt danych z klawiatury Operatory w Javie
Odczyt danych z klawiatury Operatory w Javie Operatory W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje
Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)
Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Instrukcje Język Basic został stworzony w 1964 roku przez J.G. Kemeny ego i T.F. Kurtza z Uniwersytetu w Darthmouth (USA). Nazwa Basic jest
Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.
Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy