ASD - ćwiczenia III. Dowodzenie poprawności programów iteracyjnych. Nieformalnie o poprawności programów:



Podobne dokumenty
Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

Harmonogramowanie projektów Zarządzanie czasem

Temat: Funkcje. Własności ogólne. A n n a R a j f u r a, M a t e m a t y k a s e m e s t r 1, W S Z i M w S o c h a c z e w i e 1

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Zadania. SiOD Cwiczenie 1 ;

Podstawy programowania

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

EGZAMIN MATURALNY Z INFORMATYKI CZERWIEC 2011 POZIOM ROZSZERZONY WYBRANE: CZĘŚĆ I. Czas pracy: 90 minut. Liczba punktów do uzyskania: 20

WZÓR SKARGI EUROPEJSKI TRYBUNAŁ PRAW CZŁOWIEKA. Rada Europy. Strasburg, Francja SKARGA. na podstawie Artykułu 34 Europejskiej Konwencji Praw Człowieka

Regulamin Pracy Komisji Rekrutacyjnej w Publicznym Przedszkolu Nr 5 w Kozienicach

Bazy danych. Andrzej Łachwa, UJ, /15

Jakie są te obowiązki wg MSR 41 i MSR 1, a jakie są w tym względzie wymagania ustawy o rachunkowości?

Zadanie 1. Liczba szkód w każdym z trzech kolejnych lat dla pewnego ubezpieczonego ma rozkład równomierny:

REGULAMIN OKRESOWEJ OCENY PRACOWNIKÓW URZĘDU GMINY W SULĘCZYNIE

Zarządzenie Nr 325/09 Burmistrza Miasta Bielsk Podlaski z dnia 29 czerwca 2009 r.

Uczestnicy postępowania o udzielenie zamówienia publicznego ZMIANA TREŚCI SPECYFIKACJI ISTOTNYCH WARUNKÓW ZAMÓWIENIA

Zamawiający potwierdza, że zapis ten należy rozumieć jako przeprowadzenie audytu z usług Inżyniera.

Umowa kredytu. zawarta w dniu. zwanym dalej Kredytobiorcą, przy kontrasygnacie Skarbnika Powiatu.

Formularz Zgłoszeniowy propozycji zadania do Szczecińskiego Budżetu Obywatelskiego na 2016 rok

Zasady rekrutacji dzieci do I klasy Szkoły Podstawowej im. hm. Janka Bytnara Rudego w Lubieniu Kujawskim na rok szkolny 2014/2015*

Ogłoszenie o zamiarze udzielenia zamówienia nr 173/2016

Wyznaczanie współczynnika sprężystości sprężyn i ich układów

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

INSTRUKCJA WYPEŁNIANIA SPRAWOZDANIA CZĘŚCIOWEGO LUB KOŃCOWEGO

Kurs wyrównawczy dla kandydatów i studentów UTP

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Polska-Warszawa: Usługi skanowania 2016/S

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Instrukcja zarządzania systemem informatycznym służącym do przetwarzania danych osobowych

Ćwiczenie: "Ruch harmoniczny i fale"

Podstawa prawna: Ustawa z dnia 15 lutego 1992 r. o podatku dochodowym od osób prawnych (t. j. Dz. U. z 2000r. Nr 54, poz. 654 ze zm.

Projektowanie bazy danych

I. Ogłaszanie konkursu i tryb składania ofert.

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

ROZPORZĄDZENIE MINISTRA ROLNICTWA I ROZWOJU WSI 1) z dnia r.

Mnożenie macierzy. Systemy z pamięcią współdzieloną Systemy z pamięcią rozproszoną Efektywność

Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Działania Ziemia Bielska

Podstawowe działania w rachunku macierzowym

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

DE-WZP JJ.3 Warszawa,

URZĄD OCHRONY KONKURENCJI I KONSUMENTÓW

UCHWAŁ A SENATU RZECZYPOSPOLITEJ POLSKIEJ. z dnia 18 października 2012 r. w sprawie ustawy o zmianie ustawy o podatku dochodowym od osób fizycznych

SCRIBA JUNIOR SCRIBA JUNIOR I

REGULAMIN dokonywania okresowych ocen kwalifikacyjnych pracowników samorządowych zatrudnionych w Miejskim Przedszkolu Nr 5 w Ciechanowie.

REGULAMIN OKRESOWYCH OCEN PRACOWNIKÓW URZĘDU GMINY LIMANOWA ORAZ KIEROWNIKÓW JEDNOSTEK ORGANIZACYJNYCH GMINY LIMANOWA

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

REGULAMIN PRZYZNAWANIA STYPENDIÓW NA KIERUNKACH ZAMAWIANYCH W RAMACH PROJEKTU POKL

