Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,

Slides:



Advertisements
Hasonló előadás
Egy szélsőérték feladat és következményei
Advertisements

Sor láncolt ábrázolással
Készítette: Kosztyán Zsolt Tibor
Algebrai struktúrák.
MESTERSÉGES INTELLIGENCIA (ARTIFICIAL INTELLIGENCE)
Az információ olyan új ismeret, amely megszerzőjének szükséges és érthető. Az adat az információ megjelenésének formája.  Az adat lehet: Szöveg Szám Logikai.
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Lambda kalkulus.
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
MI 2003/9 - 1 Alakfelismerés alapproblémája: adott objektumok egy halmaza, továbbá osztályok (kategóriák) egy halmaza. Feladatunk: az objektumokat - valamilyen.
Kötelező alapkérdések
Matematikai logika A diasorozat az Analízis 1. (Mozaik Kiadó 2005.) c. könyvhöz készült. Készítette: Dr. Ábrahám István.
INFOÉRA 2006 Kombinatorika
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
1.) A programfejlesztés hagyományos életciklus modellje és adattípus.
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Euklidészi gyűrűk Definíció.
Algebrai struktúrák 1.
Csoport részcsoport invariáns faktorcsoport részcsoport
Gyűrűk Definíció. Az (R, +, ·) algebrai struktúra gyűrű, ha + és · R-en binér műveletek, valamint I. (R, +) Abel-csoport, II. (R, ·) félcsoport, és III.
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Visual Basic for Application (VBA)
Bernoulli Egyenlőtlenség
Programozás II. 3. Gyakorlat C++ alapok.
Bizonyítások Harmath Zsolt.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
A digitális számítás elmélete
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
Év eleji információk Előadó: Hosszú Ferenc II. em Konzultáció: Szerda 9:50 – 10:35 II. em
Differenciál számítás
Lineáris algebra Mátrixok, determinánsok, lineáris egyenletrendszerek
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:
A számfogalom bővítése
Asszimptotikus viszonyok. Asszimptotikus viszonyok számításánál felhasználható ismeretek: 1.Az asszimptotikus viszonyok reláció-tulajdonságai: A következő.
ISZAM III.évf. részére Bunkóczi László
Halmazelmélet és matematikai logika
A digitális számítás elmélete
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
Halmazok Tanítás.
Az If függvény és a Feltételes Formázás az Excelben
„Házasodj meg, meg fogod bánni; ne házasodj meg, azt is meg fogod bánni; házasodj vagy ne házasodj, mindkettőt meg fogod bánni; vagy megházasodsz, vagy.
Vektorterek Definíció. Legyen V Abel-csoport, F test, továbbá
Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás. Adott egy N elemű közösen használt tároló, N  1. Adott a folyamatoknak.
Készítette: Hanics Anikó. Az algoritmus elve: Kezdetben legyen n db kék fa, azaz a gráf minden csúcsa egy-egy (egy pontból álló) kék fa, és legyen minden.
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
Egyenesvonalú (lineáris) adatszerkezetek
Lineáris algebra.
1 Vektorok, mátrixok.
Kijelentések könyve: mindegyik oldalon egy kijelentés. Egyes igaz kijelentések axiómák. Az axiómákból bizonyítható kijelentések mind igazak, és a cáfolható.
Algebrai struktúrák: csoport, gyűrű, test. RSA Cryptosystem/ Titkosítási rendszer Rivest, Shamir, Adelman (1978) RSA a neten leggyakrabban használt.
A MATEMATIKA FELÉPÍTÉSÉNEK ELEMEI
A folytonosság Digitális tananyag.
Többdimenziós valószínűségi eloszlások
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Paraméter továbbítás. (parameter passing) Paraméteres specifikációk: Pl.: string(spec) : hasonló specifikációk családja; string(nat); string(data); string(integer);
Iteráció, rekurzió, indukció. Iteráció iterációs módszer –egy adott műveletsort egymás után, többször végrehajtani megvalósítás –ciklusokkal pl. –hatványozás.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Félcsoport (semigroup) = ({s},{ *: s s  s [infix]}. semigroup is a type specification = sorts: s oprs: *: s s  s [infix] eqns: m 1, m 2, m 3  s (m 1.
Paraméterátadó-morfizmus diagramja: p: tartalmazás SPEC SPEC 1 h : SPEC  SPEC' h 1 : SPEC 1  SPEC 1 ' SPEC' SPEC 1 ' p': tartalmazás SPEC: paraméter.
Példa. Az ábrázolás szemléltetése.  = ({stack, elem },{ create :  stack; push : stack elem  stack}),  = ( {vector, nat, elem}, { create c :  vector.
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
Dinamikus adatszerkezetek
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Absztrakt problémák Q  I  S, az absztrakt probléma kétváltozós reláció az esetek (I) és a megoldások (S) halmazán Példa: legrövidebb út Eset: gráf és.
Előadás másolata:

Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,..., C m }; F = {f 0 :  A 0,..., f i : A j...A k  A /,... }; G = {g 0 :  C 0,..., g i : C j... C k  C /,... }; Az absztrakt és konkrét objektumok az egymáshoz való viszonya:  : C  A  = (  0,...,  n ), ahol  0 : C 0  A 0 ;  1 : C 1  A 1 ;...;  n : C n  A n ; Definíció. A C objektumhalmazt az A objektumhalmaz egy reprezentánsának nevezzük az adott  mellett, ha minden a  A objektumnak létezik legalább egy c  C reprezentánsa, azaz a =  (c).

Tétel (reprezentáció tétele). Adva d a absztrakt és d c konkrét typusspecifikációk azonos szingatúrával.  : C  A morfizmus. F c  F a konstrukciós műveletek halmaza. Feltevés:  f c  F c konstrukciós műveletre fennáll a  A  f c (a)  A  c  C  g c (c)  C  a =  (c), esetén: Állítás. Ha (  c  C  f c  F c )(f c (  (c)) =  (g c (c))), akkor C objektumhalmaz az A egy reprezentációja. Bizonyítás. Strukturális indukcióval: Alapeset : a = f 0. f 0  A 0, g 0  C 0, feltevésünk szerint f 0 =  (g0). (Tehát a = f 0 esetén létezik olyan c  C 0, hogy a =  (c)). Indukció: a' = f c (a), ahol feltesszük, hogy a =  (c) és c  C 0. Tehát a' = f c (  (c)) és művelettartásra vonatkozó feltevésünk alapján: a'=  (g c (c)), és c' = g c (c) választás mellett a' =  (c') és c'  C 0.

A reprezentációs függvény implicit definíciója: f 0 =  (g 0 ); (  f c  F c )( f c (  (c)) =  (g c (c))); A reprezentációs függvény rekurzív (explicit) definíciója: Tegyük fel, hogy c = g c (g s ( c)). Ennek alapján a reprezentációs függvény rekurzív definíciója:  (c) = if c = g 0 then f 0 else f c (  ( g s (c) )). Jelölés az osztály morfizmus diagramjában. body = oprs: rep : C  A eqns: c  C; f 0 : g 0 f c (c): g c (c)

A vermet egy vektorban tároljuk és egy mutató a veremben lévő elemek számát mutatja.. body = oprs: rep: vector nat  stack eqns: v  vector, m  nat, e  elem; create = (nil,0); push(v,m,e) = (put(v,succ(m),e),succ(m)); end stack; (create c, push c (v,u,m)) Explicit definíció:  (v,m)= if m = 0 then (nil,0) else (insert(  (v,prec(m)),access(v,m)),m)

Néhány gyakorló példa származtatásra. or: bool bool  bool; b 1, b 2  bool; Axióma:b 1 or b 2 = ~(~b 1  ~b 2 ); Tétel: b 1 or T = T; Bizonyítás: (b 1 or b 2 = ~(~b 1  ~ b 2 ))  (b 1 or T = ~(~b 1  ~T))  (b 1 or T = ~(~b 1  F))  (b 1 or T = ~(F))  (b 1 or T = T ). b2 Tb2 T ~ F  T~b 1  F  F

Tétel:(e  s \{a}) = if a=e then "false" else e  s fi; Egyenlőség axióma: b 1 = b 2  (b 1 = "true"  b 2 = "true")  (b 1 = "false"  b 2 = "false") Axióma: (e  s  {a}) = if a=e then "true" else e  s fi; Bizonyítás. Alapeset. s = { }, bal oldal: e  (s\{ }) = e  s jobb oldal: e  s  ~ (e  { }) = e  s Indukció. s = s'  {a} bal oldal: b  (s\ (s'  {a})) = b  ((s\s')\ {a}) = if a=b then "false" else b  (s\s') fi; jobb oldal: b  s  ~b  (s'  {a}) = if a = b then b  s  ~"true" else b  s  ~b  s' fi = if a =b then "false" else b  (s\s') fi;

Példa. Bizonyítsuk be: add(k, add(n,m)) = add(add(k,n),m) tételt. alap eset : k = zerus ; add(k, add(n,m)) = add(add(k,n),m)  (add(zerus, add(n,m)) = add(add(zerus,n),m)  (add(n,m)) = add(add(zerus,n),m)  add(n,m) = add(n,m)  T. k  zerus add(zerus, add(n,m))  add(n,m) add(zerus,n)  n

Indukciós lépés: k= succ(k'); k'-re igaz. add(k, add(n,m)) = add(add(k,n),m)  add(succ(k'), add(n,m)) = add(add(succ(k'),n),m)  succ(add(k', add(n,m)) = add(succ(add(k',n)),m)  succ(add(k', add(n,m)) = succ(add(add(k',n),m))  succ(add(add(k',n),m)) = succ(add(add(k',n),m))  T k  succ(k') add(succ(a), b)  succ(add(a, b)) add(k',add(n,m))  add(add(k',n),m)

Kettős specifikáció: e par exp i = eb imp bod ib absztrakt specifikáció konkrét specifikáció

Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,..., C m }; F = {f 0 :  A 0,..., f i : A j...A k  A /,... }; G = {g 0 :  C 0,..., g i : C j... C k  C /,... }; Az absztrakt és konkrét objektumok az egymáshoz való viszonya:  : C  A  = (  0,...,  n ), ahol  0 : C 0  A 0 ;  1 : C 1  A 1 ;...;  n : C n  A n ; Definíció. A C objektumhalmazt az A objektumhalmaz egy reprezentánsának nevezzük az adott  mellett, ha minden a  A objektumnak létezik legalább egy c  C reprezentánsa, azaz a =  (c).

Tétel. Adva d a absztrakt és d c konkrét típusspecifikációk azonos szingatúrával.  : C  A morfizmus. F c  F a konstrukciós műveletek halmaza. Feltevés:  f c  F c konstrukciós műveletre fennáll a  A  f c (a)  A  c  C  g c (c)  C  a =  (c). Állítás. Ha (  c  C  f c  F c )(f c (  (c)) =  (g c (c))), akkor C objektumhalmaz az A egy reprezentációja. Bizonyítás. Strukturális indukcióval: Alapeset : a = f 0. f 0  A 0, g 0  C 0, feltevésünk szerint f 0 =  (g0). (Tehát a = f 0 esetén létezik olyan c  C 0, hogy a =  (c)). Indukció: a' = f c (a), ahol feltesszük, hogy a =  (c) és c  C 0. Tehát a' = f c (  (c)) és művelettartásra vonatkozó feltevésünk alapján: a'=  (g c (c)), és c' = g c (c) választás mellett a' =  (c') és c'  C 0.

A reprezentációs függvény implicit definíciója: f 0 =  (g 0 ); (  f c  F c )( f c (  (c)) =  (g c (c))); A reprezentációs függvény rekurzív (explicit) definíciója: Tegyük fel, hogy c = g c (g s ( c)). Ennek alapján a reprezentációs függvény rekurzív definíciója:  (c) = if c = g 0 then f 0 else f c (  ( g s (c) )). Jelölés az osztály morfizmus diagramjában. body = oprs: rep : C  A eqns: c  C; f 0 : g 0 f c (c): g c (c)

A vermet egy vektorban tároljuk és egy mutató a veremben lévő elemek számát mutatja.. body = oprs: rep: vector nat  stack eqns: v  vector, m  nat, e  elem; create = (nil,0); push(v,m,e) = (put(v,succ(m),e),succ(m)); end stack; (create c, push c (v,u,m)) Explicit definíció:  (v,m)= if m = 0 then (nil,0) else (insert(  (v,prec(m)),access(v,m)),m)

Adva a halmaz következő informális specifikációja: Konstrukciós műveletek: { } : üres halmaz előállítása. {e} : egy e elemből álló halmaz előállítása. h  h': két halmaz összes különböző elemének egy halmazban való egyesítése. Nem konstrukciós műveletek: h \ h': a h halmazból a h' halmaz elemeinek kitörléseként kapott halmaz előállítása. e  h : ha e eleme a h halmaznak akkor "igaz", különben pedig "hamis" értéket ad. |h| : a h halmazban lévő elemek száma. A halmazban legfeljebb n  0 elem lehet. Legyen a halmaz neve set.

Legyen a halmaz ábrázolása: vector  nat  set, ahol a vector máveletei a szokásosak: nil; v[i]::= e; v[i]; shift L (v); Adjuk meg a reprezentációs függvény két különböző rekurzív definícióját ( a vektorban az első illetve az utolsó elem felhasználásával) és bizonyítsuk be a két reprezentációs függvény egyenlőségét.

shift L (v) művelet. shift L : vector  vector; shift L (nil) = nil shift L (v[i]::= d) = if i = succ(zerus) then shift L (v) else shift L (v)[prec(i)] ::= v[i] fi; shift L (nil) = nil shift L (put(v,i,d)) = if i = succ(zerus) then shift L (v) else put(shift L (v), prec(i), d) fi; b.) A reprezentációs függvény két rekurzív definíciója:  m (v,m) = if m = 0 then {} else  m (v,prec(m))  {v[m]} fi;  1 (v,m) = if m = 0 then {} else  1 (shift L (v),prec(m))  {v[succ(zerus)]} fi;

b.) Feltevés: m  m'  1  1(v,m') =  m(v,m') = {v[1],..., v[m']} Legyen m' = prec(m). Ekkor (feltevésünk szerint):  1 (shift L (v),m') =  m (shift L (v),m').  1 (v,m) =  1 (shift L (v).prec(m))  {v[1]} = {v[2],..., v[succ(m')]}  {v[1]} = {v[1],..., v[m]}.  m (v,m) =  m (v,prec(m))  {v[m]} = {v[1],..., v[prec(m)]}  {v[m]} = {v[1],..., v[m]}. az egyenlőség az egyenlőségi axióma alapján teljesül.