Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Hasonló dokumentumok
5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Programozási Módszertan definíciók, stb.

Bevezetés a programozáshoz I. Feladatok

A = fx j P (x) igazg ; A = fx j 1 x 7; x prímszámg : A [ B = fx j x 2 A, vagy x 2 Bg ; [a::b] := [a; b] \ Z

3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

Programozási módszertan

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

7.4. A programkonstrukciók és a kiszámíthatóság

PROGRAMOZÁS MÓDSZERTANI ALAPJAI I. TÉTELEK ÉS DEFINÍCIÓK

Bevezetés a programozásba 1

f(x) a (x x 0 )-t használjuk.

Bevezetés az informatikába

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

KOVÁCS BÉLA, MATEMATIKA I.

Kiterjesztések sek szemantikája

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

Analízis I. Vizsgatételsor

Modellek ellenőrzése és tesztelése

S0-01 Szintézis és verifikáció (Programozás elmélet)

Analízis előadás és gyakorlat vázlat

Markov-láncok stacionárius eloszlása

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Minden x > 0 és y 0 valós számpárhoz létezik olyan n természetes szám, hogy y nx.

Alapfogalmak, valós számok Sorozatok, határérték Függvények határértéke, folytonosság A differenciálszámítás Függvénydiszkusszió Otthoni munka

BEVEZETÉS A PROGRAMOZÁSHOZ

A digitális számítás elmélete

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Specifikáció A leggyengébb előfeltétel

Molnár Bence. 1.Tétel: Intervallumon értelmezett folytonos függvény értékkészlete intervallum. 0,ami ellentmondás uis. f (x n ) f (y n ) ε > 0

Alap fatranszformátorok II

BEVEZETÉS A PROGRAMOZÁSHOZ

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

6. Előadás. Megyesi László: Lineáris algebra, oldal. 6. előadás Bázis, dimenzió

Rekurzív sorozatok. SZTE Bolyai Intézet nemeth. Rekurzív sorozatok p.1/26

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

Következik, hogy B-nek minden prímosztója 4k + 1 alakú, de akkor B maga is 4k + 1 alakú, s ez ellentmondás.

Metrikus terek, többváltozós függvények

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

Algoritmizálás, adatmodellezés tanítása 6. előadás

Sorozatok, sorok, függvények határértéke és folytonossága Leindler Schipp - Analízis I. könyve + jegyzetek, kidolgozások alapján

Fourier sorok február 19.

A valós számok halmaza

Algoritmizálás, adatmodellezés tanítása 1. előadás

A Peano-görbe. Besenyei Ádám ELTE

A fontosabb definíciók

Programozási tételek. PPT 2007/2008 tavasz.

Diszkrét matematika 2.C szakirány

Kiegészítő jegyzet a valós analízis előadásokhoz

Sorozatok és Sorozatok és / 18

Számelméleti alapfogalmak

SHk rövidítéssel fogunk hivatkozni.

Függvények folytonosságával kapcsolatos tételek és ellenpéldák

Analízis II. Analízis II. Beugrók. Készítette: Szánthó József. kiezafiu kukac gmail.com. 2009/ félév

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Analízis I. beugró vizsgakérdések

Fraktálok. Kontrakciók Affin leképezések. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék. TARTALOMJEGYZÉK Kontrakciók Affin transzformációk

Gyakorló feladatok I.

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Funkcionálanalízis. n=1. n=1. x n y n. n=1

Diszkrét matematika 1. estis képzés. Komputeralgebra Tanszék ősz

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

Adatbázisok elmélete 12. előadás

Komplex számok. A komplex számok algebrai alakja

Diszkrét matematika 2. estis képzés

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Matematika A1a Analízis

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

Diszkrét Matematika MSc hallgatók számára. 4. Előadás

Fraktálok. Hausdorff távolság. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék március 14.

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

A következő feladat célja az, hogy egyszerű módon konstruáljunk Poisson folyamatokat.

Diszkrét matematika II., 8. előadás. Vektorterek

Diszkrét matematika 2. estis képzés

Haladók III. kategória 2. (dönt ) forduló

Diszkrét matematika I.

KOVÁCS BÉLA, MATEMATIKA II.

Laplace-transzformáció. Vajda István február 26.

Nagyordó, Omega, Theta, Kisordó

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

Az optimális megoldást adó algoritmusok

Diszkrét matematika 2.

Java programozási nyelv

10. Előadás. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai

Egészrészes feladatok

Chomsky-féle hierarchia

Folyamatok specifikációja:

Formális nyelvek - 9.

1. Példa. A gamma függvény és a Fubini-tétel.

Határértékszámítás. 1 Határátmenet Tétel. (Nevezetes sorozatok) (a) n, n 2,... n α (α > 0), 1 n 0, 1. 0 (α > 0), (b) n 2 0,... 1.

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Matematika A2 vizsga mgeoldása június 4.

Javítókulcs, Válogató Nov. 25.

Diszkrét matematika 2.C szakirány

Sorozatok. 5. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Sorozatok p. 1/2

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Átírás:

Programkonstrukciók Definíció Legyen π feltétel és S program A-n. A DO A A relációt az S-ből a π feltétellel képezett ciklusnak nevezzük, és (π, S)-sel jelöljük, ha 1. a / [π] : DO (a) = { a }, 2. a [π] : DO (a) = { α A ( n N : α = χ n α 1, α 2,..., α n) α 1 S (a) i [1..n 1] : α i+1 S ( τ ( α i)) τ ( α i) [π] (α n A (α n A τ (α n ) / [π]))} { α A ( α = χ α 1, α 2,... ) α 1 S (a) i N : α i+1 S ( τ ( α i)) τ ( α i) [π] }.

Programkonstrukciók 1. Determinisztikus programból képezett ciklus is determinisztikus. 2. A ciklus értékkészlete tartalmazhat végtelen sorozatot akkor is, ha az S program csak véges sorozatokat generál (soha nem jutunk ki a π feltétel igazsághalmazából). A DO = (π, S) ciklus struktogramja: DO π S

Programkonstrukciók Tétel A szekvencia, az elágazás és a ciklus program. Bizonyítás Mindhárom program A A tipusú reláció és mindhárom esetben D S = A. A másik két tulajdonság igazolása a következő: 1. Szekvencia: a A, α S (a). Ha α S 1 (a), akkor S 1 program volta miatt α 1 = a és α = red (α). Ha α = χ 2 ( α 1, α 2), ahol α 1 S 1 (a) és α 2 S 2 ( τ ( α 1 )), akkor χ 2 definíciója miatt α redukált és α 1 = α 1 1 = a.

Programkonstrukciók Bizonyítás 2. Elágazás: a A, α IF (a). Ekkor α m i=0w i (a). Ha α w 0 (a), akkor α = a, a,... kielégíti a két kritériumot. Ha i [1..m] : α w i (a), akkor α S i (a) és mivel S i program, α 1 = a és α = red (α). 3. Ciklus: a A, α DO (a). Ha a / [π], akkor α = a, ami teljesíti a program követelményeit. Ha a [π], akkor két eset lehetséges: (a) Ha α A és n N : α = χ n ( α 1, α 2,..., α n), α 1 S (a), akkor χ n definiciója miatt α redukált és α 1 = α 1 1 = a. (b) Ha α A és α = χ ( α 1, α 2,... ), α 1 S (a), akkor χ n definíciója miatt α redukált és α 1 = α 1 1 = a.

A programkonstrukciók programfüggvényei Miután beláttuk, hogy meglevő programokból a programkonstrukciók segítségével új programokat készíthetünk, vizsgáljuk meg, hogy milyen kapcsolat van a konstruált programok programfüggvénye és az eredeti programok programfüggvénye között. A szekvencia a legegyszerűbb programkonstrukció, ennek megfelelően a programfüggvénye is egyszerűen felírható a két komponensprogram programfüggvényének segítségével. Mivel a szekvencia két program egymás utáni elvégzését jelenti, várható, hogy a programfüggvénye a két komponensprogram programfüggvényének kompozíciója. Tétel Legyen A állapottér, S 1, S 2 programok A-n, S = (S 1 ; S 2 ) a belőlük képezett szekvencia. Ekkor p (S) = p (S 2 ) p (S 1 ).

A programkonstrukciók programfüggvényei Bizonyítás Emlékeztetünk arra, hogy a programfüggvény definíciója: p (S) = {(a, b) S (a) A α S (a) : τ (α) = b}. Esetünkben (feltéve, hogy minden sorozat véges): (a, a ) p (S 2 ) p (S 1 ) b A : (a, b) p (S 1 ) (b, a ) p (S 2 ) α S 1 (a) : τ (α) = b β S 2 (b) : τ (β) = a χ 2 (α, β) S (a) τ (χ 2 (α, β)) = a (a, a ) p (S).

A programkonstrukciók programfüggvényei Mivel az elágazást több programból képezzük, a programfüggvényét is csak kissé körülményesebben tudjuk megfogalmazni. Hiszen az, hogy egy ponthoz az elágazás rendel-e végtelen sorozatot attól is függ, hogy mely feltételek igazak az adott pontban. Sőt, ha egy pontban egyetlen feltétel sem igaz, akkor a komponensprogramok programfüggvényétől függetlenül abban a pontban az elágazás programfüggvénye nem lesz értelmezve.

A programkonstrukciók programfüggvényei Tétel Legyen A állapottér, S 1, S 2,..., S m programok A-n, valamint π 1, π 2,..., π m : A L feltételek A-n, IF = (π 1 : S 1,..., π m : S m ). Ekkor 1 D p(if ) = { } a A a m i=1 [π i ] j [1..m] : a [π j ] a D p(sj) 2 a D p(if ) : ahol p (IF ) (a) = m i=1pw i (a), { p (Si ) (a), ha a [π pw i (a) = i ], különben

A programkonstrukciók programfüggvényei Bizonyítás a D p(if ) IF (a) A i [1..m] : a [π i ] m i=1 w i (a) A i : a [π i ] j [1..m] : a [π j ] a D p(sj). Legyen a D p(if ). Ekkor p (IF ) (a) = τ ( m i=1w i (a)) = m i=1pw i (a). Ha az elágazásfeltételek lefedik az egész állapotteret, akkor mindig van olyan π i állítás, amelyik igaz.

A programkonstrukciók programfüggvényei Definíció A p (S) reláció megszorítása a [π] igazsághalmazra: p (S) [π] = p (S) ([π] A). Tétel Legyen A tetszőleges állapottér, S A A program, π feltétel A-n, DO = (π, S). Ekkor D p(do) = [ π] Dp(S) és [π] p (DO) (a) = p (S) [π] (a) ( a Dp(DO) ).

Ebben a részben megvizsgáljuk a programkonstrukciók és a specifikáció kapcsolatát. Először azt fogjuk megvizsgálni, hogy a szekvencia adott utófeltételhez tartozó leggyengébb előfeltétele milyen kapcsolatban van az őt alkotó programok leggyengébb előfeltételével. Egy S program R utófeltételhez tartozó leggyengébb előfeltételének neveztük azt az lf (S, R) állítást, amelyre [lf (S, R)] = { a D p(s) p (S) (a) [R] }. Tétel (A szekvencia levezetési szabálya) Legyen S = (S 1 ; S 2 ) szekvencia, Q, R és Q állítások A-n. Ha 1 Q lf (S 1, Q ) és 2 Q lf (S 2, R), akkor Q lf (S, R).

Bizonyítás Legyen q [Q]. Ekkor (1) miatt q D p(s1 ) és p (S 1 ) (q) [Q ]. A (2) feltétel miatt [Q ] D p(s2 ) és q Q : p (S 2 ) (q ) [R]. Ezért p (S 2 ) p (S 1 ) (q) [R], azaz q [lf (S, R)]. Következmény A szekvencia levezetési szabálya és a specifikáció tétele alapján a következőt mondhatjuk: ha S 1 és S 2 olyan programok, amelyekre a paramétertér minden pontjában Q b lf ( S 1, Q b) és Q b lf (S 2, R b ) teljesül, akkor (S 1 ; S 2 ) megoldja a Q b, R b párokkal megadott feladatokat.

Tétel (A szekvencia levezetési szabályának megfordítása) Legyen S = (S 1 ; S 2 ) szekvencia, Q és R olyan állítások A-n, amelyekre Q lf (S, R). Ekkor Q : A L állítás, hogy 1 Q lf (S 1, Q ) és 2 Q lf (S 2, R).

Bizonyítás Legyen Q = lf (S 2, R). Ekkor (2) teljesül. Tfh. (1) nem teljesül. Ekkor q [Q] : q / [lf (S 1, lf (S 2, R))]. Két eset lehetséges: (a) q / D p(s1 ), ami ellentmondás a [Q] D p(s) D p(s1 ) feltétellel; (b) p (S 1 ) (q) [lf (S 2, R)]. Legyen r p (S 1 ) (q) \ [lf (S 2, R)]. Két eset lehetséges: r / D p(s2), ami ellentmond a q D p(s2) p(s 1) feltételnek. p (S 2 ) (r) [R]: Legyen s p (S 2 ) (r) \ [R]. Ekkor s p (S) (q) és s / [R], ami ellentmond a p (S) (q) [R] feltételnek.

Tétel (Az elágazás levezetési szabálya) Legyen IF = (π 1 : S 1,..., π m : S m ) elágazás, Q és R állítások A-n. Ha i [1..m] : Q π i lf (S i, R), akkor Q ( m i=1π i ) lf (IF, R).

Bizonyítás Legyen q [Q] és tfh. i [1..m] : q [π i ]. Ekkor q D p(if ), ui. j [1..m] : q [π j ] lf (S j, R) q D p(sj). Mivel j [1..m] : q [π j ] p (S j ) (q) [R], azért p (IF ) (q) = Tehát q [lf (IF, R)]. j [1..m] q [π j] p (S j ) (q) [R].

Következmény Felhasználva a specifikáció tételét és az elágazás levezetési szabályát azt mondhatjuk, hogy: Legyen adott az F feladat specifikációja (A, B, Q, R). Ekkor, ha b B paraméterre és S i programra Q b π i lf (S i, R b ), és b B paraméterhez van olyan π i feltétel, amelyre b [π i ], akkor az IF program megoldja a Q b, R b párokkal definiált feladatot.

Tétel (Az elágazás levezetési szabályának megfordítása) Legyen IF = (π 1 : S 1,..., π m : S m ) elágazás, Q és R olyan állítások A-n, amelyekre Q ( m i=1π i ) lf (IF, R). Ekkor i [1..m] : Q π i lf (S i, R).

Bizonyítás Indirekt: tfh. i [1..m] : [Q π i ] [lf (S i, R)]. Legyen q [Q π i ] \ [lf (S i, R)]. Két eset lehetséges: q / D p(si ), ami ellentmond a q D p(if ) feltevésnek. p (S i ) (q) [R]. Ekkor p (S i ) (q) p (IF ) (q) [R] miatt ellentmondás.

A ciklus levezetési szabálya bonyolultabb. A cél: DO véges lépésben termináljon. Olyan P feltételt keresünk, amely: 1 Igaz a ciklus/iteráció megkezdése előtt; 2 Igaz az iteráció alatt; 3 Igaz az iteráció befejezése után. A ciklus befejezésekor π, tehát P π igaz. Ha P π R, akkor a ciklus helyességét igazoltuk. A P feltétel elnevezése: invariáns feltétel/tulajdonság. Bevezetünk továbbá egy t : A Z egész értékű függvényt, amely 1 A program változóitól függ; 2 Korlátot ad a szükséges iterációk számára; 3 Minden végrehajtott iteráció legalább 1-el csökkenti t értékét; 4 t alulról korlátos: t > 0 terminálás előtt. A t függvény elnevezése: korlátozó/termináló függvény. A korlátozó függvény biztosítja, hogy a ciklusnak terminálnia kell.

Tétel (A ciklus levezetési szabálya) Legyen P állítás A-n, DO = (π, S) és t : A Z. Ha 1 P π t > 0, 2 P π lf (S, P), 3 P π t = t 0 lf (S, t < t 0 ), akkor P lf (DO, P π).

Következmény A ciklus levezetési szabályának és a specifikáció tételének felhasználásával elégséges feltételt adhatunk a megoldásra: ha adott azf feladat specifikációja (A, B, Q, R) és találunk olyan invariáns állítást és terminálófüggvényt, hogy a paramétertér minden elemére teljesül a ciklus levezetési szabályának öt feltétele, akkor a ciklus megoldja a (Q b, R b ) párokkal definiált feladatot. A ciklus levezetési szabálya visszafelé nem igaz, azaz van olyan ciklus, amit nem lehet levezetni. Ennek az az oka, hogy egy levezetett ciklus programfüggvénye mindig korlátos lezárt, hiszen az állapottér minden pontjában a terminálófüggvény értéke korlátozza a ciklusmag lefutásainak számát.