Multihalmaz, intervallumhalmaz

Hasonló dokumentumok
Halmaz típus Értékhalmaz:

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

Informatikai tehetséggondozás:

Informatikai tehetséggondozás:

Algoritmizálás, adatmodellezés 1. előadás

Algoritmusok és adatszerkezetek I. 1. előadás

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek II. 10. előadás

Algoritmizálás, adatmodellezés 1. előadás

Adatszerkezetek I. 1. előadás

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Visszalépéses kiválogatás

Hatékonyság 1. előadás

Összetett programozási tételek

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

Térinformatikai algoritmusok Elemi algoritmusok

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

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

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

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

Struktúra nélküli adatszerkezetek

Térinformatikai algoritmusok Elemi algoritmusok

1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata.

Egy halmazt elemei megadásával tekintünk ismertnek. Az elemeket felsorolással,vagy ha lehet a rájuk jellemző közös tulajdonság megadásával adunk meg.

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Kombinatorikai algoritmusok. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Adatbázis rendszerek Gy: Algoritmusok C-ben

Informatikai tehetséggondozás:

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

ELEMI PROGRAMOZÁSI TÉTELEK

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

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

Kombinatorikai algoritmusok

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Programozási tételek általánosítása 2. Szlávi Péter 2015

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

Hatékonyság 2. előadás

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Egyszerű programozási tételek

Adatszerkezetek I. 4. előadás

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

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Informatikai tehetséggondozás:

Összetett programozási tételek 2.

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Algoritmizálás és adatmodellezés 2. előadás

Adatszerkezetek II. 1. előadás

Algoritmusok és adatszerkezetek I. 3. előadás

Haladó rendezések. PPT 2007/2008 tavasz.

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Számítógépes döntéstámogatás. Genetikus algoritmusok

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

PROGRAMOZÁSI TÉTELEK

Rendezések. Összehasonlító rendezések

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Fák 3. előadás. (Horváth Gyula anyagai felhasználásával)

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

DiMat II Végtelen halmazok

Maximum kiválasztás tömbben

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Közismereti informatika I. 4. előadás

Matematika alapjai; Feladatok

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

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

Fraktálok. Klasszikus fraktálpéldák I. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék




RENDEZÉSEK, TOVÁBBI PROGRAMOZÁSI TÉTELEK

Készítette: Ernyei Kitti. Halmazok

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

A 2007/2008 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. II. (programozás) kategória

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

Mohó stratégia. Feladat: Megoldás:

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

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Programozási tételek. Dr. Iványi Péter

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Bevezetés a programozásba I.

2) = 0 ahol x 1 és x 2 az ax 2 + bx + c = 0 ( a,b, c R és a 0 )

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Programozás II. előadás

Adatszerkezetek I. 9. előadás





A 2015/2016 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

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

Algoritmusok és adatszerkezetek I. 4. előadás

Informatikai tehetséggondozás:

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Amortizációs költségelemzés

Átírás:

Multihalmaz, intervallumhalmaz

Halmaz féleségek 1. Halmaz Gyümölcsök: {alma,körte,szilva,barack} 2. Multihalmaz Állatok: {(macska,4),(rigó,2),(galamb,3)} 3. Intervallumhalmaz diszjunkt Óráim: {[8-10],[13-14],[16-20)} 4. Intervallumhalmaz Események: {[9-11],[16-22],[17-18],[20-25]} Zsakó László: Halmazok 2018. 03. 05. 14:25 2/32

Multihalmaz típus ábrázolása Darabszám vektor Multihalmaz(Elemtípus)=Tömb(Min'Elemtípus.. Max'Elemtípus:Egész) Vegyünk fel egy annyi elemből álló sorozatot, amennyi a multihalmaz lehetséges elem fajtáinak száma! Legyen az i. elem x értékű, ha az i. lehetséges elem x-szer van benne van a multihalmazban, illetve 0, ha nincs benne! Zsakó László: Halmazok 2018. 03. 05. 14:25 3/32

Multihalmaz típus ábrázolása Beolvasás(Változó a: Multihalmaz(Elemtípus)): Be: db [a multihalmaz elemszáma] Ciklus i=1-től db-ig Be: érték,multi; a[érték]:=multi Eljárás vége. Műveletigény számítása: A ciklus a multihalmaz elemértékeinek számaszor fut le, azaz a futási idő a multihalmaz elemszámával arányos. A többi elemet azonban 0-ra kell állítani, ha a nyelv nem tudja. Zsakó László: Halmazok 2018. 03. 05. 14:25 4/32