MATEMATYKA 4 INSTYTUT MEDICUS FUNKCJA KWADRATOWA. Kurs przygotowawczy na studia medyczne. Rok szkolny 2010/2011. tel

2010 W. W. Norton & Company, Inc. Nadwyżka Konsumenta

XIII KONKURS MATEMATYCZNY

Uchwała Nr... Rady Miejskiej Będzina z dnia roku

Bielsko-Biała, dn r. Numer zapytania: R WAWRZASZEK ISS Sp. z o.o. ul. Leszczyńska Bielsko-Biała ZAPYTANIE OFERTOWE

Zapytanie ofertowe. w ramach projektu Wzornictwo-Biznes-Zysk nr umowy o dofinansowanie POIG /14. Warszawa, r.

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Bioinformatyka Laboratorium, 30h. Michał Bereta

PROCEDURY POSTĘPOWANIA PRZY UDZIELANIU ZAMÓWIEŃ PUBLICZNYCH, KTÓRYCH WARTOŚĆ W ZŁOTYCH NIE PRZEKRACZA RÓWNOWARTOŚCI KWOTY EURO

KARTA OCENY ZGODNOŚCI Z LSR

Regulamin programu "Kredyt Hipoteczny Banku BPH. Obowiązuje od dnia: r.

KONKURS PRZEDMIOTOWY Z FIZYKI dla uczniów gimnazjów województwa lubuskiego 23 marca 2012 r. zawody III stopnia (finałowe)

ZAMAWIAJĄCY. Regionalna Organizacja Turystyczna Województwa Świętokrzyskiego SPECYFIKACJA ISTOTNYCH WARUNKÓW ZAMÓWIENIA (DALEJ SIWZ )

Umowa o pracę zawarta na czas nieokreślony

