Halmaz, multihalmazalgtan1.elte.hu/downloads/eloadas/Halmaz1.pdfHalmaz típus 2020. 09. 28. 13:20...

52
Halmaz, multihalmaz

Transcript of Halmaz, multihalmazalgtan1.elte.hu/downloads/eloadas/Halmaz1.pdfHalmaz típus 2020. 09. 28. 13:20...

  • Halmaz, multihalmaz

  • 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]}

    2020. 09. 28. 13:20Zsakó László: Halmazok 2/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus

    2020. 09. 28. 13:20

    Értékhalmaz:

    Az alaphalmaz (amely az Elemtípus által van meghatározva)

    iteráltja („mely elemek lehetnek benne a halmazban”).

    Az Elemtípus általában valamely véges diszkrét típus lehet,

    legtöbbször még az elemszámát is korlátozzák (

  • Halmaz típus

    2020. 09. 28. 13:20

    Műveletek

    metszet ()

    unió ()

    különbség (–)

    komplemens

    eleme (egy elem benne van-e a halmazban) ()

    része (egyik halmaz részhalmaza-e a másiknak) ()

    Zsakó László: Halmazok 4/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus

    2020. 09. 28. 13:20

    Műveletek

    Halmazba (elem hozzá vétele egy halmazhoz): H:=He}

    Halmazból (elem elhagyása egy halmazból): H:=H–e}

    Beolvasás (halmaz beolvasása)

    Kiírás (halmaz kiírása),

    Üres (üres halmaz létrehozás eljárás), vagy

    Üres'Halmaztípus előre definiált konstans

    Üres? (logikai értékű függvény).

    Zsakó László: Halmazok 5/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Elemek felsorolása

    Halmaz(Elemtípus)=Rekord(db: Egész,

    elem: Tömb(1..MaxDb:Elemtípus))

    A halmaz elemeinek felsorolásával adjuk meg a halmazt, annyi

    elemű tömbben, ahány elemű éppen a halmaz (pontosabban

    az első db darab elemében).

    Zsakó László: Halmazok 6/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Beolvasás(Változó a: Halmaz(Elemtípus)):

    Be: a.db [a halmaz elemszáma]

    Ciklus i=1-től a.db-ig

    Be: a.elem[i]

    Ciklus vége

    Eljárás vége.

    Feltesszük, hogy a bemenetben minden elem egyszer van.

    Műveletigény számítása:

    A ciklus a halmaz elemeinek számaszor fut le, azaz a futási idő

    a halmaz elemszámával arányos.

    Zsakó László: Halmazok 7/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Kiírás(Konstans a: Halmaz(Elemtípus)):

    Ki: a.db [a halmaz elemszáma]

    Ciklus i=1-től a.db-ig

    Ki: a.elem[i]

    Ciklus vége

    Eljárás vége.

    Műveletigény számítása:

    A ciklus a halmaz elemeinek számaszor fut le, azaz a futási idő

    a halmaz elemszámával arányos.

    Zsakó László: Halmazok 8/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Üres(Változó a: Halmaz(Elemtípus)):

    a.db:=0

    Eljárás vége.

    Műveletigény számítása:

    Nem függ a halmaz elemszámától.

    Üres?(Konstans a: Halmaz(Elemtípus)):

    Üres?:=(a.db=0)

    Függvény vége.

    Műveletigény számítása:

    Nem függ a halmaz elemszámától.

    Zsakó László: Halmazok 9/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Halmazba(Változó a: Halmaz(Elemtípus),

    Konstans e: Elemtípus):

    i:=1

    Ciklus amíg i≤a.db és a.elem[i]≠e

    i:=i+1

    Ciklus vége

    Ha i>a.db akkor a.db:=a.db+1; a.elem[a.db]:=e

    Eljárás vége.

    Műveletigény számítása:

    A ciklus a halmaz elemeinek számaszor fut le, azaz a futási

    idő a halmaz elemszámával arányos.

    Zsakó László: Halmazok 10/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Halmazból(Változó a: Halmaz(Elemtípus),

    Konstans e: Elemtípus):

    i:=1

    Ciklus amíg i≤a.db és a.elem[i]≠e

    i:=i+1

    Ciklus vége

    Ha i≤a.db akkor a.elem[i]:=a.elem[a.db]

    a.db:=a.db-1

    Eljárás vége.

    Műveletigény számítása:

    A ciklus a halmaz elemeinek számaszor

    fut le, azaz a futási idő a halmaz

    elemszámával arányos.Zsakó László: Halmazok 11/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    eleme(Konstans e:Elemtípus,a:Halmaz(Elemtípus)):

    i:=1

    Ciklus amíg i≤a.db és ea.elem[i]

    i:=i+1

    Ciklus vége

    eleme:=i≤a.db

    Függvény vége.

    Műveletigény számítása:

    A ciklus a halmaz elemeinek számaszor fut le, azaz a futási idő a

    halmaz elemszámával arányos.

    Zsakó László: Halmazok 12/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    része(Konstans a,b: Halmaz(Elemtípus)):

    i:=1

    Ciklus amíg i≤a.db és eleme(a.elem[i],b)

    i:=i+1

    Ciklus vége

    része:=i>a.db

    Függvény vége.

    Műveletigény számítása:

    A ciklus az A halmaz elemszámaszor fut le, az eleme függvény

    pedig a B halmaz elemszámaszor, azaz a futási idő a két halmaz

    elemszámának szorzatával arányos.

    Zsakó László: Halmazok 13/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    unió(Konstans a,b: Halmaz(Elemtípus)):

    c:=a

    Ciklus i=1-től b.db-ig

    Ha nem eleme(b.elem[i],a)

    akkor Halmazba(c,b.elem[i])

    Ciklus vége

    unió:=c

    Operátor vége.

    Műveletigény számítása:

    A külső ciklus a B halmaz elemszámaszor fut le, az eleme függ-vény pedig az A halmaz elemszámaszor,azaz a futási idő a két halmaz elemszámá-nak szorzatával arányos.

    Zsakó László: Halmazok 14/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    metszet(Konstans a,b: Halmaz(Elemtípus)):

    c.db:=0

    Ciklus i=1-től a.db-ig

    Ha eleme(a.elem[i],b)

    akkor Halmazba(c,a.elem[i])

    Ciklus vége

    metszet:=c

    Operátor vége.

    Műveletigény számítása:

    A ciklus az A halmaz elemszámaszor fut le, az eleme pedig leg-rosszabb esetben a B halmaz elemszáma-szor, azaz a futási idő a két halmaz elem-számának szorzatával arányos.

    Zsakó László: Halmazok 15/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Megjegyzések:

    A megoldás alapvető problémája, hogy sehol sem ellenőrizhető, hogy a halmazban valóban csak a benne előfordulható elemek vannak.

    Az így ábrázolt halmazok elemtípusára semmilyen megkötést nem kell tennünk, hiszen egy tömbben bármilyen elem elhelyezhető.

    Arra sincs korlátozás, hogy mekkora lehet az alaphalmaz elem-száma, amiből a halmaz elemei származnak. Csak annyi a meg-kötésünk, hogy a konkrét halmazok elemszámát korlátozzuk.

    Zsakó László: Halmazok 16/52

    A komplemens halmaz nem előállítható,

    ha nem tároljuk az összes elemet.

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Mi lenne, ha a halmaz elemeit rendezve sorolnánk fel?

    Az eleme műveletben lehetne logaritmikus keresés, futási ideje a halmaz elemszámának logaritmusával arányos.

    Az halmazba, halmazból műveletekben lehetne logaritmikus keresés, de az elemek mozgatása miatt marad a lineáris futási idő.

    Az únió, metszet, része műveletek megvalósíthatók a ren-dezett sorozatok összefuttatási elvével, így azok műveletigénye a két halmaz elemszáma összege lehet.

    Zsakó László: Halmazok 17/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Bittérkép – logikai vektor

    Halmaz(Elemtípus)=Tömb(Min'Elemtípus..

    Max'Elemtípus:Logikai)

    A halmazt {igaz,hamis} elemekből álló vektorként értelmezzük,

    ahol indexként használjuk az elem típusú értéket.

    Az ilyen halmaz mindig rendezett halmaz.

    Megjegyzés: az elemszám tárolása segíthet az üresség

    vizsgálatán, de plusz teher a többi műveletben.

    Zsakó László: Halmazok 18/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Beolvasás(Változó a: Halmaz(Elemtípus)):

    Be: N [a halmaz elemszáma]

    Üres(a)

    Ciklus i=1-től N-ig

    Be: e; a[e]:=igaz

    Ciklus vége

    Eljárás vége.

    Műveletigény számítása:

    A ciklus a halmaz elemeinek számaszor fut le, azaz a futási idő

    a halmaz elemszámával arányos.

    Zsakó László: Halmazok 19/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Kiírás(Konstans a: Halmaz(Elemtípus)):

    Ciklus i=Min'Elemtípus-tól Max'Elemtípus-ig

    Ha a[i] akkor Ki: i

    Ciklus vége

    Eljárás vége.

    Műveletigény számítása:

    A ciklus a halmaz lehetséges elemeinek számaszor fut le, azaz

    a futási idő a halmaz elemtípusának számosságával arányos.

    (Kiválogatás tétel)

    Zsakó László: Halmazok

    Mi lenne, ha tárolnánk a halmaz

    legkisebb és legnagyobb elemét is?

    20/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Üres(Változó a: Halmaz(Elemtípus)):

    Ciklus i=Min'Elemtípus-tól Max'Elemtípus-ig

    a[i]:=hamis

    Ciklus vége

    Eljárás vége.

    Műveletigény számítása:

    A ciklus a halmaz lehetséges elemeinek számaszor fut le, azaz

    a futási idő a halmaz elemtípusának számosságával arányos.

    Zsakó László: Halmazok 21/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Üres?(Konstans a: Halmaz(Elemtípus)):

    i:=Min'Elemtípus

    Ciklus amíg i≤Max'Elemtípus és nem a[i]

    i:=i+1

    Ciklus vége

    Üres?:=(i>Max'Elemtípus)

    Függvény vége.

    Műveletigény számítása:

    A ciklus a halmaz lehetséges elemeinek számaszor fut le, azaz

    a futási idő a halmaz elemtípusának számosságával arányos.

    Zsakó László: Halmazok

    (Eldöntés tétel)

    22/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Halmazba(Változó a: Halmaz(Elemtípus),

    Konstans e: Elemtípus):

    a[e]:=igaz

    Eljárás vége.

    Műveletigény számítása:

    Nem függ a halmaz elemszámától.

    Zsakó László: Halmazok 23/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Halmazból(Változó a: Halmaz(Elemtípus),

    Konstans e: Elemtípus):

    a[e]:=hamis

    Eljárás vége.

    Műveletigény számítása:

    Nem függ a halmaz elemszámától.

    Zsakó László: Halmazok 24/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    eleme(Konstans e:Elemtípus,a:Halmaz(Elemtípus)):

    eleme:=a[e]

    Függvény vége.

    Műveletigény számítása:

    Nem függ a halmaz elemszámától.

    Zsakó László: Halmazok 25/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    része(Konstans a,b: Halmaz(Elemtípus)):

    i:=Min'Elemtípus

    Ciklus amíg i≤Max'Elemtípus és

    nem (a[i] és nem b[i])

    i:=i+1

    Ciklus vége

    része:=i>Max'Elemtípus

    Függvény vége.

    Műveletigény számítása:

    A ciklus a halmaz lehetséges elemeinek számaszor fut le, azaz a

    futási idő a halmaz elemtípusának

    számosságával arányos. (Eldöntés tétel)

    Zsakó László: Halmazok 26/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    unió(Konstans a,b: Halmaz(Elemtípus)):

    Ciklus i=Min'Elemtípus-tól Max'Elemtípus-ig

    c[i]:=a[i] vagy b[i]

    Ciklus vége

    unió:=c

    Operátor vége.

    Műveletigény számítása:

    A ciklus a halmaz lehetséges elemeinek számaszor fut le, azaz a

    futási idő a halmaz elemtípusának számosságával arányos.

    Zsakó László: Halmazok

    (Másolás – függvényszámítás tétel)

    27/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    metszet(Konstans a,b: Halmaz(Elemtípus)):

    Ciklus i=Min'Elemtípus-tól Max'Elemtípus-ig

    c[i]:=a[i] és b[i]

    Ciklus vége

    metszet:=c

    Operátor vége.

    Műveletigény számítása:

    A ciklus a halmaz lehetséges elemeinek számaszor fut le, azaz a

    futási idő a halmaz elemtípusának számosságával arányos.

    Zsakó László: Halmazok

    (Másolás – függvényszámítás tétel)

    28/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    Megjegyzések:

    Ennél az ábrázolásnál szigorú megkötés az, hogy a halmaz lehetséges elemei indexként használhatók legyenek!

    Emiatt így például nem definiálható síkbeli pontok halmaza, szavak halmaza, …

    Ha azonban a halmaz egy véges sokaságból veszi fel az elemeit, akkor ezek egy tömbbe elhelyezhetők és a továbbiakban ezen tömb indexeivel ábrázolhatjuk a halmazt!

    Zsakó László: Halmazok 29/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Halmaz típus ábrázolása

    2020. 09. 28. 13:20

    STL set halmazosztály:

    Műveletei:

    • üres?

    • üres

    • eleme

    • Halmazba

    • Halmazból

    • elemszám

    • min

    Zsakó László: Halmazok 30/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus

    2020. 09. 28. 13:20

    Értékhalmaz:

    Az alaphalmaz (amely az Elemtípus és egy darabszám által van

    meghatározva) iteráltja („mely elem hányszoros multiplicitással

    van benne a multihalmazban”).

    Példa: Állatok: {(macska,4),(rigó,2),(galamb,3)}

    Zsakó László: Halmazok 31/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus

    2020. 09. 28. 13:20

    Műveletek

    metszet () (értékek metszete, multiplicitások minimuma)

    unió () (értékek uniója, multiplicitások összege)

    max (értékek uniója, multiplicitások maximuma),

    különbség (–) (értékek különbsége, multiplicitások

    különbsége; nincs benne egy elem, ha a multiplicitások

    különbsége 1-nél kisebb)

    Zsakó László: Halmazok 32/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus

    2020. 09. 28. 13:20

    Műveletek

    eleme (egy elem benne van-e a multihalmazban) ()

    benne (egy elem legalább adott multiplicitással benne van-e

    a multihalmazban)

    multiplicitás (egy elem hányszoros multiplicitással van

    benne a multihalmazban)

    része (egyik multihalmaz részhalmaza-e a másiknak) ()

    mindközös? (a két multihalmaz az elemek multiplicitásától

    eltekintve azonos-e)

    Zsakó László: Halmazok 33/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus

    2020. 09. 28. 13:20

    Műveletek

    Multihalmazba (elem hozzávétele egy multihalmazhoz):

    H:=He,1}

    Multihalmazból (elem elhagyása egy multihalmazból):

    H:=H–e,1}

    Beolvasás (multihalmaz beolvasása)

    Kiírás (multihalmaz kiírása),

    Üres (üres multihalmaz létrehozás eljárás), vagy

    üres? (logikai értékű függvény).

    Zsakó László: Halmazok 34/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    Elemek felsorolása

    Típus Halmazelem=Rekord(érték: Elemtípus, multi: Egész)

    Multihalmaz(Elemtípus)=Rekord(db: Egész,

    elem: Tömb(1..MaxDb:Halmazelem))

    Egy felsorolásként adjuk meg a multihalmazt, annyi elemű

    tömbben, ahány elemű éppen a multihalmaz (pontosabban az

    első db darab elemében).

    Zsakó László: Halmazok 35/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus

    2020. 09. 28. 13:20

    PéldaTípus Fajta=Rekord(érték: Szöveg,

    multi: Egész)

    Állomány=Multihalmaz(Fajta)

    Változó A: Állomány

    A:=Állomány(("nyúl",3),("kecske",5))

    Zsakó László: Halmazok 36/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    Beolvasás(Változó a: Multihalmaz(Elemtípus)):

    Be: a.db [a multihalmaz elemszáma]

    Ciklus i=1-től a.db-ig

    Be: a.elem[i].érték,a.elem[i].multi

    Ciklus vége

    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.

    Zsakó László: Halmazok 37/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    Kiírás(Konstans a: Multihalmaz(Elemtípus)):

    Ki: a.db [a multihalmaz elemszáma]

    Ciklus i=1-től a.db-ig

    Ki: a.elem[i].érték,a.elem[i].multi

    Ciklus vége

    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.

    Zsakó László: Halmazok 38/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    Üres(Változó a: Multihalmaz(Elemtípus)):

    a.db:=0

    Eljárás vége.

    Műveletigény számítása:

    Nem függ a multihalmaz elemszámától.

    üres?(konstans a: Multihalmaz(Elemtípus)):

    Üres?:=(a.db=0)

    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 39/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    Multihalmazba(Változó a: Multihalmaz(Elemtípus),

    Konstans e: Elemtípus):

    i:=1

    Ciklus amíg i≤a.db és a.elem[i].érték≠e

    i:=i+1

    Ciklus vége

    Ha i≤a.db akkor

    a.elem[i].multi:=a.elem[i].multi+1

    különben a.db:=a.db+1; a.elem[a.db].érték:=e

    a.elem[a.db].multi:=1

    Eljárás vége.

    Műveletigény számítása:

    Arányos a multihalmaz elemszámával.Zsakó László: Halmazok 40/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    Multihalmazból(Változó a: Multihalmaz(Elemtípus),

    Konstans e: Elemtípus):

    i:=1

    Ciklus amíg i≤a.db és a.elem[i].érték≠e

    i:=i+1

    Ciklus vége

    Ha i≤a.db akkor

    Ha a.elem[i].multi=1 akkor

    a.elem[i]:=a.elem[a.db]; a.db:=a.db-1

    különben a.elem[i].multi:=a.elem[i].multi-1

    Eljárás vége.

    Műveletigény számítása:

    Arányos a multihalmaz elemszámával.Zsakó László: Halmazok 41/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    eleme(Konstans e: Elemtípus,

    a: Multihalmaz(Elemtípus)):

    i:=1

    Ciklus amíg i≤a.db és ea.elem[i].érték

    i:=i+1

    Ciklus vége

    eleme:=i≤a.db

    Függvény vége.

    Műveletigény számítása:

    Arányos a multihalmaz elemszámával.

    Zsakó László: Halmazok 42/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    multiplicitás(Konstans e: Elemtípus,

    a: Multihalmaz(Elemtípus)):

    i:=1

    Ciklus amíg i≤a.db és ea.elem[i].érték

    i:=i+1

    Ciklus vége

    Ha i≤a.db akkor multiplicitás:=a.elem[i].multi

    különben multiplicitás:=0

    Függvény vége.

    Műveletigény számítása:

    Arányos a multihalmaz elemszámával.

    Zsakó László: Halmazok 43/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    benne(Konstans e: Halmazelem,

    a: Multihalmaz(Elemtípus)):

    i:=1

    Ciklus amíg i≤a.db és e.értéka.elem[i].érték

    i:=i+1

    Ciklus vége

    benne:=i≤a.db és e.multi≤a.elem[i].multi

    Függvény vége.

    Műveletigény számítása:

    Arányos a multihalmaz elemszámával.

    Zsakó László: Halmazok 44/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    része(Konstans a,b: Multihalmaz(Elemtípus))

    i:=1

    Ciklus amíg i≤a.db és benne(a.elem[i],b)

    i:=i+1

    Ciklus vége

    része:=i>a.db

    Függvény vége.

    Műveletigény számítása:

    A külső ciklus az A, a benne műveletben levő belső ciklus a B multihalmaz elemszámaszor fut le, azaz a futási idő a két multi-

    halmaz elemszáma szorzatával arányos.

    Zsakó László: Halmazok 45/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    unió(Konstans a,b: Multihalmaz(Elemtípus)):

    c:=a

    Ciklus i=1-től b.db-ig

    j:=1

    Ciklus amíg j≤a.db és

    b.elem[i].értéka.elem[j].érték

    j:=j+1

    Ciklus vége

    ...

    Zsakó László: Halmazok 46/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    ...

    Ha j>a.db akkor c.db:=c.db+1

    c.elem[c.db]:=b.elem[i]

    különben c.elem[j].multi:=c.elem[j].multi+

    b.elem[i].multi

    Ciklus vége

    unió:=c

    Operátor vége.

    Műveletigény számítása:

    A külső ciklus az A, a belső ciklus a B multihalmaz elemszámaszor fut le,

    azaz a futási idő a két multihalmaz elemszáma szorzatával arányos.

    Zsakó László: Halmazok 47/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    max(Konstans a,b: Multihalmaz(Elemtípus)):

    c:=a

    Ciklus i=1-től b.db-ig

    j:=1

    Ciklus amíg j≤a.db és

    b.elem[i].értéka.elem[j].érték

    j:=j+1

    Ciklus vége

    ...

    Zsakó László: Halmazok 48/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    ...

    Ha j>a.db akkor c.db:=c.db+1

    c.elem[c.db]:=b.elem[i]

    különben ha b.elem[i].multi>c.elem[j].multi

    akkor c.elem[j].multi:=b.elem[i].multi

    Ciklus vége

    max:=c

    Operátor vége.

    Műveletigény számítása:

    A külső ciklus az A, a belső ciklus a B multihalmaz elemszámaszor fut le,

    azaz a futási idő a két multihalmaz elemszáma szorzatával arányos.

    Zsakó László: Halmazok 49/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    metszet(Konstans a,b: Multihalmaz(Elemtípus)):

    c.db:=0

    Ciklus i=1-tõl a.db-ig

    j:=1

    Ciklus amíg j≤b.db és

    b.elem[j].értéka.elem[i].érték

    j:=j+1

    Ciklus vége

    ...

    Zsakó László: Halmazok 50/52

    http://ikportal.inf.elte.hu:8080/ELTEInformatikaiKar/elte_ik_2.html

  • Multihalmaz típus ábrázolása

    2020. 09. 28. 13:20

    ...

    Ha j≤b.db akkor

    c.db:=c.db+1; c.elem[c.db]:=a.elem[i]

    Ha b.elem[j].multi

  • Halmaz, multihalmaz