Multihalmaz típus ábrázolása Kiírás(Konstans a: Multihalmaz(Elemtípus)): Ciklus i=min'elemtípus-tól Max'Elemtípus-ig Ha a[i]>0 akkor Ki: i,a[i] Eljárás vége. Műveletigény számítása: A ciklus a multihalmaz elemtípusának számosságaszor fut le, azaz a futási idő a multihalmaz elemeinek maximális számával arányos. Zsakó László: Halmazok 2018. 03. 05. 14:25 5/32

Multihalmaz típus ábrázolása Üres(Változó a: Multihalmaz(Elemtípus)): Ciklus i=min'elemtípus-tól Max'Elemtípus-ig a[i]:=0 Eljárás vége. Műveletigény számítása: A ciklus a multihalmaz elemtípusának számosságaszor fut le, azaz a futási idő a multihalmaz elemeinek maximális számával arányos. Zsakó László: Halmazok 2018. 03. 05. 14:25 6/32

Multihalmaz típus ábrázolása Üres?(konstans a: Multihalmaz(Elemtípus)): i:=min'elemtípus Ciklus amíg i Max'Elemtípus és a[i]=0 i:=i+1 Üres?:=(i>Max'Elemtípus) Eljárás vége. Műveletigény számítása: A ciklus a multihalmaz elemtípusának számosságaszor fut le, azaz a futási idő a multihalmaz elemeinek maximális számával arányos. Zsakó László: Halmazok 2018. 03. 05. 14:25 7/32

Multihalmaz típus ábrázolása Multihalmazba(Változó a: Multihalmaz(Elemtípus), Konstans e: Elemtípus): a[e]:=a[e]+1 Eljárás vége. Műveletigény számítása: Nem függ a multihalmaz elemszámától. Zsakó László: Halmazok 2018. 03. 05. 14:25 8/32

Multihalmaz típus ábrázolása Multihalmazból(Változó a: Multihalmaz(Elemtípus), Konstans e: Elemtípus): Ha a[e]>0 akkor a[e]:=a[e]-1 Eljárás vége. Műveletigény számítása: Nem függ a multihalmaz elemszámától. Zsakó László: Halmazok 2018. 03. 05. 14:25 9/32

Multihalmaz típus ábrázolása eleme(konstans e: Elemtípus, a: Multihalmaz(Elemtípus)): eleme:=a[e]>0 Függvény vége. Műveletigény számítása: Nem függ a multihalmaz elemszámától. Zsakó László: Halmazok 2018. 03. 05. 14:25 10/32

Multihalmaz típus ábrázolása multiplicitás(konstans e: Elemtípus, a: Multihalmaz(Elemtípus)): multiplicitás:=a[e] Függvény vége. Műveletigény számítása: Nem függ a multihalmaz elemszámától. Zsakó László: Halmazok 2018. 03. 05. 14:25 11/32

Multihalmaz típus ábrázolása része(konstans a,b: Multihalmaz(Elemtípus)) i:=min Elemtípus Ciklus amíg i Max Elemtípus és a[i] b[i] i:=i+1 része:=i>max Elemtípus Függvény vége. Műveletigény számítása: A futási idő a multihalmaz elemtípusa számosságával arányos. Zsakó László: Halmazok 2018. 03. 05. 14:25 12/32

Multihalmaz típus ábrázolása unió(konstans a,b: Multihalmaz(Elemtípus)): Ciklus i=min Elemtípus-től Max Elemtípus-ig c[i]:=a[i]+b[i] unió:=c Operátor vége. Műveletigény számítása: A futási idő a multihalmaz elemtípusa számosságával arányos. Zsakó László: Halmazok 2018. 03. 05. 14:25 13/32

Multihalmaz típus ábrázolása max(konstans a,b: Multihalmaz(Elemtípus)): Ciklus i=min Elemtípus-től Max Elemtípus-ig Ha a[i] b[i] akkor c[i]:=a[i] különben c[i]:=b[i] max:=c Operátor vége. Műveletigény számítása: A futási idő a multihalmaz elemtípusa számosságával arányos. Zsakó László: Halmazok 2018. 03. 05. 14:25 14/32

Multihalmaz típus ábrázolása metszet(konstans a,b: Multihalmaz(Elemtípus)): Ciklus i=min Elemtípus-től Max Elemtípus-ig Ha a[i] b[i] akkor c[i]:=b[i] különben c[i]:=a[i] metszet:=c Operátor vége. Műveletigény számítása: A futási idő a multihalmaz elemtípusa számosságával arányos. Zsakó László: Halmazok 2018. 03. 05. 14:25 15/32

Intervallumhalmaz nem diszjunkt intervallumokkal Sok esetben az intervallumhalmaz célja annak megadása, hogy mely elemek nem tartoznak egyetlen intervallumba sem, mely elemek vannak a lehető legtöbb intervallumban,... Ábrázolás Megadhatjuk az intervallumai számát, valamint az egyes intervallumai kezdő- és végpontjait. Vehetünk egy tömböt, amit az intervallumhalmaz lehetséges elemeinek intervallumával indexelünk. A tömb minden elemében azt tároljuk, hogy az adott elem hány intervallumnak eleme. Zsakó László: Halmazok 2018. 03. 05. 14:25 16/32

Intervallumhalmaz nem diszjunkt intervallumokkal Típus IntHalmaz=Rekord( db: Egész, kezd,vég: Tömb(1..Maxdb,egész)) A halmaz beolvasása egyszerű: Be: IH.db Ciklus i=1-től IH.db-ig Be: IH.kezd[i],IH.vég[i] Ha azonban ezek után arra lennénk kíváncsiak, hogy egy [a,b] intervallum mely elemei nem tartoznak egy intervallumba sem, Zsakó László: Halmazok 2018. 03. 05. 14:25 17/32

Intervallumhalmaz nem diszjunkt intervallumokkal akkor pl. az alábbi megoldást választhatnánk: db:=0 Ciklus i=a-tól b-ig j:=1 Ciklus amíg j IH.db és (IH.kezd[j]>i vagy IH.vég[j]<i) j:=j+1 Ha j>ih.db akkor db:=db+1 A futási idő (b-a+1)* az intervallumok száma. Zsakó László: Halmazok 2018. 03. 05. 14:25 18/32

Ábrázolás Intervallumhalmaz nem diszjunkt intervallumokkal Vehetünk egy tömböt, amit az intervallumhalmaz lehetséges elemeinek intervallumával indexelünk. A tömb minden elemében azt tároljuk, hogy az adott elem hány intervallumnak eleme. Zsakó László: Halmazok 2018. 03. 05. 14:25 19/32

Intervallumhalmaz nem diszjunkt intervallumokkal Típus IntHalmaz=Tömb(Min Elem..Max Elem,egész) A halmaz beolvasása sokkal lassúbb: Be: db; IH:=(0,...,0) Ciklus i=1-től db-ig Be: kezd,vég Ciklus j=kezd-től vég-ig IH[j]:=IH[j]+1 Zsakó László: Halmazok 2018. 03. 05. 14:25 20/32

Intervallumhalmaz nem diszjunkt intervallumokkal Ha azonban ezek után arra lennénk kíváncsiak, hogy egy [a,b] intervallum mely elemei nem tartoznak a halmaz egy intervallumába sem, akkor pl. az alábbi megoldást választhatnánk: db:=0 Ciklus i=a-tól b-ig Ha IH[i]=0 akkor db:=db+1; x[db]:=i A futási idő (b-a+1). Zsakó László: Halmazok 2018. 03. 05. 14:25 21/32

Intervallumhalmaz nem diszjunkt intervallumokkal Sok további feladat megoldható ezzel az ábrázolással, pl: a leghosszabb intervallum, amely nem fedi át a halmaz egy intervallumát sem, egy adott elem maximum hány intervallumban lehet benne, azon intervallumok száma, amelyek maximális számú elemet tartalmaznak, azon intervallumok, amelyek elemei a halmaz pontosan egy intervallumának elemei. Zsakó László: Halmazok 2018. 03. 05. 14:25 22/32

Ábrázolás Intervallumhalmaz nem diszjunkt intervallumokkal Vehetünk egy tömböt, amit az intervallumhalmaz lehetséges elemeinek intervallumával indexelünk. A tömb minden elemében azt tároljuk, hogy az adott elem hánnyal több intervallumnak eleme, mint az előző elem. Zsakó László: Halmazok 2018. 03. 05. 14:25 23/32

Intervallumhalmaz nem diszjunkt intervallumokkal Típus IntHalmaz=Tömb(Min Elem..Max Elem,egész) A halmaz beolvasása úja gyors: Be: db; IH:=(0,...,0) Ciklus i=1-től db-ig Be: kezd,vég IH[kezd]:=IH[kezd]+1 IH[vég+1]:=IH[vég+1]-1 Zsakó László: Halmazok 2018. 03. 05. 14:25 24/32

Intervallumhalmaz nem diszjunkt intervallumokkal Ha azonban ezek után arra lennénk kíváncsiak, hogy egy [a,b] intervallum mely elemei nem tartoznak a halmaz egy intervallumába sem, akkor pl. az alábbi megoldást választhatnánk: db:=0; S:=0; Ciklus i=a-tól b-ig S:=S+IH[i] Ha S=0 akkor db:=db+1 Ha S<0 akkor db:=0 A futási idő (b-a+1). Zsakó László: Halmazok 2018. 03. 05. 14:25 25/32

Intervallumhalmaz Intervallumhalmaz típus ábrázolása Elemei: diszjunkt intervallumok, növekvő sorrendben. Műveletei: beolvasás, kiírás, üresre állítás, üres-e?, eleme, unió, metszet, különbség. Típus IntHalmaz=Rekord( db: Egész, kezd,vég: Tömb(1..maxdb,Egész)) Beolvasása a kezd és vég tömbök beolvasása, kiírása pedig ezen tömbök kiírása. Zsakó László: Halmazok 2018. 03. 05. 14:25 26/32

Intervallumhalmaz típus ábrázolása Eleme(a,IH): e:=1; u:=ih.db; k:=(e+u)/2 Ciklus amíg e u és (a<ih.kezd[k] vagy b>ih.vég[k]) Ha a<ih.kezd[k] akkor u:=k-1 különben e:=k+1 k:=(e+u)/2 Eleme:=e u Függvény vége. Logaritmikus keresés elve. Zsakó László: Halmazok 2018. 03. 05. 14:25 27/32

Intervallumhalmaz típus ábrázolása Metszet(IH,JH): i:=1; j:=1; k:=0 Ciklus amíg i IH.db és j JH.db Elágazás IH.vég[i]<JH.kezd[j] esetén i:=i+1 JH.vég[j]<IH.kezd[i] esetén j:=j+1 egyéb esetben k:=k+1 KH.kezd[k]:=max(IH.kezd[i],JH.kezd[j]) KH.vég[k]:=min(IH.vég[i],JH.vég[j])... Zsakó László: Halmazok 2018. 03. 05. 14:25 28/32

Intervallumhalmaz típus ábrázolása... Elágazás IH.vég[i]<JH.vég[j] esetén i:=i+1 IH.vég[i]>JH.vég[j] esetén j:=j+1 egyéb esetben i:=i+1; j:=j+1 Elágazás vége KH.db:=k metszet:=kh Függvény vége. Összefutattás elve. Zsakó László: Halmazok 2018. 03. 05. 14:25 29/32

Intervallumhalmaz típus ábrázolása Unió(IH,JH): i:=1; j:=1; k:=1; Végükre őrző elem KH.kezd[k]:=min(IH.kezd[i],JH.kezd[j]) Ciklus amíg i IH.db+1 és j JH.db+1 Elágazás IH.vég[i]<JH.kezd[j] esetén KH.vég[k]:=IH.vég[i]; i:=i+1; k:=k+1 KH.kezd[k]:=min(IH.kezd[i],JH.kezd[j]) JH.vég[j]<IH.kezd[i] esetén KH.vég[k]:=JH.vég[j]; j:=j+1; k:=k+1 KH.kezd[k]:=min(IH.kezd[i],JH.kezd[j])... Zsakó László: Halmazok 2018. 03. 05. 14:25 30/32

Intervallumhalmaz típus ábrázolása... IH.vég[i]<JH.vég[j] esetén i:=i+1 IH.vég[i]>JH.vég[j] esetén j:=j+1 egyéb esetben KH.vég[k]:=JH.vég[j]; j:=j+1; i:=i+1; k:=k+1 KH.kezd[k]:=min(IH.kezd[i],JH.kezd[j]) Elágazás vége KH.db:=k-1 Unió:=KH Függvény vége. Összefutattás elve. Zsakó László: Halmazok 2018. 03. 05. 14:25 31/32

Multihalmaz, intervallumhalmaz