1. Rozwiązać układ równań { x 2 = 2y 1

Podstawowe pojęcia: Populacja. Populacja skończona zawiera skończoną liczbę jednostek statystycznych

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

Biuletyn techniczny Mechanizmy wyliczania raportów. w programie CDN Firma++ Copyright 2007 COMARCH SA

PAKIET MathCad - Część III

Uchwała nr 21 /2015 Walnego Zebrania Członków z dnia w sprawie przyjęcia Regulaminu Pracy Zarządu.

ZARZĄDZENIE Nr 21/12

API transakcyjne BitMarket.pl

REGULAMIN PRZEPROWADZANIA OCEN OKRESOWYCH PRACOWNIKÓW NIEBĘDĄCYCH NAUCZYCIELAMI AKADEMICKIMI SZKOŁY GŁÓWNEJ HANDLOWEJ W WARSZAWIE

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

ZAPROSZENIE do złoŝenia OFERTY

Załącznik nr 6 do SIWZ 2/2012/pn BR-X-2/2121/3/2012 Usługi introligatorskie dla Biblioteki Raczyńskich w Poznaniu w 2012r.

WYROK W IMIENIU RZECZYPOSPOLITEJ POLSKIEJ

Analiza CVP koszty wolumen - zysk

DZENIE RADY MINISTRÓW

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Stowarzyszenie Lokalna Grupa Działania EUROGALICJA Regulamin Rady

Jak ubiegać się o odszkodowanie za błędną decyzję urzędnika

Bezpieczeństwo biznesu - Wykład 2

Metoda LBL (ang. Layer by Layer, pol. Warstwa Po Warstwie). Jest ona metodą najprostszą.

Wiedza niepewna i wnioskowanie (c.d.)

PROGRAM ZAPEWNIENIA I POPRAWY JAKOŚCI AUDYTU WEWNĘTRZNEGO

Elementy cyfrowe i układy logiczne

UMOWA POWIERZENIA PRZETWARZANIA DANYCH OSOBOWYCH nr.. zawarta w dniu. zwana dalej Umową powierzenia

UCHWAŁA NR VIII/43/2015 r. RADY MIASTA SULEJÓWEK z dnia 26 marca 2015 r.

Zadania powtórzeniowe I. Ile wynosi eksport netto w gospodarce, w której oszczędności równają się inwestycjom, a deficyt budżetowy wynosi 300?

Umowa najmu lokalu użytkowego

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia: ops-targowek.waw.pl

NOWELIZACJA USTAWY PRAWO O STOWARZYSZENIACH

Ułatwienie w rozliczaniu podatku VAT w imporcie towarów. Ministerstwo Finansów 22 październik 2013 r.

REGULAMIN TURNIEJU SPORTOWEJ GRY KARCIANEJ KANASTA W RAMACH I OGÓLNOPOLSKIEGO FESTIWALU GIER UMYSŁOWYCH 55+ GORZÓW WLKP R.

Komentarz technik ochrony fizycznej osób i mienia 515[01]-01 Czerwiec 2009

Kurs z matematyki - zadania

WSTĘP DO PROGRAMOWANIA

WYJAŚNIENIA. Renowację kanalizacji sanitarnej w ramach Projektu Rozbudowa i modernizacja systemu kanalizacyjnego Miasta Konina Etap II.

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Istotne Postanowienia Umowy

Regulamin konkursu Konkurs z Lokatą HAPPY II edycja

Transkrypt:

ASD - ćwiczenia III Dowodzenie poprawności programów iteracyjnych Nieformalnie o poprawności programów: poprawność częściowa jeżeli program zakończy działanie dla danych wejściowych spełniających założony warunek wstępny {WP, to wynik jest zgodny z założonym warunkiem końcowym {WK, poprawność całkowita jeżeli dane wejściowe spełniają założony warunek wstępny {WP, to program kończy działanie z wynikiem zgodnym z założonym warunkiem końcowym {WK, wniosek: poprawność całkowita = poprawność częściowa + dowód skończoności wykonania programu. Poprawność częściowa programów iteracyjnych: warunek początkowy {WP co zakładamy o zmiennych użytych w pętli iteracyjnej, warunek końcowy {WK co zakładamy o rezultacie pętli iteracyjnej, niezmiennik {NZ formuła logiczna, która definiuje relacje między zmiennymi użytymi w pętli iteracyjnej, własności niezmiennika: niezmiennik jest zachowany przed pętlą iteracyjną, niezmiennik nie musi być zachowany w trakcie wykonywania pętli iteracyjnej, niezmiennik odtwarza się i ponownie jest zachowany na końcu pętli iteracyjnej, niezmiennik musi być wystarczająco silny, by można było na jego podstawie wnioskować o poprawności działania pętli iteracyjnej, wnioskowanie o poprawności pętli iteracyjnej: Zadania gdzie {DZ jest dozorem pętli. {DZ {NZ {WK, 1. Udowodnij poprawność poniższej funkcji SILNIA() względem niezmiennika {NZ: s = i!, warunku początkowego {WP: n N oraz warunku końcowego {WK: s = n!. int SILNIA(int n) { {WP: n N int s:=1, i:=0; {NZ: s = i! while (i < n) do i:=i+1; s:=s*i; {WK: s = n! return s; 1

2. Dla podanej poniżej funkcji FUNCTION(), warunku początkowego {WP: a N b N oraz niezmiennika pętli {NZ: s p w = a b ustal warunek końcowy {WK. Co jest wynikiem działania tej funkcji? Jaka jest jej złożoność czasowa względem liczb a i b? int FUNCTION(int a, int b) { {WP: a N, b N int s:=1, p:=a, w:=b; {NZ: s p w = a b while (w > 0) do if (w mod 2 = 0) then p:=p*p; w:=w/2; else s:=s*p; w:=w-1; fi; (WK:... return s; 3. Dla poniższej funkcji FUNCTION(), warunku początkowego {WP: a N \ {0 ustal niezmiennik pętli {NZ oraz warunek końcowy {WK. Jaka jest złożoność tej funkcji względem: (a) wartości liczby a, (b) rozmiaru (wyrażonego liczbą niezbędnych bitów zapisu) liczby a? int FUNCTION(int a) { {WP: a N \ {0 int i:=a, j:=a; {NZ:... while (j > 1) do j:=j div 3; i:=i+1; {WK:... return i; Zadanie o pracownikach i synie szefa Przedsiębiorstwo zatrudnia n > 10 3 pracowników etatowych W [1], W [2],..., W [n], z których każdy rocznie wypracowuje na rzecz firmy I [i] złotych dochodu (dla ułatwienia przyjmujemy, że i, j {1, 2,..., n i j : I [i] I [j]). Prezes tego przedsiębiorstwa pragnie gratyfikować k pracowników, których łączny roczny dochód jest największy spośród wszystkich możliwych k elementowych sum dochodów pracowników W [1], W [2],..., W [n]: zaproponuj algorytm A wspomagający prezesa w wyznaczeniu k elementowej grupy pracowników którym należy się gratyfikacja, jeżeli do dyspozycji dostajesz uporządkowaną alfabetycznie listę nazwisk pracowników wraz z wypracowanym rocznym dochodem. Zadbaj o to, aby spełnione były zależności A (A, n) = O (kn) oraz W (A, n) = O ( kn 2), 2

w trakcie rozmowy z sekretarką prezes dowiedział się, że jego syn znalazł się w grupie trzech najlepiej zarabiających pracowników i zaraz zabrał się za weryfikację tej wiadomości na podstawie wcześniej opisanej listy pracowników. Niestety po dokładnie n + n 10 porównaniach dochodów I [i] wybranych pracowników w gabinecie prezesa zadzwonił telefon. Czy rozpoczynając rozmowę telefoniczną prezes może być pewien, które miejsce w grupie trzech liderów zajmuje jego syn (jeżeli uważasz, że tak to podaj odpowiedni algorytm postępowania, jeżeli uważasz, że nie to podaj uzasadnienie dlaczego określona liczba porównań jest niewystarczająca)? Zadanie o przeglądaniu nieskończonej struktury danych Wyobraźmy sobie nieskończoną strukturę danych S, zaimplementowaną przy pomocy niezdefiniowanej struktury danych typedef str_structure [] Structure; struct Structure { int number;... ; przechowującą liczby całkowite. Jest ona wyposażona w operację GET (S, i), gdzie i N \ {0, może być dowolnie dużą liczbą naturalną. Operacja GET (S, i) zwraca liczbę całkowitą przechowywaną w strukturze S pod indeksem i-tym, przy czym: pod każdym indeksem w rozważanej strukturze danych znajduje się dokładnie jedna liczba całkowita, przechowywane liczby są posortowane w porządku niemalejącym, czyli jeżeli i < j to GET (S, i) < GET (S, j), pierwsza liczba przechowywana w strukturze danych jest ujemna (tj. GET (S, 1) < 0), istnieje skończona liczba naturalna n taka, że GET (S, n) > 0, operacja GET (S, i) ma koszt O (1) dla każdego i N \ {0. Opracuj funkcję int FIND(Structure S), możliwie asymptotycznie najszybszą, która odnajdzie najmniejszy indeks w strukturze S, pod którym znajduje się liczba dodatnia (tj. minimalne i takie, że GET (S, i) > 0). Zakładamy, że dostęp do rozważanej struktury danych może odbywać się jedynie za pomocą zdefiniowanej operacji GET. Podaj słowny opis procedury FIND(). Napisz pseudokod procedury FIND() (w kodzie procedury można używać dowolnych algorytmów przedstawionych na wykładzie, bez potrzeby wypisywania ich implementacji, należy jednak wyjaśnić jak i do czego się ich używa). Oszacuj złożoność czasową algorytmu, przy czym dokładnie opisz składniki funkcji złożoności, jeżeli procedura składa się z kilku faz. Nie zapomnij precyzyjnie określić co stanowi argument funkcji złożoności. 3

Zadanie o najtańszej sieci komputerowej (do domu) Pewna firma zamierza zbudować sieć komputerową N, która ma połączyć wszystkie m stacji roboczych S [1], S [2],..., S [m] znajdujących się w jej siedzibie. Firma zajmuje całe pojedyncze piętro w jednym z warszawskich wieżowców. Każda stacja robocza ma być podłączona do jednego z n węzłów sieci H [1], H [2],..., H [n], gdzie n < m i n = 2k 1 dla k N \ {0. Kierownictwo firmy ustaliło już dla każdej stacji roboczej S [i] indeks num węzła H [num], do którego ma być przyłączona kablem sieciowym o minimalnej długości. Węzły sieci mają być podłączone do kabla głównego (także w najkrótszy możliwy sposób), który ma zostać położony w linii prostej z kierunku zachodniego w stronę wschodnią i ma przebiegać bezpośrednio przez dokładnie jeden węzeł. Zakładamy, że zarówno współrzędne zachodnie west oraz północne north każdego elementu sieci (tj. stacji roboczej, węzła) są z góry znane, zawierają się w zbiorze Z liczb całkowitych. Dodatkowo przyjmujemy, że dowolne dwa węzły sieci H [i], H [j] nie leżą na tej samej współrzędnej szerokości jak i długości geograficznej. Rysunek 1: Przykład planowanej sieci komputerowej N, dla m = 13 i n = 7. Niech dalej poniższe struktury danych WStation oraz Node reprezentują kolejno stację roboczą oraz węzeł sieci komputerowej: typedef str_wstation WStation; typedef str_node Node; struct str_wstation { int west, north, num; ; struct str_node { int west, north; ; Zaprojektuj funkcję int FIND_BEST(WStation S[], Node H[], int k, int n), która wyznaczy numer węzła sieci komputerowej przez który powinien przechodzić kabel główny, tak aby łączna suma długości wszystkich kabli łączących stacje robocze z węzłami i 4

węzły z kablem głównym była minimalna z możliwych czyli koszty budowy sieci N będą minimalne :)). Długość kabla głównego pomijamy i zakładamy, że dowolne dwa punkty sieci można zawsze połączyć kablem sieciowym ułożonym w linii prostej. 5