You are on page 1of 110
Tartalomjegyzék 1 Tipuskonstrukeidk, nevezetes tipusok 3 1.1. Tipuskonstrukeidk 3 LILI. Direktszorzat, rekord 3 1.12. Unio, egvesit 4 LLB. Iteralt 4 1.2. Specifikacids fiiggvenyek 5 12.1. Fiiggvény ti trukei6 6 1.3. Nevezetes tipusok 7 2 Osszegzés 10 3 Seimlalas 15 4 Maximumkeresés qT 5 Peltételes ma’ ceresés 19 6 Linearis keresés 21 6.1, Lineaiis keresés 1, cee cee se 2 8.2. Linefiris keresés 2. 2 6.3, Linedtis keres6s 3. eee cee oo BB BA. Linofiris keresés 2.8. 2 7 Logaritmikus keresés 26 8 Visszalépéses keresés 29 9 Specialis fiiggvények értékeinek kiszémitasa 38 9.1. Fiiggvony kompozicio 38 9.2. Ksetszétvilasztéissal megadott fligevény A or cones 38 93. iv fiiggveny 39 a4. snkénti feldolgozis rrr : 40 Egy valtozés, egy értékit elemenkénti feldolgozés 42 Két valtoz6s, egy értékti elemenkénti feldolgozis 43 |. Altaldnos eset . cee coe see Md Az elemenként feldolgozhatosag egy elégséges feltétele errTess 2 TARTALOMJEGYZEK 10 Visszaveretés a8 10.1. Analog levezetés 48 10.2, Visszavezet6s - cee a0) 10.2.1. Fermészetes visszavezetés ce bones a0) 10.2.2. Altalinasitott visszavezotés 5 10.2.3. Alteres visszavezetés 52 10.24, Paraméteres visszavezctés 10.2.5. Bagyéb eltérések az dllapotterek kzstt . - 10.2.6. Az ntéfeltétel Atalnkitasa 10.2.7. Fiiggvény bevezetése 11 Programtranszforméeiok 60 ua. iegengedett elagazdstfeltételek Bo 60 11.2. wegengedett ciklusfeltétel . . eer arr 61 TLR Srimultin értékadas kitranseformélisa 61 11.4. Fiiggvény helyettesitése véltoz6val 62 11.5. Rekurziv fiigavény helvettesitése vltoz6val 5 63 11.6. Szekvencia két, tagjnak feleserélése 64 11.7. Kiemelési szabéilyok 65 ALB. Programinverzi 2... eee eee eee 66 12 ‘Tipustranszformécio 12.1. Intervallumon értelmezett figgvény — fiiggvény tipus 12.2. Fliggvény tipus — vektor 12.3. Hiiggvény tipus —sorozat . . . . 12.4. Sorozat — szekvencidlis f4il 12.5. Sorozat — halmaz, 13 Szekvenciélis megfelelé 79 14 Allapottér-transzformacio 82 14.1. Fliggvenyabsztrakeié 82 14.2. Adatabsrtrakeié . - ee 83 143. Osszetettebb Allapottér-transzforméciok 86 15 Iddszerdsités 90 15.1. Egyszertt iddszerdsites 93 KGzinséges idOsverisites . . . . . eerer a 96 istiinis 103 16.1. Lgymésba agyazott esoportok . errr ao 104 107 1. Tipuskonstrukci6k, nevezetes tipusok A tipus fogalmanak segitsénével tetszSleges tipusértékhalmazt eld tudunk dllitani, mint elemi értékek sorozatt. Ugyanakkor a konstrukei6 médja rendktvill bonyolult Iehet, ha mindent egy lopésben akarunk megtenni hasonloan ahhoz, mintha egy feladathoz azonnal a megold6 programot — mint sorozatot — szeretnénk meghatérozni. Kzért ahogy programok esetén is bevezettiink néhény médszert arra, hogy «j programokat hozzunk Iétre meglev6 progra- mokb6l — ezeket nevertitk programkonstrukcidknak —, ugyamigy bevezetjiik a tipuskonst- rukeidkat annak érdekében, hogy létez6 tipusértékhalmazokbol tijakat Allitsunk el6. Kzek segitségével az esetek jelentds tObbségében fel tudjuk épiteni a kivant tipusértékhalmazt clemi tipusértékekbdl, j61 definidlt konstrukcik segitségeve, A konnyebb kezelhetdség érdekében bevezetiink specifikicids fiigevényeket az eaves ti- puskonstrukcidkhoz, amelvekkel a specifikicidkban bizonvos komponensekre hivatkozhatunk, illetve tulajdonsagokat irhatunk le, Kiilonbdz6, tin. nevezetes tipusokat kapunk, ha megad- Juk, hogy a specifikicios fliggvonyek kézill melyeket tekintiink megengedettnek — elemi programnak — egy adott tipuskonstrukei6 esetén. 1.1. Tipuskonstrukci6k A programkonstrukciékhoz hasonian most is hirom konstrukeiét definiélunk. Nem esak a konstrukciGk szdma, hanem azok tartalmi része is valamilyen értelemben megfeleltethet6 a programkonstrukcidknak. Vezessiink be néhdny jeldlést, amelyet ebben a pontban haszné- unk, Legyenek 7; = (05, 1i,54) (i € |1.nl) tetszdleges tipusok. A megfelel6 tipusértékhalma- zokat jelilje Ti,...,Ty, az clemi értékeket pedig Ey,..., By. Legyen tovibbé B= 1.1.1. Direktszorzat, rekord Az egyik legegyszertibb konstrukcids lehetdség, ha kiilOnbiz6 tipusértékeket dsszegy tink és azokat egviittesen kezclink. A tipusértékek kizdtt lehetnek azonosak is. Bz a konstrukeié a svekvencidval dlithat6 pérhuzamba a programkonstrukciok Kiril, noha az esak két tagbol Allhat. A formélis detinic6 rovidsége érdekében vezessiik be a B = 1} x... x I, jelGlést 1.1. Defini AT = (01,8) tipus T értékhalmaza a T;,...,Tq direktszorzata, ha 0 = oped, ppc Bxt, vo = {(c.b) eB" x Bl Vie [Ln] 236; € Bt (e1.bi) € oF A com(e,.--sEn)} 3 4 1. Tipuskonstrukeiék, nevezetes tipusok A direktszorzatot T = (Th,...,Tn) médon jeliliik. Ha yp Kéleséndsen egvértelmti, akkor a direkisrorzatot rekordnak neverztik Példéul a sikbeli pontok tipusértékhalmaza megadhat6 egy rekorddal, amely két kompo- nensb6l All a ket koordinatanak megfeleléen. Valbs koordindtak esetén: Pont = (R, R). Ha ‘a pontokrol nyilvan kell tartani egyéb informaci6t is, akkor azzal kiegészill a rekord. Pél aul, ha a pont szinét kell megadmmk, é $2in a szbba jOhet6 szinek értékhalmaza, akkor Pont = (B,R, S2in) a megfelel6 rekord. 1.1.2. Uni6, egyesités Uj Lpusértékhalmazok létrehozésa sordn gvakori, hogy tobb lehetséges értékhalmazt szeret- nénk dsszevonni igy, hogy az tj halmaz eleme a felépit6 halmazok valamelyikéhez tartozzon ha leginkabb az elégazdssal Allithat parhuzamba. Legven B =f) U...UT'n 1.2. Definici AT = (01,8) tipus T értékhalmaza a Ty,...,Tq unidja, ha 2 = wow, yu CBxT ww = {(c,b)€ Bt x BI FE [1.n): (e,b) € at. Ax uni6 jel nek newer Kavesitésre példa lehet a sikidomok értékhalmaza. ‘legviik fel, hogy adottak a pon- tok, Kérdk, sokszdgek értékhalmazai, és mast nem tekintiink sikidomnak ebben a példé- ban, Ekkor: Sikidom ‘oks5q), ahol a sokszigek is felirhatdak egvestésként Soks269 = (Héromszig; 5 1 = (Ty;...:Tq). Ha gu kélesdndsen egyértelm, akkor az. eqguesités- 1.1.3. Tterdlt, Az egyik leggyakrabban hasznélt. konstrukeid, amikor az fj érték azonos tipust értékelebd! tObbet tartalmaz, ahogy ciklus esetén is ugyanazt a programot “hajtottuk végre” tbbszbr. + AT =(0,1,S) tipus T értekhalmaza a 7 itendltja, ha 1.8. Definiei 2 uy erow, pi TEXT {(6,0) € BY x Ty | e1,...,¢35 € BT: (sbi) €or A con(es,---,€19)} tert esetén tObb konstrukciot is megkillOubdztetink y alapjén. ~ Ha gy kéleséndisen egyértelmii, akkor az iteralt sorozat; jele: T = seq(Ti) = Ha (a,t), (9,1) € yr © @€ perm(8), akkor az iterdlt: kombindcié; jele: T = com(T) ~ Ha (a,1), (3,0) € 91 Soa i U {i}, akkor az iteralt halmaz; jele: T = set(T;). A sikbeli tirdttvonalak felithatdak sorozat segitséxével, ha a sorozat a tirdttvonal ti- réspontjait tartalmazza, azaz Térdttvonal = seq(Pont). A halmaz. konstrukeié megfelel az eddig is hasznélt halmaz fogalomnak. A kombindciot olvan halmaznak tekinthetjik, amely- ben az. elemek multiplicitassal szerepelnek. Szokis ext zsdknak is nevezni. 12, Speciikicits Riggvények 5 1.2. Specifikaciés fiiggvények Rendszerint sviikségiink van arra, hogy az Gsszetett értékek egyes komponenseire is tudjunk hivatkozni. Ezeket neverziik szelekcids figgnényeknek, amelyeket, kiilGn-kiilOn definidlunk rekord, egyesités és sorozat esetén. 1.4, Defintci6 : Legyen T = (Th,...,T,) rekord. 81,...,8n a ekord szelekci6s figavényel, ha s;:T +7; (F€ [Lon)) 6s Wee T: ypla(t),.-..sn(0)) =H A szelektorokra a neviikkel bivatkozhatunk, ha a rekord definialasakor megadjuk azokat a kévetkezdképpen: T = (81 : Tyy.-+48n ? Tn). Ennek hiényaban szamokkal azonostthatjuk a komponenseket; illetve ha a komponensek tipusa eltérd, akkor szokis a megfelels tipusérték- halmaz azonosit6jat (T)) is hasenalni Az el6z6leg bemutatott példéban Pont = (x : Ry : Bs : S2én) Iehet a szelektorokkal ellatott definfei, & ekkor p € Pont esetén sr(p) az els6, x koordinata, y(p) a masodik, y koordinata, a(p) pedig a szin értéke 1.5. Definieié : Legyen T = (Ty;...;T,) egyesité vényei, ha 8; : TL (i € [Ln]) és {ie sha gh" () €7, amis. kilonben Hagyesités esetén is hasonlé a hivatkozss médja, m formaja: T = (s1 :Ti3..-i8n + Tn) Kiegésritve az el6z6 alpontban szerepl6 példaban megadott eavesttés detinicioiat szelek- torokkal: Sikidom = (p : Pont;k : Kr; : Soks26q). Ekkor i € Sékidom esetén pi) igan, ha i pont, k(i) igaz, ha i kor, illetve s(2) igaz, ha i sokszig, szelekciés Figg. wet: sit it a rekordndl, A nevek megadisinak 1.6. Definicié :_ T = seq(T;) esetén az s : T x N + T; a sorozatra értelmezett szelekcids iiggvény, ha Vi € [1..Jy~(t)l]: s(t, i) = eb asi > be} | értekekre a fiiggvény nines értelmenve (2 (O egy sorozat, ennek i. cleme yf? (t);.) Sorozatok esetén a szelekcids fiiggvényt Aljtik: t; = s(t,2). 1eq(Pont) és t € Térdttvonal, akkor t; a tordttvonal i. pontjét adja meg, feltéve, hogy a téréttvonalnak legalabb i pontja van. A bevezetett specislis iteralt tipusok esetén saikséx van tovibbi specifikicids fiigavé- nyekre, amelyek példaul megadjék annak méretét, specidliselemeit,iletve elemeket hagynak cl a tipusértékb6l és kiegészitik art clemekkel 1.7, Definiei6 : Ha T = it(T,) 6s T sorozat, kombinacio vagy halmaz, akkor dom : T Ny av iteralt mérete, és (a, ) € yr esetén: fel ba = seg T vagy T= om dom(t) = 9 | Gas} |, ha T = set(T) A fenti definicié helves, hiszen ha tobb a tartozik yy szerint ugyanahhoz a ther, ak- kor dom(t) értéke ugyanaz. lesz, birmelyikre is szaimitjuk ki. Ez a fiiggetlenség adédik a konstrukcidk definieidabol. A tovabbiakban sorozatokra vonatkoz6 specifikiciés figavénye- ket definislinnk 6 1. Tipuskonstrukeiék, nevezetes tipusok 18. Definicié : Legyen T = seq(Ti), (04) € p 65 @ = (015-+-,)a)) Els elem: lov :T + Ty ov(t) = a, ha dom(t} >0 Utols6 elem: hiv: T 47; hiv(t) = aja), ha dom(t)>0 Els6 elem elhagyasa: lorem: TT —_lorem(t) = gr((a2,---+@ja))), ha dom(t)>0 Utols6 elem elhagyésa: hirem:T—+T —_hirem(t) = yr ((a1,-.-»4jo|-1)), ha dom(t)>0 Kiegészites el: locat : T x T, + T loest(t,e) = yr(con({e},a)) Kiegészités hatuls — hiert Tx Ty -+T hiext(t,e) = p1(con(a, (e))} A definicidk alapjén nyilvanvalé, hogy ha dom(t) > 0, akkor t=hiext(hirem(t),hiv(Q) & Kombinicié esetén értelmezziik egy elem el6fordubfisainak szamét megad6 Higgvényt 1.9. Definicié : Legyen T = com(T;), (at) € yy. Ekkor mul : T xT, + Ny egy elem cloforduldsainak seémat adia meg, 6 loext(lorem(t), lov(t)) al mul(t.e) = > x(ar = Halmazokra a matematikiban definialt fiiggvenyek hasznélhat6ak, pl: €,U,M,.-..— Kzeket kiegészitjiik egy olyan fiiggvénnyel, amelyik egy nem res halmazbél kivalaszt egy tetsz6leges elemet 1-10, Definfeté + Legven T = set(T)), (a8) € gy & dom(t) > 0. Ekkor mem : T -+ 7, egy tetszdleges eleme a halmaznak, é mem(t) € ab fai} 1.2.1, Fiiggvény tipuskonstrukcié A keivetkezSkben bevezetink egy specilistépuskonstrukeidt, a figevényt, amelynek segitsé- gével a tipusértekhalmazok széles ke ithaté le. Ez egy speciis rekord Konstrukeid. Ennek svakorlatijelentdséxét niveli, hogy ebbél szaérmaztathaté a vektor,illetve témb tipus.‘To- yabbé kapesolatot teremt ezek, illetve a sorozatok, valamint az intervallumon értelmezett fiiggvények kizdtt, ugyanis mindegyikher hasonlit ‘Tegyiik fel, hogy H tetszdleges, nem iires, rendezett halmaz. Feltessziik, hogy a hal- maz nem korlétos. azaz nines legkisebb és legnagyobb eleme. A halmazon értelmezettek a suce, pred : H +H figgvények, amelyek egy elem rakivetker6jét,illetve a megeliz6 elemet adjak meg. Ertelmecatike még az ord : H—> 2 fiiggvény' is, amely egy’ elem “Sorszamat" hatérozza meg, és teljesiti a kivetkezd feltételeket Vhishz€ Hs hy < hy ord(hy) < ord(h) YheH: — ord(succ(h)) =ord(h) +1, Why shy © Hs hy = succort(ta)-ordla) (fy) {suc a suce i-szeri alkalmazését jelenti, ha i > 0, és pred i-sveri alkalmazésat, ha i < 0.) L.11. Definicié : Legven E tetszdleges, nem tires tipusértékhalmaz, T = seq( a fenti kévetelményeket kielégité halmaz. Ekkor az F = (1,7) rekord konstruke tipuskonstrukeiénak nevezzik H pedig i Figgoeny 1.3._Nevezetes tipusok z A fliggvény tipuskonstrukcié jelélése: F = fun(H, ), é8 a kivetkez6 specifikaici6s fiigavé- nyeket értelmezzitk: 1.12. Definicié : Legyen F = fun(H,E) és ((h,t), f) € yp tetszdleges, rigzitett elem. Meret: dom: F-+Ny — dom(f) = dom(t) Alsé hatar: lob: F +H atid h kezdetben ) Fels6 hatar: hib: P+ H sect P)1 (Lob f)) Sree S:PXHA+E —s(f,9) = tordia)—ordtoninyst ha lob(f) <9 < hiblf, Elso len lov:F +E tov(f) = tov(t), ha dom(f) > 0 Utols6 elem: hiv:F +E hiv(f) = hiv(t), ha dom(f) > 0 Els6 elem elhagydsa: lorem: F + F — lorem(f) = gp(suce(lod(f)), lorem(t)), hha dom(f) >¢ Utols6 elem ethagydsa: hirem : FF hirem(f) = yp (tob(f),hirem(t)) hha dom(f) > Kiegészités eldl: loeat : F x E + F loext(f,e) = yp(pred(lobi f)),loext(t,e)) Kiegészités hatul: hiext : F x E> F hiext(f,e) = pp(lob(f), hiext(t,e)) A seelekei6t egvszertibben jeldlitik gy, mint figevényeknél szokis a matematikaban, azaz f(g) = s(f.g). (Ha H halmaz alulrél vagy feliilrél korlatos lenne, akkor a megfelelé kiegészitd miiveleteket csak akkor értelmezzitk, ha a figgvény megfelel6 hatdra még nem érte el a korlatot.) 1.3. Nevezetes tipusok Az eddigiek soran tipusértékhalmazok konstrukci6javal foglalkoztunk és értelmertiik a meg- felel6 specitikici6s figgvényeket. Hzek felhaszndlisival megadhatunk tj tipusokat, ha meg- adjuk az. eleminek tekintett programokat. Ezok rendszerint a specifikicids fiiggvényeknek fe- lelnek meg, azaz az elemi tipusmiiveletek a specifikiciés fiiggvényeket kiszduit6 programok lesznek. Legyen m egy tets26leges specifikicids fiigevény az eddig definidltak kiziil, amelyik T tipuskonstrukcidra vonatkozik, és legyen t € T. Ha m-et kiszémit6 program elemi, akkor a programokban (és csak ott) m(t) helyett t.m-et irunk. Ha m értéke nem T-beli, akkor ex barhol szerepelhet a programon belil, ahol m(t) tipust érték el6fordulhat. Ha m értéke ‘L-beli, akkor f.n esak program helyén szerepelhet, és legtabbszir t : m a jele. A programok megegyemek az ABORT tal olyan értékekre, amelyekre a megielel6 fiiguvény nines értel- mezve. Ha az m szelekciés fiiggvénynek megfelel6 program megengedett, akkor rividen azt mondjuk, hogy az m fiiggvény megengedett mivelet 1.13. Definicié : (Rekord) Azt a tipust, amelynek értélshalmazat rekord konstrukei6- val Allitjuk el6, 6 megengedett miiveletei a szelekcids fliggvények, értékhalmazbeli elemek értékadésa, illetve azok sszehasonlitasa, azaz 8 = {81,...,8n.=,=1, rekorinak neverziik, A svelekci6 mivelete dllhat értékadas bal oldalén is, ha a jobb oldal egy megfelel6 tipustt kifejezés. Ax értékadas jelentése ebben az esetben, hogy a teljes rekord megvéltozik tay, hogy a kivélasztott komponens értéke a megadott lesz, a tobi komponens nem valtozil: Anaz ts := € egyszerti értékadas a t = (t.s1,...,f.8i-1,€;tSigay-.-st.tn) Grtékadisnak felel meg. 8 1. Tipuskonstrukeiék, nevezetes tipusok 1.14, Definicié : (Bgyesités) Ant a tipust, amelynek értékhialmazat exyesttéssel Allitiuk 16, é megengedett: mtiveletei a szelekci6s fiiggvenyek, értékhalmazbeli elemek értékadasa, illetve azok dsszehasonlitasa, azaz S Sn . eguesitésnek neverziik. A szelekeié esak akkor fordulhat el6 értékadas bal oldalin, ha az érték eleme lehet a megfelel6 értékhalmaznak, és a job oldalon a logikai igaz érték szerepel. Hatdsa, hogy a tovabbiakban megfelel6 szelekcids fiigavények értékei kizill esak ez lesz igaz, a tobi mind hamis lesz, egészen addig, amig az egyesités értéke meg nem valtozik, illetve valamelyik svelekcids fiiggvény értékét meg nem viltoztatjuk. 1.15. Definicié : (Halmaz) _Azt a tipust, amelynek értékhalmazat halmaz konstrukci6val allitiuk e16 halmaznak nevezziik, ha a megengedett. mtiveletet 0,= 0,€,:€,~,U} aol = 0 dires halmaz,létrehozAsa, illetve értékiil adésa, a halmaz tirességének cllendrzése. megfelel € specifikécios figevenynek, € —megtelel mem specitikci6s fiigewéenvnek, =~, haa kivonandé halmaz, részhalmaza a mésiknak OU, ha a két halmaz diszjunkt. 1.16. Definicié : (Fiiggvény tipus) Ha egy tipus értékhalmazat fiiggvény’ tipuskonst- rukci6val Alitjuk el6, é az dsszes bevezetett specifikicios fiiggvény megengedett. miivelet. akkor azt fiiggvény tipusnak neverziik. Mostandig az dsszes miiveleti hivatkozAs, jeldlés egyértelmd volt, hiszen esak szelekci6s fliggvények jelentek meg. Fiiggvény tipus esetén vannak olyan miiveletek is, amelyek a th pusértéket is viltoztatjak, exért az egyértelimiség kedvéirt megadjuk a miiveletek jeldléseit, Legyen f eny fliggvény tipusti viltoz6. Az egyes miveletek: f.dom, f.lob, fhib, f(g), f.lov: Shiv, f slorem, f : hirem, f : loert(e), f : hiext(e}; abol f : hiert(e) az f = hiezi(f.e) fértékaddsnak felel meg. A tovibbiakban is hasonldan jeldljtik a megfelel6 miveleteket L.17. Definicid : (Vektor) Azt a tipust, amelynek értékhalmazat fiigevény tipuskonst- rukeisval allitjuk el6 vektornak nevezziik, ha megengedett miiveletei § = {dom, lob, hib,[]}, ahol || a szelekci6 jele A vektort szokis tdmbnek is nevemi. A lob és hib elemek Atal meghatérozott érték- halmazt a vektor indextartoményénak nevezzitk. A definieid kivethezménve, hogy v vektor esetén v(i) helyett v|ij-vel hivatkozunk az i. elemre. (Ne feledjiik, hogy ez esak akkor értel- mes ha i eleme az indextartomanynak, kiilénben ez az ABORT program.) Specialis jeldlést bevezetiink a vektorokra: vect(H, E) jeldli a fun(H,E) konstrukcién alapul6 vektorok tipusét A legtbb nevezetes tipus a sorozat konstrukeién alapul, ezeket tekintiiik at a kovetkezOk- ben, A := () jelili az tires sorozat létrchozasinak, illetve sorozat fressé tételénck miiveletét Beveretiink még ket tovabbi, specilis miveletet, a lopop-ot 6s a readet 1.18, Definicié : Legyen t € seq(E), dt € E és st € {norm, abnorm). Ekkor: _ fadt,t:= lov(t),lorem(t) dom(t) > 0 ee = norm,lov(t),lorem(t) ha dom(t) > 0 st = abnorm + kiilnben stdt,t : read 1.3._Nevezetes tipusok 9 Ha esak a fopop mifveletet haszmilhatjuk, akkor nem tudjuk megéllapitani, hogy a sorozat lires-e. Ezért ebben az esetben be kell vezetni egy specislis, igynevezett extremalis clemet, ami nem fordulhat el6 a sorozathan, és ezzel ki kell egésziteni a sorozatot. Tehat extr ¢ E clemet kell taldlmunk, és ¢ helyett con(t,< extr >) sorozatot hasmalni. A tovibbiakban feltessziik, hogy a sorozatok ilyenek, ha a lopop miiveletet megengedjiik. 1.19. Definfcié : (Input sorozat) Egy sorozat input sorozat, ha megengedett miiveletei 8 = {dom, lov, lorem} 1.20. Definfci6 : (Output sorozat) Egy sorozat output sorozat, ha megengedett miive- letei S = {:= (),hiezt}. 1,21. Definfcis : (Szekvencidlis input féjl) Egy sorozat szekvencilis input faj, ha egy miivelet megengedett § = fread} vagy $ = {lopop). 1.22, Definfcié : (Szekvencidlis output fajl) Egy sorozat szekvencidlis output féjl, ha megengedett mriveletei $= {:= (), hiert} 1.28. Definfeié : (Verem) Egy sorozat verem, ha megengedett miveletei 5 = {dom, hiv, hirem, hiext}, vagy 8 = {dom, lov, lorem, loext}. 1,24, Definfci6 : (Sor) Egy sorozat sor, hia megengedett mtiveletei 5 = {dom, lov, lorem, hiext}, vagy 8 = {dom, hiv, hirem, loezt} A fenti definicidk alapjin ax output sorozatok és a szekvencidlis output f4jlok tipusa megegyezik. Amiért mégis killin vélasztottuk annak oka, hogy a szekvencidlis fajlok esetén ) miivelet helyett gyakran egy specidlis create miiveletet vezetiink be. A két mtivelet hatasa megegyezik, de sokszor célszertibb a create jelilés haszndlata. Szekvencialis input fajlok esetén is értelmezni szoktunk egy tj tipusmuiveletet, amelyik megel6zheti az. els6 read- ct vagy lopop-ot. Ezt open-nek nevezzitk. Minden tipus esetén a miiveletek, illetve azokat hasznél6 programok legavengébb el6felté- telei kisvdmithatoak a specitikicids figgvények delinicidja alapjn. Kz az olvasé feladata itt et példin tessziik esak meg. Az els6ben egy vektor adott elemét adjuk értékill egy megfelel6 valtozonak. Legyen v € vect(H, E), i € H és € € B. Ekkor: 1f(e := uli], P) = lob(v) 0.n Pe lerem’s) orozatra alkalmazott lorem mivelet leggyengébb elifeltételét 2. Osszegzés Legyen adott egy tetszdleges, nem fires H halmaz, amelyen értelmezett az dsszeadas, + iiivelete; valamint az egész szmok egy [m..n] intervallumén értelmezett. H-beli értékeket felvevs f fiigevény, azaz: f : |m.n| + H. A feladat az f fiiggvény |m..n| intervallumon felvett értékeinek dsszegzése. Az intervallum lehet fires, azonban ez esak tigy fordulhat el hogy n= m — 1; azaz m1 of) Ellendrizziik a ciklus levezetési szabilyaban szerepld feltételek teliesilését. Az els alap- Jan Q + P allitésnak teljesiinie kellene, azonban konnyen lathat6, hogy ez nem mindig All w fenn. Kvért probiljuk szekvenciéval megoldani a feladatot, amelynek masodik tagia lesz a ciklus a megadott P invaridnssal, az els6 tagja pedig biztositja egy olyan (2 feltételteljesii- Wsét, amelyre mar Q" > P fennall. (A szekvencia els6 tagia biztosftja, hogy az allapottér egy olyan részhalmazaba jussunk, amelybél mar biztonsigosan el tudjuk inditani a ciklust.) Nyilvanval6, hogy ha megkivetelfik (2 mellett més azt is, hogy i és s értéke legven m—1 illetve 0, akkor ezckbél egyiittesen mar kivetkezik az invaridns allitis. Ezért a QJ feltétel Tegyen a kivetkez6: Qo: QAi=m-1A8= Kénnyd olyan $; programot talélni, amelyre Q > Lf(Si,@Q') teljesil, é ezért a szekven- a els6 tagiénak vilaszthat6, hiszen az i,s := m —1,0 értékadés megfeleld. Bhhez esak a leggyengébb el6feltételt kell kiszémitani. Az értékadas mindig értelmezett, ezért a leggyen gébb eldfeltételt megkaphatjuk, ha ('-ben i és s helvébe mindenhol m — Let, illetve 0-t helvettesitiink. Uffi.s = m— 1,0, Q) = Qn = (Qam =m-1A0=0)=Q, Ivan kivetkezik ()-b61 Teritink vissza a szekvencia masodik tagiat alkotd ciklusra. A levezetési szabéily els6 feltétele szerint Q! > P allitasnak teliesilnie kell. Az invariansban sverepel Q, de ez része Q-nek is, ezért eva résce fennall P-nek, ha Q igaz, Miutén m=1 0 fennall, hiszen P miatt é € [m —1L.n], és ha i # m, akkor i 0. fay ezzel a vilasetassal a harmadik feltétel is teljesiil ‘Verjiink ré a levezetési szabaly Otddik feltételére, ametyik a terminal6 figgvény értékémek csikkkenését biztositja. t értékét esikkkenthetjik § ndvelésével, amit megtchetiink példéul az, i+ értékadassal. Ellendrizziik ezt formalisan is. Ax értékadas mindig értelmezett, ezért a legavengébb eloteltétele egy adott Allitésra vonatkozéan kiszémithatd, ha az. éllitésban i helyébe mindenhol i + I-et frunk. Igy: PAignan fs 1flissitln-i~ f(k) Knnek els6 két tagia kivetkezik P Ai # n dllitésb6l, hiszen Q szerepel P-ben, é ha i € [m= Ll Ai # n, akkor i+1 € |m~ Ln}. A harmadik, s-re vonatkoz6 tag viszont nem feltétlen igaz, hiszen esak azt tudjuk biztosan, hogy s = 57 f(B). Ebben egyenlbse mindkét oldalét f(j + 1)-gvel névelve, a jobb oldalon a kivant kifejezés szerepel. Igy azt kaptuk, hogy PAi xn + QUeMsY fonnall. Ugyanakkor Uf(s = 8+ (EFT, Q") =i +1 E [man] AQUEMEEM ert az. értékadas értelmezett, ha ¢+1 € Dy = [m.n). Ami fennall, ha i € [m—L.n] Ai én. Exért PA #n + [f(s := 8+ fli+1).Q"), 68 act mar littuk, hogy Q" + If(i:= i+ 1,P). gy ha ciklusmagnak az #:= #4 f(i-+ 1) 68 i:= i+ 1 értekadasok szekvenciajat vélasztjuk akkor a szekvencia levezetési szabélya miatt a ciklus levezetési szabilyénak negyedik feltétele is teljesilni fog. Miutén a cikiusmag megvaltozott vissza kell térni a mar ellendradtt dtddik feltételre, Azt littuk, hogy a szckvencia masodik tagia esikkenti t értékét, de meg kell még mutatnunk, hogy a szckvencia is csikkenti t-t. Ezt megtehetjik, ha belitjuk, hogy az els6 tag nem valtoztatja azt. hz trividlis, hiszen az értékadas csak $ értékét viltoztatia, ¢ pedig ettdl fiiggetlen, Formélisan: PAignan— =t)= pysretsiny = ty fo Uf(ssst fit l)n- +1 E [man] A(n— i+Lé [mn] An— ami teljesii, Miutan a ciklus levezetési szabélyanak mind az dt feltétele fennéll, a ciklus kielégiti a Q! + 1f(DO, R) feltételt. Igy azt kaptuk, hogy a kivetker6 program megoldja a feladatot: is m-1,0 iAn +fi+0) itt Vizsgéljuk meg, hogy mit tehetiink akkor, ha olyan tires intervallumot is megengediink. amelyben n P teljesil hiszen Q tagia Q'-uek is, tovabba i 6 s helyébe m-—I-et * p(k) fltétett kapiuk, ami illetve 0-t helyettesitve az m= 1 € {m= 1}U|mun| AO = nyilvan fennall ” A mésodik feltételhez olyan x ciklusfeltételt kell taldlnunk, amelyre P Ann -+ K. Legyen mii n. Ha P-ben i ¢ |m.n|, akkor i= m= 1 6s > miatt i= m=1>n, exert." f(k) = 3 Hh) = |, azaz R teljesiil. Ha i € [mn], akkor i n, ami esak akkor fordulhat el6, ha i =n. Ekkor R nyilvan fennel A termindl6 figgvény legyen most is #: n— i, Krve a harmadik feltétel tejesil, hiszen w miatt i 0. A termindl6 fiiggvény értékét esikkentsiik most i= i+ 1 drtékadis sogitségével. Av Otdik feltétel ennéllisa ugyanigy ellenGrizhet6, mint zt megel6z6en mar bemutattuk. A ciklusmag most is szekvencia lesz, amelynek mésodik tagia az kézbiils6 allits most is legyen P°'*azaz i+] értéladas. A ee QAi+1€ {m—1}Ulman] As = >> f(h) ‘nnnek els6 két tagia trividlisan igaz, a harmadik tagot pedig ugyanigy kell Atalakitani, mint a mar bemutatott esetben, azaz.a ciklusmag els6 tagja eben az. esethen is az $:= s+ f(i+1, értékadas lesz, ami nem viltoztatja £ értékét. Ugyanakkor ez értelmezett is, hiszen i + 1 € Dy =[m.n, mert i € {m—1}U|m.nj Ai mAi+1 x(3(h)) A feladat nagyon hasonlit az dsszegzésre, esak most f helyett y 0 f fiiggvény értékeit kell dsszegezni. Ezért jérjunk el most is hasonl6 médon, Vezessiik be a Q' llitast, amely a programot alkoté szekvencia kizbiilsé Allitasa lesz. Leayen ez: Qs Qai m—1Ad Nyilvanval6, hogy Q — If(i,d = m — 1,0,Q") teljesiil, hiszen az értékadas mindig. extelmezett, igy a leggyengébb eloteltécel Iflisd = m —1,0,Q/) = Qit=m- A szekvencia mésodik tagja legyen egy ciklus, amelynek invariénsa kilejezi, hogy az intervallum i-vel hatérolt kezdészeletére mar ismeritik a keresett értéket. (Az. Allapotteret, ay tj, egész. komponenssel bévitjik, amit megtehetiink a megfelel6 kiterjesztési tétel miatt.) Ps Qaielm—Lnlad= J x(30) A ciklus levezetési szabily’nak els6 feltétele Q' + P teliesiil, hiszen P-ben i helyébe m= Let, d helyébe 0-t irva Q-t kapjuk, ugyanis m —1 € {m ~1..n] (# 0), és az tires dsszeg, definicié szerint 0. Ugyanakkor Q szerepel ('-ben, ezért fenn kell llnia. Ciklusfeltételnek eben az esetben is vélaszthat6 i # n, hiszen PAi =n + R nyilvin- valdan fennall, mert P-ben i helyébe n-et irva, az dsszegzés hatrai megegyeanck az. K-ben talalhato dsszogz6s hataraival. Igy a mésodik feltétel is teljesitl 1b 16 3. Sdmlilae A temindld figgvény legyen # : n — i. Ex egész értékii és PAG # n+ t > 0, ugyant i € |m— Ln] Ai rn eseten i 0, Tehat a levezetési szabily harmadik feltétele fenall, A termindlé fiiggvény értékét esblskenthetik, 6s ezzel biztosfthatjuk az tddik feltételt, ha i értekét eggyel néveljiik. 1:= i+ 1 mindig értelmezett, fay to lfli PAi#nAn— +Ln-i x(3(h)) Q": Ufisit1,P) = Pir Ha P Ai ¢ n mellett még a A{i + 1) = hamis is fennéll, akkor Q" is teljesil, hiszen a konjunkeié els6 két tagja nyilvanvaloan igaz, az i+ Lig tart6 dsszeg pedig x(9(i+1)) = O-val tér el az ‘ig tart6 dsszegtOl, azaz megenvezik azzal, erért devel is. Tehat PAixnA-Bi+1) 4Q” Nezziik a mésik esetet, azaz amikor (i + 1) teljesiil. Ekkor az dsszegzés i + 1. tagia 1 exért d értékét is eggvel kell ndvelniink annak érdekében, hogy az egyenléség fenndlljon. Hat mindig megtehetjik, tehit formalisan: PAixNAB+T) > Ufd=d+1,Q") = Ques? = Pat QAi+1€ (m-Lan]adt1= Y° (918) ami igaz. ny az. elagazas levezetési szabsilyat felhasenélva azt kaptuk, hogy a ciklus levezetési sza- balydnak negvedik feltétele teljesil, ha a ciklusmag ey olvan szekvencia, amelynek mésodik tagja az i:= i+ 1 értéladas, az els6 tagia pedig egy eligazas a (i+ 1) feltétel szerint. Ha x igaz, akkor a d:= d+ 1 program megelel6, ha nem akkor a SKIP. Az elfgazs nem valtoztatia sem n sem i értékét, fay a termindld fiiggvényt sem, tehat fa ciklusmag tovéibbra is eggvel eskkenti t értékét. Miutén mind az dt feltétel teljesil, a ciklus megoldja.a Q! és R dltal meghatarozott feladatot. Tehat art kaptuk, hogy a kévetkezd program megoldja a kitizdtt feladatot. id:= m-1,0 izn aG+1) 7 dadsl SKIP T=i+l 4. Maximumkeresés Legyen adott exy H nem tires halmaz, amelyen értelmezett egy teljes rendezés (<), tovabbé egy f :|m.n| > HT fiiggvény, ahol |m..n] C 2. Keressiik meg a fiiggvény legnagyobb értéket, é adjunk meg egy olyan helyet, ahol ezt felvesei! Feltessziik, hogy maximum Kétezik, azaz az intervallum nem ies (m f(j) moO pe |, amely variénsa kifejezi, hogy az intervallum egy adott kezdGszeletére mér ismerjiik a maximumot és annak egy helyét. A kead6szelet veg- pontja legyen k, azaz az éllapotteret egy Z komponenssel b6vitiik: jax > fl) Po: QAKE [mn] AGE [mk] A maz = f(i) ANG € [mk]: (2 P nem All fenn, ezért most is svekvencia lesz a program, amelynek kizbiils6 Allitasa legyen: Qs QAk=mAi=mAmar = f(m) A szekvencia els6 tagja legyen a k,i,mar := m,m, f(m) értékadas, a masodik tag pe- dig egy ciklus a megadott invaridnssal. Bllendrizaiik a értékadas helvességét. Kz mindig ertelmezett (m € Dy), igy: Uf(k,i, maz == m,m, f(m),Q’) = Qrhimazemmsion) = QAm=mAm=mA fom) = fm) =Q ami Kivetkezik Q-bol. Ellendrizziik a ciklus levezetési szabélydnak feltételeit. Az els6, Q' + P teljesiil, mert P-ben k,i,max helyébe m,m, f(m)-et irva: QAmE [m.n| Arm € |m.am| A flrm) = F(m) Aj € [mam] : f(m) > FA) - ts Is 4. Maximumberesés Ebben Q fennall, mert ez szerepel Q'-ben is, m € [m..n] hiszen egy nem iires intervallumnak au. als6 végpont mindig eleme, a tbbi tag pedlig trividlis azonossig, Lathaté, hogy ha k = n is teljesiil az invarians mellett, akkor az utéfeltétel igaz, azaz 2k ¢ n vilasetéssal a mésodik feltétel is fennill Ierminalo figgvénynek vélaszthatjak tn het, hiszen haa ciklusfeltétel igaz, ex pozitiv. Kinmek éxtékét esdlekenthetji, ha k értékét egevel noveljiik: PArAn-k=t f(kssk+lt f(j) A konjunkeid els6 két tagia nyilvin kivetkezik PA n-bél. A harmadik is hiszen P miatt i € [m.A](C [m.k + 1]) Amar = f(i). A tovabbiakban két esetet kilinbértethetiink meg, Ha mar > f(k-+ 1), akkor az utols6 tag is fennall, azau: PAxAmas > f(k+1) +1f(SKIP,Q") Ha mar < f(k +1), akkor i értekét k + L-nek és mar értékét f(k + 1)-nek valasztva, Q" harmadik é negvedik tagia is igaz lesz, azau PAwAmaz < f(k+1) 3 If(i,mar =k +1, f(k+1),Q") Ugyanakkor a két feltétel lefedi ax dsszes esetet, exért az eldgazds levezetési szabélva miatt az alkalmas a ciklusmagot allot6 szekvencia els6 tagianak, és ekkor teljesiilni fog a negyedik feltétel. Hz az eldgazds nem véltoztatja sem & sem n értékét, igy tt sem, tovébba mér belattuk, hogy a szekvencia masodik tagja csikkenti a terminal6 fliggveny értekét. Bzért az ‘tddik feltetel is fenndll AZ eddigiket dsszegezve azt kapjuk, hogy a kivetkez6 program megoldja a kitiizitt fela- dato Kyigmar := mm, f(m) ken max < f+) [f+ 1) H. Ebben az eset- ben eléfordulliat, hogy nines olvan elem, amely kielégitené az adott feltételt, & elkor nines is maximum, Jelezziik ezt egy logikai értékkel. Ezek alapjan a feladat specifikicidja: A= Rxtudx he mon li mar B=2 xz mat Qs m=m'An=n'Am-1 {6j)) Most is ciklussal prObiiljuk megoldani a feladatot, amelynek invariénsa kilejezi, hogy az intervallum k-val hatérolt kezd6szeletére mar ismerjiik a megoldast: Po: QAKE|m=L.n|AL=3j € [mk]: BU) A 1 (GE fr] A BEG) A maz = fli) AVG E [mK] : BGG) > max > f(3)) Q +P, exbrt most is szekvencia lesz a megoldés, amelynek mésodik tagja lese a ciklu P invaridnssal. A kézbiilsé allitas legyen: Qs QAk=m-1Al=hamis Ekkor a szekvencia els6 tagiénak vilaszthatjuk a k,l = m —1,hamis értékadést, mert Q > Lf (kL = m — 1, hamis, (Q') teljesiil. Ugyanakkor Q’ — P is fennéill, hiszen ( nyilvan igaz, m—1€ [m — 1.n](# 0), tovabba [m.m ~ 1] = 6, exert k= m— Lesetén 1 = P-ben, és ekkor az. implikicié el6tagia hamis, igy az implikicié biztosan igaz A ciklusfeltétel legyen + : k # n. Kz kclégiti a levezetési szabily mésodik feltételet hiszen ekkor +7: k n, és P-ben k helyébe n-et irva pontosan K-t kapjuk. ‘Terminalé fiiggvénynek megielel ¢ :n— k, miutin PA x > n—K > 0. £ éxtékét a szokiisos médon a k +1 értékadassal csikkentsiik. PA x At =t' > If(k:= k + 1,t < t’) nyilvan teljesiil. A negyedik feltétel ellendrzéséhez szAmitsuk ki [f(k := k+1,P) = P***!-et és jeloljiik ext Q'vel Qs QAKFLE [m= Lan] Al = 3 € Im.k+ 11: AGA 1 (£€ [m.k+1]A.8(i) Amar = f(i) AVG € [m.k +1] : 8G) > max > FG) a 20 5,_beltételes maximumkeresés Ha PAxA~6(k+1), akkor Q” is fennéil, mert a konjunkei6 els6 ket tagja nyilvénvaléan igaz, 6 ~(k + 1) miatt 3j € [mk + 1] : BU) = 37 € [mh]: By), tovabbé ak + 1. értek nem Iehet a maximum. Tehit P Ax A—A(k +1) + Lf(SKIP,Q") Ha PAw AEA Blk +1), akkor “I miatt ¥j € [mk] : “B(i). Ezért esak k + 1 elégiti Ki 6+t az |m..k + 1] értékek Kézil, fgy csak ez lehet a maximum. Tovabba az |y..k + L-ben van olyan elem, amelyre 8 teljesil, ezért = igaz Q"-ben. Tehat P Am AWA {hk + 1) If(l,i,maz := igaz,k +1, f(k + 1),Q”) fennall Ha PAAAG(k-+1), akkor ket tovabbi alesetet kell megvizsgalnunk. Ha f(k-+1) < mar, akkor az eddigi i és maz értékek kielégitik Q"-t, azaz PARAIA (K+ LAS (K+ 1) < maz Uf(SKIP,Q"). Ha mar < f(k-+1), akkor i= k-+1 és max = f(k-+ 1) valasztdssal Q" igaz lesz, azaz PA AUN S(E-+ 1) Amar < f(k-+1) Lf imag := k +1, f(k+1),Q"). A ket aleset minden Iehetséges esetet lefed, tehat az adott feltételekb6l és programokbol felepftett elagazds eben az esetben megtelels lesz. ‘A megvizsgilt hérom eset teljes eseményrendszert alkot, igy a ciklusmagbeli szekvencia els6 tagiiinak a megfelel6 elfigards valaszthat6, lz nem viltoztatja t értékét, igy a negyediks feltétel mellett az dtddiket is kielégiti a ciklusmag. Ezzel a kévetkez6 programhor jutottunk, k,L:= m1 hamis ken SBR+D, ABUL TABIR+ 1) F(k+1) < maz] mar < f(k+1) Limar = 7 mae = SKIP igazkeasie+y | SRIP | aa pad kisk+l 6. Linearis keresés Gyakori probléma, hogy egy adott értéknél nagyobb, els6 olyan egész szémot keressiik, amely Kielégit. egy adott feltételt. Legyen az adott érték m € JZ, a keresett tulajdonsag pedig :Z +L. A probléman belil tdbb esetet killOnbiztethetiink meg alapjin. Az egyes eseteket kiilOn-killon vizsgaljuk, 6.1. Linearis keresés 1. El6szdr feltessziik, hogy van olyan elem m utén, amely kielégiti a tulajdonsagot, és a feltétel megengedett feltétel; azaz szerepelhet eldgazas, illetve ciklus feltételében. A specifikicié: R Qs mam AZ eZ: 75> mAG(i) R Qi > MA Bl) AV] E [m.i ~ 1]: HU5) Probiljuk ciklussal megoldani a feladatot. Ennek invaridnsa fejezze ki, hogy az 7 kisebb értékeket mar megvizsgéltuk, és ezekre nem teljesilt a feltétel, azaz Po: QAi> MAY) E [m.i 1]: Bl) 1 Q # P, de hai =m, akkor P mar fennéll. Kzért szekvencia lesz a program, amelynek ish lita: Q : Qni=m Ekkor Q + [f(i = m,Q'), 6 az elmondottak miatt Q' + P. Ugyanakkor P A i(i) + R, igy ciklusfeltételnek megielel ~3(i). Tudjuk, hogy van olyan elem, amelyre a feltétel fennall. Legyen n € Z olyan, hogy n > m A (n). A terminél6 fiiggvény legyen t : n — i n vélasetsa miatt P Aili) ni > 0. t értékét esdkkenthetjik ¢ névelésével, ezért valassauk ciklusinagnak i := i+ Let. kkor PAnBSli) An-ist 41fisitlm—i QAi+1> MAY) E [mi]: 38(j) = PI = 1flis= i+ 1,P) a 2 6._Linearis keresés Kzzel belattuk, hogy a kivetkez6 program megoldja a kitizitt feladatot: =m =i) isa” 6.2. Linearis keresés 2. Ebben az esetben nem tessziik fel, hogy J megengedett feltétel. A specifikéci6t ex termé- svetesen nem érinti, ezért az megegyerik az eldz6 esetben felirttal. Azonban most nem sverepelhet semmilyen progamkonstrukci6 feltétel rész6ben sem, azaz egy programmal kell az értékét kiszémitani, és ext az értéket irhatjuk a megfelel6 helyre. Ennek megfelelen egy ‘ij programot fogunk levezetui. Az Allapotteret bévitstik ki a logikai értékek halmazaval (L), és a megfelel6 valtozo legyen 1. Bx adja meg, hogy a feltétel teljestil-e egy i ért¢kig, és ezt tartalmazza a ciklus invaridnsa zen kiviil az invaridns fejezze ki azt is, hogy az i-nél kisebb értékel nem felelnek meg, Yovabba i > m helyett i> m — Let koveteljiik meg, Igy az invaridns: Pos QAi>m=1AL= 3 Elma]: BG) AVI € lm.i = 1]: 9914) Lathatd, hogy Q # P, ezért szekvencisra lesz saiikségiink. Legyen: Qs QNi=m-1AT Ekkor Q + [f(i,1 = m — 1, hamis,Q’) nyilvinval6. Ugyanakkor Q! + P, mert Q szerepel Q-ben is, tovabba i =m — 1 eseten i> m—1 65 az [m..i,illetve az [mi — 1] intervallumok iiresek, ezért ( hamis & a konjunkei6 utols6 tagia igaz. Ciklusfeltételnek vilaszthat6 x : ~l, miutén ennek tagadésa l, és igy P miatt 3y € [mi] (j) fennall. Ugvanakkor az invarians utols6 tagia miatt J csak é-re teljesiilhet az adott intervallumbél, azaz (i) igaz. Ezt kiegéscftve az invaridns tObbi tagidval, és kihaszndlva hogy [m..i] #0 +i > m, pontosan R-hez, jutunk, ‘A terminal6 fiigevényt most is ugvamigy hatérozzuk meg, mint az el6z6 esetben. Legyen tehdt n € Z olyan, hogy n > mA Gin). Ezt felhaszndlva: t: n— i, Az invaridns 6s = miatt ng (mail, azaz.n > i, igy Pn >t > 0 fennéll tf értékét esikkenthetjik, ha i értékét eggvel néveljtik, mert PALAn —i i+1,n—i< ¢!), A ciklusmag ezért tartalmazza az i := i+ 1 értékadast. Ellendriz kiclegiti-e a negyediik feltételt. Ehher szémitsuk ki az. értékadés P-re vonatkoz6 leggyengebb elofeleételét, [f(is= i+ 1, Pht QU" QNIFLE m= IAL = 35 € [mi +A] + ALG) AVG E [mai] : 84) Q"-ben a konjunkeid els6 két tagia trividlisan igaz, ha az invariéns fennéll. Az utolsé tag AI és P I-re vonatkoz6 része miatt teljesil. A harmadik, I-re vonatkoz6 tag érvényes- sége azonban nem kévetkezik P A —I-bél, hiszen azok esak az [m..iJ-beli értékekrdl adnak informéciot. Alakitsuk at ezt a tagot: (1= 3) € [m.i+ 1]: 5G) =(1 (i +1) V3 € [m..i] : B{4))) 6.3, _Linedris keresés 3. 23 Tit a diszjunkcié masodik tagia P A =U miatt hamis, ezért Q" teljesiléschez elegends L = Sli + 1)-et biztositani. Ere alkalmas az 1 := (i + 1) program, amely nem valtoztatja ¢ ertékét. fay a kivetKez6 programboz, jutottunk: id= m= 1 hamis =I T= a+) +1 6.3. Linearis keresés 3. Most elhagvjuk azt a megkitést is, miszerint biztosan van olyan elem m utén, amelyre fenndllna. Azonban a keresést ekkor is biztosan be kell fejezni, ezért vezessiink be egy 0:2 -+L feltételt, amelyet biztosan kielégit egy m uténi elem. Ekkor az els6 olyan elemet keressiik, amelyre 4 vagy 6 fenndll. Természetesen azt is jelezni kell, hogy taléltunk-e tulajdonségii elemet, azaz az dllapotteret egy logikai komponenssel boviteni kell. A megoldés sordn feltessziik, hogy sem megengedett feltétel. Igy a specitikaci6: A = LXExL 8 Q + m=m'A3j EZ: j>madli) Ro: Qdu= (Bj EL: j> MAG) AVKE [m.j- 1]: ~6(K)), ui > MABE) AV{ € [m.i— 1]: 79(j) A 78) A program allapotterét bévitstik ki egy logikai komponenssel (L), amely kifejeri, hogy 0 feltétel teljesilt-e mar ‘ig. A megfelel6 viltoz6 legyen v, és a feltételt tartalmazza az invaridns is. Az invaridns ezen kiviilirja el6 azt is, hogy u jelezze, teliesilt-e 9 i-ig,illetve i lott sem 3 sem 5 nem allhatott fenn: Pos QRiDm=1Aw= 3 € [mai] Aj) Av = 3 € [mai] 5) A Vj € fai — 1]: 79(9) A-8Li) QA Pde hai =m—1A-u Avis teljesil () mellett, akkor mir P is igaz lesz, hiszen ax, els6 k6t tag trividlisan fennail, a tobbi tagban szerepl6 intervallumok mindegyike dies, fgy a létezések nem teljesiihetnek, az utolsé tag pedig igaz. Ezért a megoldés szekvencia lesz, amelynek kizbiils6 Allitésa: Qs QAi=m=1A-uA-w A szekvencia els6 tagia az i,u,v := m—1, hamis, hams értékadas, mert Q + Lf(i,1,v m= 1,hamis, hamis,Q') trividlisan igaz. A masodik tag lesz a cikdus, 2 6._Linearis keresés Q' + P teliesil a leirtak miatt. Ciklusfeltételnek vélaszthatiuk am: -u Av diltast: Ugyanis ennek cllentetje u V v. Ha w igaz, akkor P-bél kivetkezik R. Ha w hamis és v igaz akkor P miatt i-ig nem teljesil 3, ugvanakkor 6(i) fennéll, azaz ekkor is igaz az utofeltétel, Legyen n € Z olyan, hogy n > m A 6(n). Ekkor t : n~ i megfelelé terminal6 fiiggvény lesz, PAx >t > 0 fenndil, mert + miatt v hamis, és P egvik tagja v = 3j € [mail : 0) exért n ¢ |m..i}, azaz i m-1Au= HE [mit]: Wj € [mi] : 8G) A-8L5) (j) Nv = Bj E [mai +1]: H(A) Ha P Ar igaz, akkor az els6 két tag trivialisan igaz. + miatt w is amis, azaz az ‘m.<] intervallumon sem 3 sem 3 nem teljesil, ezért az utols6 tag is fennall. A fennmaradé kkét tagot hasonl6 médon alakithatjuk at, mint azt az elGz6 esetben tettiik, azaz vélasszuk kiln az i+ 1. elemet és az [m..| intervallumot. Az intervallum elemeire + miatt nem éllhat fenn egvik feltétel sem, ezért elegend6 u = (i+ 1) Av = 6[i+ 1)-et biztositani. Erre alkalmas az u,v,:= B(i+ 1),d(¢ + 1) program, amely nem valtoztatja t értékét. Tehéit a kivethez6 program megoldja a feladatot: Gav = m— 1, hamis, hamis SUAS @+1), 00+ 1) i+ 6.4. Linearis keresés 2.8. gen gyakori feladat az amelyben azt akarjuk elddnteni, hogy egy adott intervallum valame- lyik eleme teljesit-e egy adott tuljadonségot, és ha igen, akkor az. els6 ilyet kell meghatéroz- unk. Legyen az intervallum |m.n| C Za tulajdonsig, pedig 3 : Z + L. Ekkor a feladat specifikicié jaz = LXEXEXL mniil Hah xt Q 5 m=m'An=nAm-1<0 Rs QAL= AE [ran]: AG) AL +i € [man] A Sli) AVG € fm. — 1]: 7969) Ez a feladat specialis esete a linearis keresés 3, valtozaténak, hiszen 6(i) = (i > n) valasztéssal pontosan azt kapnénk. Ennek ellenére megoldjuk ezt a feladatot is, hiszen az intervallum nagymértékben egyszerdsiti a feladatot — a 9 megengedett feltétel —, és vir- hhatoan a program is egyszertibb lesz, GA, Linedris keresés 2.8. 25 Probilkozzunk ciklussal, amelynek invari i-vel végz6d6, résr6t mar megvizsgaltuk kifejezi, hogy az intervallum egy adott, Pos QAi€ [m= Ln] AL =3j € [m,n (3) AVG € [mi — 1] 905) QA Pde P-ben i-t m—1-nek, I pedig hamisnak valasztva mar teljesiilne az implikcis vért a program szekvencia lesz a kivetkez6 kizbiils6 Allstassal Qs Qai n-1Arl Ekkor Q + [f(i,:= m_—1,hamis,Q), exért a szckvencia els6 tagia a megfelel6 értéka- das. Mar littuk, hogy Q' + P. A ciklusfeltétel legyen x : UA i # n. Ez megfclel6 lesz, mert ellentetje: “vt: 1 Vi = n, Ha I igaz, akkor 3j € |m..i] : 6(j) az. invaréns miatt. P utols6 tagia miatt ez esak i lehet, azaz 9(i) igaz. Tovabba i € [mn], hiszen i € [m ~ Lun] és { miatt [m..i] #0, azaz.m < i. Igy ekkor fennéill R. Ha ! nem igaz, akkor i = n-nek kell teljesilni. Ekkor azonban 3j € [m..n| : 6(j) hamis, ezért az ut6feltétel most is fenndll A terminalé fiiggvény legyen t :m —i. P miatt i € [m — Lon] é m miatt i #n, fay i 0. A figavény értékét esikkenti az i := i+ 1 értékadds. Szémitsuk ki Ifliss i+ 1PM Qs QAEFTE [Lan] AL = 3j € [rn..i + 1]: BG) AVG € [mi] : 394) Ha Px igaz, akkor (”-ben Q igaz; i+1 € |m—1..n| fennéll, mert i € |m—L.n| Aix n. Az utols6 tag is teljesiil, mert x miatt I hamis, igy P l-re vonatkoz6 tagia ezt eredmeénvezi. Q" Lre vonatkoz6 tagiat bontsuk fel az i +1. elemre és a maradék intervallumra. Mar delattuk, hogy az intervallumra vonatkoz6 Allitas nem teljesiil, ezért (= G(i + 1)-et kell biztositani. Ezt megtehetjiik az 1 = (i +1) programmal, amely nem valtoztatja ¢ értéket. Igy a kévetkez6 programhoz jutottunk: 7. Logaritmikus keresés Egy adott tulajdonségd elem megtaléldséra a linedris kereséseket vezettii le. Hzen keresések miiveletigénye a keresend6 elemek szamaval ardnvos, innen ered az elnevezésiik. Ha egy adott elem megtalélasa a feladat és a keresend6 elemekr6l tbbet tudunk, akkor a linedris keresésnél jobb megoldas is adhat6 a problémara. Legyen H egy olyan halmaz, amelyen egy teljes rendezés - legyen ez < - értelmezett, Legyen m..n] CZ 6s f : m..nl + H egy monoton niveked6 fiiggvény ezen rendezés szerint. a feladat pedig, hogy keressiik meg egy h € H elem egy eldfordulasst. f értékei kizdtt, ha van ilyen. A feladat specifikici6ja: Rx RXHXLxe moni h ol i B= Zune Qs mam! An=n' Ah=N AYJE lm.n-1: fU) vA) V0) megfelel6, amib6l kapjulk a ciklus feltételt: wimngnAnt ‘Lermindlo fiiggvénynek valaszthatjuk a maradék intervallum elemeinek szdmat v—u+1- et, ha még nem talaltuk meg az elemet; illetve ennek értéke legyen (, ha mér megvan a Keresett elem, Az invaridns 65 a ciklusfeltétel teljesiilése esetén az igy definialt figgvény értéke lathatoan pozitiv. Ennek megfeleléen: a furutl yhant 0 hat A ciklusmag legyen egy szekvencia, amelynek els6 tagia exy |u.v}-beli elemet valaszt ki — i —, mésodiks tagia pedig et felhasmélva esbkekenti a termindlé fiigevény értekét az invarids fenntartasaval. A szekvencia kizbiils6 allitisa ennek megfelelden legven: Qs QA fu] € fran] AVG € [rn] \ fv]: fU) AAA i € [a] Eldszbr forglalkozzunk a masodik taggal. Harom esetet kiildmbértethettink mex fi)= keen: : Ekkor | = igaz értékadas utén P nyilvnvaloan teljesil, tovabba t értéke is esik- A (i) < hz Bkkor az, |u..c| intervallum saiikithet6, £15) hz Ekkor az. el626 esethez hasonléan v 1 megfelel. A hérom esetben felsoroltfeltételek lefedik az dsszes lehetséges esetet, az exes esetekhex megadott programok helyesek, fgy a hérom escth6t felépitett elagazéis megoldja a Q" és P fltal meghatérozott feladatot 68 t értékét is esbkkenti A ciklusmag, els6 tagjéban az |v..u| tetsz6leges elemét kivalascthatjuk. Ez lehetne vala- rmelyik végpont, ekkor azonban nem kapnank jobb programot a linedais keresésnél. (Ha uct, valasztjuk, akkor lényegében a linedtis keresés 2.8-as valtozatat kapndnk.) A program annél hatékonyabb lesz, minél tbb elemet,hagyunk el az intervallumbél. Ha i-nek az intervallun kizéppontjét valasztjuk, akkor a maradék intervallum hosszat felezziik, ami dltaliban a leg- jobb. Igy az els6 tag legyen a i := [442] értéhadés. Ex a terminslo figgvény értekét nem valtoztatja, | € (uu), ha [uv] # 0. Igy a program: 28 7_Logaritmikus kereses F@) uw wd w 7. Abra. Az [u,»] intervallum satkitése, ha f(i) < h. tye, L= myn, hamis A fenti programban a ciklusmag a legrosszabb esetben is legfeljebb laga(n — m + 1) lepésben keri végrehajtisra, innen ered a logaritmikus keresés elneverts 8. Visszalépéses keresés Egy adott tulajdonség clem keresésére,illetve annak eldéntésére, hogy ilyen elem létezik-, Altaléban a linedtis keresés hasznalhiat6. Ugvanakkor a logaritmikus keresés esetén lattuk: hogy ha tbb informaci6 All rendelkezésiinkre a keresett elemrdl és a keresés alaphalmazr6l, akkor hatékonyabb megoldast kaphatunk a linedris keresésnél. A logaritmikus keresésben a rendezettséget hasznaltuk ki. A visszalépéses keresés sordn is egy olyan feladatot oldunk mex, amelyet megoldiiatndnk akér linedris kereséssel is, de a keresés alaplialmaznak szerkezete 65 a keresési feltétel tulajdonsigai lehetOvé teszik egy hatékonvabb program hasznélatat A visszalépéses keresésben egyrészt kihasméiljuk, hogy a keresend6 elem komponensekre Donthat6. Misrészt, hogy a keresési feltétel komponensenként folyamatosan finomithat6, azaa ismerve az, els6 valahany komponens értekét, mar tudunk valamit mondani a tulajdon- ségr6l,illetve annak kielégithetetlenségérdl, Miel6tt a feladat formalizalasiba kezcenénk nézeiink egy példat ilven tipusi feladatra. Legyen ez a 8 kivdlyn6 problémaja, amelyben 8 kirélyn6t kel elhelyezniink egy 8 x 8-as sakk- tablara tigy, hogy a kirdlyndk kéziil eavik se issn egy mésikat. It egyrészt a programnak el kell dntenie, hogy fel lehet-e tenni 8 kirdlyn6t itésmentesen - még akkor is ha mi a vilaszt 8 x 8.as esetben indjuk -, masrészt meg kell adnia egy titésmentes elrendezést A feladatban a keresés alaphalmazénak vlaszthatjuk a 8 kirdlyn6 dsszes lehetséges el- rendezését a sakktablén. Ugyanakkor e7. a halmaz. komponensekre bonthat6, hiszen ezen belill kiln vizsgalhat6 az els6, a mésodik, ... é a nyolcadik kirélyn6 pozicidia is. lay a keresési halmaz felfoghaté 8 halmaz direktszorzaténak. zen kiviil az titésmentességr61 is tudjuk, hogy példéul annak teljesilése az els6 4 kirdlyndre, esak az. els6 4 kirdlyné poricidjé- tl fiigg, tovabba, hogy ha az els6 négyre nem teljesiil, akkor az els6 dtre, .... nyolera, azaz az dssvesre sem teljesilhet. Meg egy tovabbi trividlis tulajdonségot is kihasznélunk majd a formalizmusban, miszerint ha nines kirdlyné a tablén - 0 kirdlynd -, akkor az fitésmentesség Diztosan teljesi Legyen n €N, é n > 1, Legyenek Uj (i € |1..) tetsadleges véges, nem tires halmazok és szdmossigukat jeldljik ai-vel (0 < 0; = [Ui] < 00). A keresés alaphalmaza legyen U, ahol U = U; xX ... x Un. Ennek tetszdleges eleme felirhato a komponenseivel is, amit a kévetkezdképpen jeldliink w € U esetén: w= (ui,...,tm). A keresett tulajdonség legyen 2, azaz 0: U > L. Ex legyen felbonthat6 o; : U + L (i € [0..)) tulajdonsigok sorozatara, amelyek kielénitik a kivetkez6 négy feltételt: 1. on =; 2 Wu Us ovsalu) + osu) (1 € 10. 1); 3. Vie [Lan]: Wu,v © U : (ij € [Lai] s uj = vj) > oi(u) = a5(0}s 29 30 8._Visszalépéses keresés ADE Dn A tovabbiakban azt fogjuk mondani, hogy o kielégitia fenti négy feltételt, ha felbonthate azok szerint tulajdonsigok sorozatéra. A feltételek kOziil a masodik - rividebben: p41 => 04 - fejeri ki a tulajdonséigok egymasra épiilését, azazz hogy ha egy kezd6szeleten mar elromlott a tulajdonsig, akkor az végig rossz marad. (Ha az els6 négy kirdlyn6 titi egymast, akkor az els6 dt, ... is.) A harmadik feltétel mondja ki, hogy az i. tulajdonsig esak az els6 1 komponenst6l fiigg AA feladat annak eldéntése, hogy létezik-e olyan elem U-ban, amelyre teljesil a o feltétel, és ha igen, adjunk meg egy ilyen elemet. Keltessziik, hogy miutén m az U halmaz egy jel lemz6je, azzal egyiitt implicit adott, ezért. nem kell az Allapottérben kiln komponensként feltiintetni. {gy a feladat allapottere esak eredmény jellegti Komponensekbél 4ll, amelyeket nem szokés a paramétertér részének valasztani. Hllenben paramétertérre saiikséxiink van tehdt vilasszamk annak egy tetszbleges, exy elemil halmazt, A feladat specitikacioja ennels alapjan a kévetker6 A = UxL uel B = {a} Q:t R (1=3v EU: ofv)) AL (we UA o(u)) El6szir feledkezziink ela feladat specialitésair6l, és prObiljuk azt megoldani linedris kere- séshez.hasonldan. Lathat6, hogy nem sok reményiink van a sikerre, hiszen U egy rendezetlen halmag, fgy nem beszélhetiink Altalaban egy clem rakévetker6 elemérdl, ami szilkséges ha a linedris keresés alapjéin szeretnénk eljarni. Bzért elsbként az U halmazt fogiuk rendezetté tenni, mégpedig a komponensei sexftséxével, U minden komponense véges halmaz, igy azok elemeihez hozzrendelhetiink indexeket Az i, komponens elemeihez valasszuk a U,1,...,0j — 1 indexeket, 6s ezekkel jeldljik meg azokat. Ezeket fels6 indexként hasznéljuk a tovabbiakban, igy Us = {u!”),u{"),...,ul"} alakban ithat6, barely 1 € [Lon eset. Bezel lenyepdben az egyes Komponenseket az indexek szerint rendezetté tettiik, igy az U-n is értelmezehetiink egy lexikogratikus rendezést Vegyiik észre, logy most mér tulajdonképpen nines is sziikségiink az elemekre magukra, azok helyett hasznélhat6 az indexiik is, mert az egyértelmtien azonositja a megielelé elemet Az i. komponens esetén alkalmazott: indexelést jeldljik yi-vel, azaz yi : [0..0; ~ 1| + Uy bijekci6. Ezeket felhaszndlva U egy elemét helyettesithetjik n szimmal, a kovetkezdképpen. Legyen V = [0..0)-I]x...x/0.0n—1] 68 9 = (y1,---,n)- Ekkor g : N+ U bijekci6, amely megadja, hogy egy N-beli elem melyik U-beli elemnek felel meg. A tovabbiakban U' helyett Net, és u € U helyett_v = g~'(u)-t fogjuk hasznalni. Ennek eldnye, hogy AV halmazon fértelmezett a lexikogratikus rendezés, igy lehet értelmezni egy elem rikivetkendiét, sot a kisebb relaciot is ‘Az N-beli clemek lexikografikus dsszehasonlitéisa tovabb egyszertsithets, ha az elemeket vegves alapai szdmrendszerben felirt szimoknak tekintjik. A vegyes alapi szémrendszer alapszémainak értelemszertien vilassauk a 01,.-..0n szamokat. zt a hozzdrendelést jeldliik Ffel, azaz: f : N+ Np. A szmelméleth6l ismert, hogy f injektiv, azaz egy N’-beli értéknek: pontosan egy szém felel meg; és egy szdmnak egy AV-beli érték felel meg, ha van ilyen. 31 formnélis definicidja a Kivetker6: YoneQ, abo A bevezetett f segitsézével lexikografikus Osszchasonlitas helyett elég a fiigavény értékeit Ssszehasonlitani, hiszen WU! €N 2 v mo(tv'))) A specifikaicioban A’ helyébe [0..Qy~1]intervallumot is irhattunk volna, hiszen f bijekcio akét halmaz kizatt, és ekkor v helyett f~'(n)-ct kellett volna az utofeltételben szerepeltetni Ebbol az észrevételbdl adodik az is, miként lehetne a Tinedris kereséshez hasonlé médon eljérnunk eben az esetben. Intervallumnak vélaszthatndnk a [0..Qo — l-et, é keressik az els6 olyan n elemét, amely kielégiti a o(e(f*)) feltételt. Igy a linearis kereséshez hasonl6 programot kapnénk, aminek azonban nagy hatranva, hogy f~! szémitisa a kelleténél is bonyolultabbé teszi. Kz a modszer a kévetkez6 programhoz vezetne, amelynek a levezetése a olvasé foladata, A. programban hasznalt bonyolult konverzi6t6l megszabadulhatunk, ha egyb6l NV-beli értékekre irjuk fel a programot. Ekkor azonban iigyelniink kell arra, hogy nines olyan NV beli elem, ami megfelelne —I-nek. {gy at kell alakitani a programot, miutén nem tudunk az ‘kor erre kiln intervallumon kiviilrdl indulni. Szerenesére kezdhetiuk az els6 elemmel, de meg kell vizsuélni a feltétel teljesilését. Az els6 elem a csupa 0 komponen meg, hiszen ehhez rendeli f a 0 szdmot. Legyen ez az elem 29 € NV’, azaz 32 8._Visszalépéses keresés A programban szerepl6n := n+l-nek megfeleltethetjiik a v ndvelését, amit igy tehetiink meg hogy elészir az utols6 pozicién probaljuk azt névelni eggyel, ha nem Iehet, akkor ennck. nullizasa, utén a megelé26 poricion, és fay tovabb. Vezesstik be ehhez a cy € A’ elemet amely mindenitt 0, kivéve az utols6, n, komponenst, azaz én = (0,...,0,1). Eat felhasznatva n= n+1 helyett v = 7 Seq frhat6, abol S-t ax el6bb definidltuk szavakban. Bz helyes hiszen f(v) =n és f(En) Miel6tt tovabbmennénk vezessiik be az ¢; jeldlést, ahiol e; € N (i € [Lonl) és aat az elemet jeldli, amelynek i, komponense 1, az dsszes tobi 0. Maskeppen kifejezve f(ei) = Qi. Kgvetlen teenddnk maradt esak hatra, az n # Qo — 1 feltétel kivéltésa, Sajmos ex nem egysvert feladat, hiszen ez, annak az. eldéntését igényli, hogy: minden komponense eggyel kisebb-o a megfelel6 a értéknél, azaz i € |L..n| : 4; = 0; ~1. A feltétel egyszertibb ellendrzé- sének érdekében bévitsik ki a keresési halmazunkat, é A’ helyett {0,1} x A’ halmazon ke- ressiink. Ebbol a halmazbol a szémunkra fontos értékeket azok jelentik, ametyeknek az els6 komponense 0. Az egayel kezd6d6 elemek érdektelenek, de igy kényelmesen ellendrizhet6 hogy kiléptiink-e a keresés eredeti halmazbol. Ennek megfeleléen az dllapotteret bOvitsik ki egy tij komponenssel, a {0,1} halmazzal, amelyher.tartozzon ac viltoz6, Persze sziikséxes az f fiigavény kiterjesztése is hiszen az most mar f : {0,1} x N+ Ne alakit lesz. Ennek ‘ij definicidia: Flen) =¢#Qo+ dom #Q A © miiveletet is ennek megfelelden kell tjra definiélnunk, azaz, ha mar egyik o sem nd- velhet6, akkor azok nullazdsa utén c értékét kell 1-re Allitani. Igy az n # Qo — 1 feltétel helyeticatheto a c = 0 felttelel. Kigése pontosan a két feltétel nem egyezik meg, hiszen azn < Qo — 1 feltételnek felel meg. Ezért a ciklusmagban, ha @ miivelet utan ¢ = 1 fenndll, akkor mar nem kell ellendrizni p teljesiilését. Az eddigieket dsszegezve a kévetkezd programbor jutnanke x a program még finomitésra szoruina, de ezt nem tessziik meg, mert esak azt akartuk svemléltetni, hogy milyen jellegsi programot kapnénk, ha a linedtis kereséshez hasonl6 mnddon jémmank el. Nem volt hiébaval6 ennck az egyszert viltozatnak a vizsgalata sem, mert kiizben bevezettiik azokat a fogalmakat, amelyeket a visszalépéses keresés elkészitésekor hasznélni fogunk. ‘Tovabbé ez a program {6 dtleteket adhat kOvetkez6 megoldishoz, amelyben mar figyelembe vessziit a 9 tulajdon pe tulajdonsagait megvizsgalva a legfontosabb észrevétel, hogy ha egy adott m € [Ln] fértékre a on, nem teljesi, akkor fOldsleges az m-nél nagyobb pozicibkon nivelni v értékét hiszen azok vathatéan nem befolyasoljak a n-et meghataror6 els6 m értéket. Nyugodtan 33 lehet az m. pozicion viltoztatni az utols6 helyett,feltéve, hogy ezutin csupa 0 érték szerepel Ez az el6z6 program esetén azt jelentené, hogy (¢,¥) := (c,¥) Ben helyett (¢,) := (¢, ¥)Em- et hasznélhatndnk. ‘Lermészetesen ez esak akkor helyes, ha nem ugrunk At szdba johetG értékeket, aminek a biztositéka, hogy az m uténi komponensek értéke a lehetd legkisebb, azaa 0. Exért egésztsilk ki az allpotteret egy jab tipusértékhalmazzal, Np-al, amelyhez, tartozzon az m valtoz6, Ez legyen a legkisebb olyan érték, amelyre &m—1 (‘2(¥)) A70m (ev) teljesil, azaz ax els6 olyan komponens, amelynél megséril 0. A program levezetéséher a mér bemutatott specitikiciot hasanaljuk, és az allapotteret az eddigieknek megfeleléen két komponenssel — c,m — kiegészitjik. Most is ciklussal probal- kozunk, amelynek invariénsa tartalmazza, hogy a jelenlegi v, pontosabban (c, ), el6tt nem fordulhat elé keresett érték, és ha 7 nem megieleld, akkor vagy nines tb vizsgéland6 érték —c=1—, vagy mere teljesiiinek a megkivént feltételek. Ennek alapjén a ciklus invariénsa: Pos (WEN: £0.20) < 0,0") < f(e.v) + of) AL = ofp) ad (c= 1V e=0Am € [Let] Ae (()) A 2m (2(0)) A Vie [m+ 1m] s%j = 0) Ellendrizve a ciklus levezetési szabélyait, Mithatjuk, hogy régtén az els6 nem teljesi hiszen Q # P. Ezért a szokisos médon térjtink at szekvenciéra, amelynek masodik tagia lesz a ciklus, az els6 tagia pedig ey olyan feltételt biztosit, amelyb6l mar Kivetkezile az invaridns. Ha.c = OAv = co teljesti, akkor a v!-nck valaszthat6 értékek halmaza tires, igy az invaridins megfelel6 része fennéill. Viszont. biztositani kell ! = o(y(v))-t, és ha 1 értéke igaz, akkor m értékét is megfeleléen kell megvalasztani. Ezt végezze el a keres({,m,v) mtivelet. Egy kicsit elére tekintve, a ciklusmagban sziikségiink lesz. egy olyan mfiveletre, amely (c.v) ertékét ndveli, mégpedig az elézetes vizsgalataink alapjén egy m € [1.n| pozicién ((c.0) = (6,0) Oem). Nevezziik ext. a miveletet ndvel(c, v,m)-nek. lay vérhatdan a Keres(l,m,v) é8 a nédvel(c,v,m) miiveletekre, illetve az azokat megva- losité programokra lesz sziikségiink. Miel6tt folyatnank a levezetést, oldjuk meg ezeket. a feladatokat. Elészér a keres(I,m,v) miiveletet probiljuk megvalésitani A milveletben hérom viltoz6 jétszik szerepet av, az m és az I, igy az Allapottér hirom Komponensbél All. Tegviik fel, hogy a miivelet végrehajtasa el6tt m-re teljesil, hogy ott romolhat el eldszir a 0, azaz, dm-1(p(v)) fennall. Ennek alapjan a feladat specifikicidja: Ateee = NXNXL vm Breres = AVxN, Queres v=o" Nm=m! Am! € [Ln] A om—1(p()) Reeves v= v" AL = alp(v)) Ant (1m € [rm!.n] A oma (20) A >0m(())) Probilkozzunk cilslussal, amelynek invariénsa kifejezi, hogy mig teljesil 9, és ( adja meg ort az m. komponensig, azaz: Prores 2 V=V" AmE [ml Lan] AL= om(Qlv)) 4 8._Visszalépéses keresés Queree A Pheresy © Queree > Pimllcm™’ 10H, enért szekvencia lesz a megoldas. Ennek ls6 tagia az m,l:= m—I, igaz értékadas, ami helyes, mert biztositja az m = m'—1Al = igaz feltétel teljesilését, és mést nem valtoztat, fgy ezutén mar fennall Peeres Preres A (“LV (LA m= n)) > heres, ez6rt ciklusfeltételnek walaszthato: 1A m # n. ‘A ciklus termindl6 fiiggvénye legyen: n —m. Kz nyilvinval6an pozitiv, ha Pheres Am #m fonnail A terminalo fiiggvény értékét esikkenti az m := m +1 értékadés. Ezért a ciklusmag leaven egy szekvencia, amelynek mésodik tagia m := m +1. Az els6 tagnak biztositania kell Phenes ALAm # n+ PIN! *! teljesilését, és nem szabad megvaltoztatnia m értekét, Mintan Prem! sy =v" Am+ Le [m' —LnJAl= omyi(y(?)), az 1 = Om4i(p(v)) értékadés erre a célra megfelel6. Az eddigiket. dsszegezve a kivetkez6 programot kaptuk megoldasként; Reres(l,m,v) Foglalkozzumk most a nével(c, v,m) miivelettel. Eben az m. pozicién kell névelni (¢,) ertékét, azaz f(c,v}+t kell f(€m)-mel ndvelni, Ezen Kfviil, ha sziikseges m értékét valtoztatni kell tigy, ogy megmutassa a legels6 Komponenst, amit méx véltoztattunk a ndvelés sorén Figyelntink kell arra is, hogy az 1m uténi komponenseknek nullénak kell lenniiik. Igy a feladat speeitikicidja: Aniea = NxM x{0.1} Braud = NxM x ou Hy 5, 0.) Qnoved 2 ¥= amen! Ae=e Ad =O0Am! € [Ln] AWi € [ml + Lan): 44 Ryovet + fle) = flelu!) + flem) Am € [0.m] 6 Wie [m+ Ln]: =OAWE [Lam —I]:4 =f Most is ‘slussal oldjuk meg a feladatot, amelynek invariénsa legyen a kivetkez6: Provet + f(v) +e*Qm = f(e,v") + Em) Am € [0..m'] A Vi € [m+ Lun] sv; = OAVEE [Lm = 1:45 = 0! Qnivet # Priivet, de hae = ¢ Ac = 0 helyébe ¢ = 1-et frunk, akkor mar kivetkezik Paavet. Ext elérhetjik a e:= 1 értékadéssal, azaz eben az. esetben is szekvencia lesz. a megoldas. Paovet\(c = OV (c= LAm = 0)) > Rnavet ez6rtciklusfeltételnek megfelel: e = 1Am £0 termindld fiiggvény legyen m+c. Ennek értéke pozitiv, ha a ciklusfeltétel fennall. m+ éxtékét kétféleképpen lehet esbkenteni, vagy et dlitukuullara, vagy’ m értéket esokkentiilk eggyel 35 ¢ értéke nullira eserélhet6, ha a vp értéke ndvelhet6, azaz Ym, # op — 1. Bhhez esak azt Kell Litni, hogy f(v’ t+) = f(v) + fem), é ha m #0 akkor f(Em) = Qm- Miutén m 5 a tdbbi komponens nem valtozik, fay az invariéns tObbi része igaz marad. Bzzel belattuk: hogy Prove Me= 1 Am £OA Ym # Fm — 1+ UF(C,Ym = 0, +1, Prove) Ha Ym = om — 1, akkor ¢ értéke nem valtoztathato, de m esikkenthet6 egayel, ha mege- WGnden vm érvéket nulldra eseréliiik. Kz helyes, hiszen FO) Fe Qm = FV) + Ym + Om +O# Om = FV) +m Om = fv) +64 Qt nivel Ym +1 = Om A 1a feltételek miatt, 65 Qm—1 Az invaridns miatt m csdkkentése eldtt Vi € [m + L..n] : vj = 0 teljesiil, 6s az értékadas Kévetkeztében Yn = 0 is fennall, ezért ¥i € [mn] : vj = 0 is igaz, Tehét az invariéns megfelel6 része m esikkentése utdn is teljesiilni fog. Igy igazoltuk, hogy Om * Qm a definicié alapjén. Prsvet NE= 1 Am £ON Ym = Om = 1 UF (mM, Yyy = M = 1,0, Priver) Az eldgazas levezetési szabilya alapjin, a két ért¢kaddsb6l a vy = om feltétellel létre- hozott eliigazdsra teljesiilni fog a ciklus levezetési szabilyai kizill a negyedik. A terminal6 fiiggvény értéke mindkét gon csikken, igy az Stddik pont is teliesil. Tehat a kivetkex6 program megoldja a specitikalt feladatot. Uc, usm) eat e=tAme0 Yn = Om —1 J MY = MLO | Yn = Os%m FT ‘Verjiink vissza az ‘eredeti’ feladatra. Laittuk, hogy ciklus helvett szekwencidt kell hasz- nalmunk, amelynek masodik tagia lesz. a ciklus a megadott P invaridnssal, els6 tagia pedig eay szekvencia. Kddigi vizsgélataink alapjén ennek els6 része tartalmazza a e= UAV = feltételt biztosité programot, masodik része pedig.a keres(Im,v) mnivelet. A keres(l,m,) mivelet eldfeltétele tartalmaz megszoritast m-re vonatkoz6an, miszerint dm-1 (ip(v))-nek teljesilnie Kell. Miutén a) =f, exért az m = 1 vilasztis mesfelel6. igy a e,m.v != 0.1.¢ értékadésbél és a keres(I,m,v) miivelet szekvenciajébol allé programot kell a ciklus el6tt végrehajtanunk, ugyanis ezutén mar teljesiin fog a ciklus invariéns dllitésa, P. P els6, v/-re vonatko26 része igaz, hiszen és v valasztésa miatt nines is megfelel6 v/, masodik rész6t pedig a keres(I,m,v) mnivelet utofeltétele, Reeres biztositj. Ciktusfettotetnek vélasrthate 7: Ie = 0, mert ennek ellentetje IV ¢ akkor az invariéns miatt 7 az els6 megfelel6 elem, ezért K fennall, ha pedig ¢ els6 része miatt Yo! € AN’: so(y(v’)) teljesil, azaz nines a feltételnek megfele Paar +R. Termindlé fiiggvénynck megfelel t : Qo — f(e.v), mert ha = fenndll, akkor ¢ = WEN: f0.v) < Qo, tehit Pw t>0. 1, és hal, valor P lem. Igy 36 8._Visszalépéses keresés A ciklusmag legyen egy szekvencia. Ennek els6 része csikkenti t értékét a nével(c,v,m) miivelet segitségével, mésodik része pedig biztositja az invaridns fenndllésat. A szekvencia Kot tagia kozbtt teljesilin a kivetkezd dllitas: Qs WEN: F020) < F007) < fev) + -0(e(')) ALA (c=1ve=0Ame [Lon] A om (v(e)) AVE E [m+ Ln]: 4 = 0) Lathatd, hogy PAw > Qnavet, ezért a ndvel(c, v,) miivelet végrehajthat6 a ciklusmag els6 tagjaként. A miivelet végrehajtésa utn, ha ¢ = 1, akkor (Qf masodik része teljesiil: ha pedig ¢= 0, akkor egyrészt m értéke nem ndhetett, masrészt m > 0 is feunéll, fgy eben az esetben is teljesiil Q” masodik része. Az m > 0 fennallésa nem trivialis, de figyelembe véve. hogy Rnavet-ben szevepel lev) = FC 0") + Heme) AMEE fon + Len]: v5 feltétel, és az el6feltétel miatt m’ > 0, ezért m = 0 azt jelentené, hogy Vi € [.n] 0 azazv Ext visszahelyettesitve kapjuk, hogy f(0,20) = f(e',v")+flEm’), de f(0,20) = 0 68 f(c',v") + fem) > 0, ami ellentmondasra vezet. Q! els6 része is teljestilni fog, hiszen P miatt a ndvel(c, v,m) miiveletben m az els6 olyan komponenst, adja meg ahol a g feltétel elromlik. A o tulajdonségai miatt ezt a komponenst kell eggyel névelni, 6s miutén az ennél nagyobb indexti komponensek nullék, ezzel a Iehet6 legkisebb novelt értékhez jutunk, Ezzel belattuk, hogy P Am > [f(ndvel(c,v,m), Q) Nvilvinval6, hogy Q' Ac = 1+ P. ezért eben az. esetben a ciklusmag misodik részében semmit sem kell tenntink (SKIP). Ha Q' Ac = 0 ll fenn, akkor biztosftani kell egyrésat 1 = olp(v)) teljesiilését, és ha I = hamis, akkor 0m ((V)) A Om—1 (9) AVi € [rm + L..n] = O+t is. Ebben az esetben a keres(l,m,v) elofeltétele, Qreres telesill, ezért a mtivelet alkalmazhaté, Ennek végrehajtasa utén, Rkeres miatt | = o(g(v)) A=l > 2enle)) A %m—1(y(¥)) fennall. Tovabba m értéke sem csikkenhetett, igy Vi € [m + L..n] Ois tees ha’ vewrehatas elit mre ina vol. Az elias leveztes Szabat Felhasndlva at kapjuk, hogy az az eligazas, amely ten a keres(l,m,v)-t, = Lesetén a SKIP programot tartalmazza megoldja a (és P altal meghatérozott feladatot, ‘Az eddigicket dsszegezve, a kivetkez6 programot kaptuk megoldésként ‘000,1 Keres(l,m,v) TAC ndvel(e,vm) e keres(l,m,v) A program még nem teljes, hiszen a keres(I,m,v) miiveletet megvalésité programban szerepel az = Om (e(v)) értékadas. A gm, feltétel rendszerint nem primitty, igy az értékadast exy programmal kell megvalositanunk. Ez a konkrét feladatt6l fiigg, igy errdl most nem ttudunk tobbet mondani. ‘erjink vissza a 8 kirdlynd problémajéra, & vizsgéljuk meg, hogy az miként megismert formalizmus felhasznaliséval. A komponensek szma ekkor nyole, azaz n haté le a An Eig qyes komponenseknek vilasathatjuk az egyes kirélyndk Iehetséges poxcisit, amit lerhatunk egy |0..63|-ba esé szdmmal, ha a sakktabla egyes mez6it megsorszémozzuk. Ennél tudunk jobbat is vlasztani, ha figyelembe vessziik, hogy azonos oszlopokban all6 kirélyndk biztosan iitik egymést. Igy feltehettik, hogy exy oszlopba pontosan egy kirdlyn6 keri, sot miutén a kirélyndk sorrendje tetszéleges, azt is, hogy az els6 kirélyn6t az. cls6 oszlopban, a masodikat a mésodik oszlopban, ..., a nyolcadikat a nyoleadik oszlopban helyezziik el. Bzért_az i komponensnek csak a kirdlyné oszlopon beliili pozici6jat kell megadnia, amit egy (0..7|-beli értékkel, a sor indexével, irhatunk le. (Ez egy lenyeges észrevétel, ugyanis a visszalepéses eresés annél hatékonyabb, miné! kisebb az egyes komponenshalmazok elemszéma, ugyanis ezzel a vizsgélandé lehetdségek szémat - |N'|-t -, csdkkentjiik.) x0 .7]. Eben az esetben U komponenseit nem kell indexelniink, hiszen azokon értelmezett egy természetes indexelés, azaz nem kell hevezetatink et, hiszen y az identitas lenne. Ebben az esetben az dsszes U; halmaz szAmossdga 8, igy Vi € [1.8] : 0) = 8. Mar csak a ot kell megadnunk. Ezt komponensenként tessziik meg. kihasmnélva, hogy az els6 i-+ 1 kirdlyné nem iti egymést, ha az els6 i nem iti egymést, és az i+ 1. nem iiti az els6 i egvikét sem. iay fgy a nyole kirdlynd esetén: U mst oeea(u) = oil) AVG € [La]: nem_fiti(ussrsusé+ 1,3) (C€ 10.77, © =m — abok nem_iitiluisasuj, it 15) = war uy Always — uy] Fit 13. A visszalépéses keresésben o-ra kikitdtt feltételek eben az esetben nyilvénvaloan telje- siilnek. 9. Specialis fiigevények értékeinek kiszdmitasa [A programozésifoladatok jelentds része megfogalmazhat6 figavény segftségevel. Ha er a Tigavényr0l tObbet is tudunk, akkor el6 tudjuk Alitani a megoldé programot. Eben a Iejezetben ilyen speci figgvenyek helyettesiési értekenelekiseAmitasdval fogialkozunk Feltesszitk, hogy a kiszamftand6 fiiggvony f : X — Y alaki. Igy a specifikécié minden esothen A = XxY B @ R y= f(r’) 9.1. Fiiggvény kompozicié Vegyiik fel, hogy f-et felirhatjuk két egyszerdbb fiiggvény kompozicidjaval, azaz vannak olyan hs X + T és g: T + ¥ fiigavények, amelyekre: f = oh. Ebben az esetben { értéke meghatrozhat6 egy svekvencia sexitségével. El6szir az fllapotteret b6vitsiik ki a 7 Ennek segitségével konnyen léthat6, hogy a t := h(x) és y = g(t) értékadasokb6l felépt tett szekvencia megoldja a feladatot. (A formilis levezetést az olvasora hegyjuk.) 9.2. Esetszétvalasztassal megadott fiiggvény Tegyiik fel, hogy a fiiggvény értékét egyszenibb Figgvényekkel tudjule megadni bizonyos feltétlek telesilse esetén, azaz a figgény file) ha m(z) faeh: (Wee Dy) Sal) ha mlx) 38 9.3. Rekuraiv Figgvény 39 alakban irhaté fel, ahol Vi € [Ln]: mj :X— Le (A feliras miatt () [mi] = Dy.) Lithats, hogy Vi € [Ln] : QAm -+ [f(y = file),R), exétt az eligaris leveretési svabilya miatt a kitizitt feladatot megoldja a kivetkez6 program me) . n(x) w= file) ° w= falx) 9.3. Rekurziv fiiggvény ‘Tegviik fel, hogy a fiiggvényt fel tudjuk érni egy rekurziv formula segitségével, amelyben ke > 1 megelGzd érték, valamint egy index seaitséxével meghatérozzuk a kivetkez6 fiigevény- ertéket. Ext adja meg az F:Z x Y* — Y generail6 fiigavény. A kiindulishoz, természetesen saitkseg van k kezdGértékre, amelyek megadjak a ffiggveny értékeit egy rogzitett a € Z indextdl visszamenGen. Legyenek ezek: ta, la—1s.-+sta-us1 € Y. Ezek sepitségevel a fiiggveny felirhaté a kivetkez6képpen: fa = toy fant = tots +++ fockei =tomni1 (konstans figgvenyek) fale) =FU+T fla feel) 2a) fafu (n2a) A feladatot egy ciklussal probéljuk megoldani, amelynek invaridnsa kifejezi, hogy egy indoxre mar ismerjiik f; ért6két és az. el6z6 k — 1 értéket is. A feladat Allapotterét ik egy Z és k—1 ¥ komponenssel. A megfelel6 valtoz6k: i,y-1,...,y-ne1- ‘Tehdt a. invarins Po: QAGEla.n|Ay= file) AV € [Lk 1] 29-5 i) (+ P nem teljesil, exért szekvenciéra tériink t, amelynek masodik tagia lesz a ciklus A kaiiiles Alita: Q: QNi=aAy =H ANGE [LRM iyy Nyilvanval6, hogy Q > Lf (iu. Y—iy..-5Yabs1 = bastante ++ yeni @'), ezért a szek- vencia els6 tagia lehet a megfelelé értékadas. @ vilasztasa miatt Q! -> P teljesil. P Ai =n esetén R is fennall, ezért ciklusfeltételnek megielel: x :i # n. A termindld fiiggvény legyen t : n—i. Ekkor P Ai ¢ n+ t > 0. t értélet csikkenthetjik az ¢:= i+1 értékadassal, hiszen PAx At = t! > Uf(i:= i+, < t!) nyilvan igaz, Ez lithatéan nem elegend6 ciklusmagnak, ezért szdmitsuk ki [f(i:= i+ 1, P)+t Q" + QNi+TE fen] Ay= fies(e) AVG ENR T]s9-5 = firs) Ex nem kivetkezik PA n-bél, de y helyébe Fli + 1,y.t-a,-..sy-esi}et, tovabba y_; helyébe y_j4.-et érva fenndll a kovetkeztetés. Hzért a ciklusmagot alkot6 szekvencia els6 tagia Tegyen a2 yatye+s stoner = FUG + Lote Yaies estate ethos t—ese ertékadas, Ez nem valtoztatia +t, fgy a ciklusmag tovabbra is esbkkenti azt. Kzzel beldittuk, hogy a Kivetkez’ program megoldja a feladatot: 40 9. Speciilis iigavények értékeinek kiszdanitésa BUY Uae = Olas tanty steko izn UeWaty ees Moben S PUF Latte Woke see ot p=itl A gyakorlati alkalmazasok tobbségében a figgvény elsSrendd rekurzi6val adhato meg, azaz k = 1. Kbben az esetben az Allapotteret elég egy HZ komponenssel b6viteni, nines sviikség Oj Y-okra, tehét az y-1,...,y-es1 viltoz6kra. Ekkor a program: ifn y= FU+Ly) 9.4, Elemenkénti feldolgozds Az adatfeldolgozdssal kapesolatos feladatok jelentds része felirhato egy f : X + Y filgg- vény segitségével, ha megfelel6 kikbtéseket tesziink X, Y-ra, illetve f-re. ‘legyiik fel, hogy az adatok halmazokban adottak, é adatok hialmazait kell ezekbdl eldallitani. Ekkor X ele- mei a bemeneti adatoknak megtelel6 halmazok egyiittesét irjak le, Y pedig az. eldallitott halmarokat. Altaléban n > 1 bemeneti és m > 1 kimeneti halmazunk lehet, ezért X n komponens- ol épill fel, amelyek mindegyikthez egy halmaz tipust viltoz6 tartozhat, és Y m hasonlé komponensbél ll. X esetén az. egves Komponensek ugyanolyan alaphalmazbdl keriilhetnek ki, mig ¥ esetén a komponensek eltérhetnek, Ez formalisan (H, Hy,....Hm #0): X=Xx..xXn abo NVC PCH) (Wie [L.n)) Y= x...0 Ye ahol: Yj C P(H;) (vj € [Lm)) Ex art jelenti, hogy x € X olyan n komponensbdl Allé valtoz6, amelynek minden dssze- tevdie egy halmaz tipusti véltoz5. Hasonlé igaz egy y € Y viltozéra. A komponensekre indexek Segitségével hivatkozunk, azazz XS (Hct) abo ry EX, (VEE [Lan Y=(vis-stm) abo: ys EY} (Wj E [Len Vezessink be néhény jeldlést. @ jeldlje azt az X vagy Y tipusti értéket, amelynek minden komponense O; U, illetve Ma komponensenkénti unit, illetve metszetet; azau: O=(0,....0) XUX! = (41 Ua, Us) XAX' = (41 NG, tn NT) A tovabbiakban az f fiigevényre tesziink megszoritasokat, annak érdekében, hogy az ‘kényelmesen” szémolhatd legyen a programokban. A cél, hogy elegend6 legyen az értékeket specials, egy elemd halmazokra meghatarozni, és ezekb0la részekb6l dssze lehessen Allitani a 94, Hlemenkénti feldolgozis 4 teljes halmazokon felvett értéket. Az ilyen tipusti figgvényeket elemenként feldolgozhaténak neverziik. Ehhez sziikséges a bevezetett halmaz n-esek specidlis felbontasa. 9.1, Definieié : (Teljesen diszjunkt felbontas) x € X-nek ¥,X € X teljesen diszjunkt felbontésa, ha Wie[Lal: mUR =a VijelLnl: FF =0 A definici6 szerint egy teljesen diszjunkt felbontasban a komponensek mindegyikét két résrre osztk, és ezek a részek nemesak komponensenként, hanem "keresztbe” is diszjunktak ‘Masképp: a komponenseket gy vagjuk ketté, hogy egy elem a vagis egyik oldalin szerepelhet sak 9.2. Definicié : Az f : X - Y fiiggvény elemenként feldolgozhatd, ha minden x € X barmely X,% € X teljesen disziunkt felbontaséra: F(R) UFR) = fix) A AROS =0 Azokat a feladatokat, amelyeket elemenként feldolgozhaté fiiggvény ir le, elemenkénti feldol- gozdsnak neverziik. Miel6tt rétérnénk ilyen tipusi feladatok megoldaséra, nézziink egy-egy egyszerti példat teljesen diszjunkt felbontasra, illetve elemenként feldolgozhaté fiiggvényre. Legyen n = 2 és m = 1, azaz x = (1,2) és y = n(= y). Tegyiik fel, hogy x = {1,2,3} 6s x2 = {2,4}, azaz x= ({1,2,3}, {2,4}). Bkkor peldaul az X= ({1,2}, {2}) €8 X= (13}, (4}) teljesen diszjunkt, felbontdsa x-nek, hiszen {1,2} U {3} 42}U {4p {1,2} {3} {1,2} {4p {2} {3} 42h Ugyanakkor & = ({1},{2}) é & = ({2,3},{4}) nem teljesen diszjunkt felbontésa x-nek, mort M1 = {2} 7112.3} #0. Megmutatjuk, hogy két halmaz egvesitésének kiszsimitésa elemenkénti feldolgozdsként felfoghatd, azaz f(x) = f(zi,:t2) = 1, Ut» elemenként feldolgozhat6 fligevény. (Az el6z6 példaban f(x) = {1,2,3,4}.) Vegviink egy teszdleges x € X-et és ennek ey tetszfleges X,X € X teljesen diszjunkt felbontasét. A 9.2 definici feltételei fennallnak, mert kihasznalva, hogy most FBUI6 1 UA)U (EU Ua = f(x) £R)NF6 = (8, 1B) U (B, 1Fy) U (He NF) U (Fy Fa) = (a teljesen diszjunktfelbontas miat) Ou0LdUB=0 Az elemenkénti feldolgozsok programjainak eldéllitasa sordn hasznos lesz a kivetkez6 ésrrevrel 2 9. Speciilis iigavények értékeinek kiszdanitésa 9.3. Lemma: Ha f elemenként feldolgozhate fiiggvény, akkor f(0) = 0. Bizonyitas. 0,0 egy teljesen diszjunkt felbontasa O-nek. f elemenként feldolgozhat6, exért teljesiiluek erre a felbontasra is a 9.2 definfci6 feltételei. A masodik miatt: (0) N (0) = 0. Ugyanakkor tetszGleges H halmazra HH = 0, igy az el626 feltételbdl kivetkezik a lemma allitésa. c Az elemenkénti feldolgozdsokat esoportosithatjuk n és m értékei szerint. Két speciélis yakori esetben vezetjiik le a megold6 programot, majd megadjuk az. dltalénos esetet megold6 programsémét. Knnek levezetése, illetve tetsaGleges eset levezetése a bemutatasra keri specialis esetekez hasonl6, azokbol el6éllithat6. Ez az olvasé feladata. 9.4.1, Egy valtozés, egy értékii elemenkénti feldolgozas Ebben az esetben n = 16s m= 1, azaz mind x, mind y egyetlen komponensbl All. Ennek indexét ax egveszertiség kedvéért nem tiintetjtik fel, azaz x= x és y = y jeldlést hasanéiljuk a viltozok, illetve X = X és Y = Y-t a tipusértékhalmazok esetén. A specifikici6 ezekkel a jelblésekkel: 4s no gy ciklussal probéljuk megoldani a feladatot, amelynek invaridnsa kifejezi, hogy y tar talmaza f értékét a mar feldolgozott elemek halmazaira, a feldolgozatlan elemek pedig 2-ben seerepelnek; azaz y = f(x \.r). Miutan « és 2” \x teljesen diszjunkt felbontasa 2'-nek, ezért yU f(z) = fla’) Ayn f(z) = 0. Igy az alébbi invaridns megfelel: Po: f(a')=U f(z) Q A P. exért szekvenciéra van sziikség. Lathatd, hogy QAy = 0+ P fennéll, ezért a svekevencia kbzbills6 Allitésa legyen: Qs Qau=0 A szekvencia els6 tagiinak megfelel az y := @ értékadas, hiszen Q + Uf(y := 0,Q') nyilvénval6an teljesil. A mésodik tag legven a ciklus. A ciklus levezetési szabilvanak els6 pontia fennéll Q' valasztisa miate. PAS(2) =0- R, igy ~w-nek olyan feltételt kell valasztnunk, amelyre teljesil av -9 f(x) = 0 tulajdonség. 9.3 lemma miatt “7 : 2 =) megfelel, azaz x = # 0) jo ciklusfeltetel. ‘A termindl6 figgvény legyen ¢ : [x]. Ennek értéke pocitiv, ha x #0. + értékét esikkenthetjiik, ha 2-bdl elhagyunk egy elemet. Azaz x ha e € . Kz legyen a ciklusmagot alkot6 szekvencia utols6 tagja. Szan vonatkoz6 leggvengébb eloteltételét, és jeldlje ezt (" Q" s cern Pret see x fla’) =yU f(x ~ fet) ~ {e} megfelel suk ki ennek P-re 94, Hlemenkénti feldolgozis 43 wuek {e} és x ~ {ef teljesen diszjunkt felbontasa, ezért f(x) = f({e}) U fle ~ fet) Igy Pre € x + If(y = yO f({e}),Q") teljesiil, tehét a szekvencia megeléz6 tagjdnak y= yU f(fe}) megtelel. Tovébba PAx 4 0 Ifle :€ 2,P Ne € a), eaért a seekvencia els6 tagja legyen e 2€ 2. A szekvencia els6 két tagja nem viltoztatja t értékét, fgy a ciklu levezetési szabvilydinak mind az dt feltétele teljesi Ezzel belattuk, hogy a kivetkez6 program megoldja a kittizdtt feladatot ys #0 eer TID, z= (e} 9.4.2, Két valtozds, egy értékti elemenkénti feldolgoz4s Most n = 2 6s m = 1, azaz X = X, x Xz 6s Y=Y. A mepfelelé valtoz6k legyenek 21,22 illetve y. Jay a specifikicis: A= XxXox¥ 1 my moO By Most is jériunk ef hasoni6an, mint az. e626 esetben, azonban az. invaridns Allités tartal- mazza azt is, hogy (21,22) és (21 \.r1,2 \2) teljesen diszjunkt felbontasa (2',:r5)-nek, Ez ebben az esetben kifejezhets az (24 \ 21) Uta = 6A ay U (xh \ a2) = 0 feltételel. Igy az Pos frit yUF(a1,22) A (24 \ a1) Uae =O Aa U (25 \ 22) =0 Q A P, exért a megolds most is szckvencia, amelynek kézbiils6 Allitisa Q’ : QA y =0, 6s az els6 tag y = 0. Ekkor Q — L(y = 0,Q') 6s Q' — P fennall. PA f(ei.t2) =O R, ezért olyan ciklusfeltételt kell talalni, hogy x > f(ti,2) = 0 fenndlljon. A 9.3 lemma alapjin > : x = 0, azaz 7 : 21 = 0 Arr = 0 megfelel; xia, #OV ay £0. A terminald fliggvény legyen t : |x Uvr2|. Ekkor x + ¢ > 0 fennall. ¢ értékét esokkenthetjik, ha egy elemet tévolitunk el 2; Ur» halmazbél. A ciklusmagot alkot6 szekvencia els6 tagia biztosftsa, hogy € € 1 Ur fennélljon. ‘Tehat a szekvencia zbiils6 allitasa legyen: Q" : Pace a Ure 44 9. Speciilis iigavények értékeinek kiszdanitésa PA(xy 4 Vite #0) + Le s€ (21 Ura), Q"), exert e :€ (271 Usa) lehet a szekvencia els6 tagia. (Figyelem: ez nem dgy értend6, hogy az uniét kiszdmftjuk, hanem, hogy egy olyan elemet vélasztunk — valamilyen médon —, amely eleme valamelvik halmaznak.) A tovabbiakban hérom esetet killinbdztethetiink meg annak alapjén, hogy a kivalasztott ¢ elem melyik halmaznak eleme. i, Hae € Ac ¢ xp, akkor a terminals fliggvény értéke csOkkenthet6 2 = ay ~ {e} értékadassal. Ugyanakkor ({e}.0) és (1 ~ {e},2) teljesen diszjunkt felbontésa (i,22)-nek, ezért y := yU f({e},0) fenntartja az invariéns y-ra vonatkoz6 részét. A teljesen diszjunkt felbontésta vonatkoz6 rész is teljesil x1 := x ~ fe} és a feltétel mia. ii, Hae ¢ x1 Ne € a, akkor t értékét csdkkenti az zp = a2 ~ Je} értékadas. Tovabba (,4e}) € (ri,r2 ~ {e}) teljesen diszjunkt felbontésa (.r1,.r2)-nek, ezért az. invaridns fennall y -= yU f(@,{e}) értekadas utén, iii, Hae € 21 Ae € ap, akkor az 2,22 = 21 & fehay ~ fe} értekadis esdkkenti t ertékst. (Leh, tel) 68 (11 ~ Lel,r2 ~ Jeb) teliesen diszjunkt felbontasa (1 ,r2)-nek exert y = yO f({e}, fe}) fenntartja az invaridnst. A bemutatott harom eset lefedi az dssves Iehetdséget, amely Q" esetén fennallhat, igy az clagazas levezetési szabilya alapjin az adott feltételekb6l és programokbél felépitett elé- gazis lehet a ciklusmagot alkotd szekvencia masodik tagia. Ezzel a kivetkez6 programhoz jutottunk: #0Vm #0 e€ (01 Ua een ANegm | eg heem em Neen UF ({e}, 0 y= yO FO, {e}) y= yO F({e},{e}) ry: & {e} | ene =a = (chine = {e} 9.4.3. Altalénos eset Ebben az esetben x n, y pedig m komponenshél dll. Az nem jelent kiilGndsebb gondot, hogy y tdbb komponensil, mertf-et is fl lehet bontani m komponensre, f = (fi,..-. fm), € ezek utan az egyes komponenseket yj = f(x) alapjén szamithatjuk ki. Azazy == f(...) helyett Yis--sUm t= fal.)s---sfn(--.) alaktt értékadsok szerpelnek a program megfelelé helyén, A program eben az esetben is egy ciklus lesz, amelynek invariénsa kifejeri, hogy 4 tartalmazza.a vizsgalt értékekre a fiiggveny értékét, 65 x’\x és x teljesen diszjunkt felbontasa ¥'-nok Po: fix) =yU f(x) Vij ELL. (a) \ ai) na,

You might also like