PrioritetsKøer. i-120 : H PrioritetsKøer: 1. Container. n-te/vilkårlig. PositionalContainer. PositionalSequence. Tree. Deque PriorityQueue

Like dokumenter
PrioritetsKøer I. ADGANG TIL ELEMENTER I EN SAMLING II. TOTALE ORDNINGER OG NØKLER III.PRIORITETSKØ ADT IV. IMPLEMENTASJON MED SEQUENCE ADT

PrioritetsKøer. i-120 : h98 8. PrioritetsKøer: 1. Samling. n-te/vilkårlig. FiLi. PosSamling. Sequence

Stabler, Køer og Lister. ADT er

Pensum: fra boken (H-03)+ forelesninger

Pensum: fra boken (H-03)+ forelesninger

PQ: HEAP. Heap. Er disse heap er? Hvordan implementere heap:

Ordbøker I. ORDBOK /PRIORITETSKØ = SEKVENS /LIFI II. IMPLEMENTASJON MED SEQUENCE III.IMPLEMENTASJON MED HASH TABELL

PRIORITETSKØ. Aksjehandel. Datastruktur for aksjehandel. Nøkler og Totalorden-relasjonen

n / ($$ n 0$$/ $ " 1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5., $ 7$,

Container ADT. Sekvenser. int size(); antall elementer i samlingen */ boolean isempty(); true hviss samlingen er tom */

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Faglærer går normalt én runde gjennom lokalet. Ha evt. spørsmål klare!

INF1010 våren 2017 Torsdag 9. februar. Interface - Grensesnitt

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det, to typer av vinduer? GUI (Graphical User Interface)-programmering

Samlinger, Lister, Sekvenser

UNIVERSITETET I OSLO

Oppsummering. I. HVA VAR DET? I.1 ADTer og Programutvikling I.2 Datastrukturer I.3 Algoritmer II. PENSUM III.EKSAMEN IV. ØNSKER

Binær heap. En heap er et komplett binært tre:

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

IN1010 våren 2018 Tirsdag 13. februar. Interface - Grensesnitt

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

INF Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

Hvordan gjør vi det, to typer av vinduer? Om Grafiske Bruker-Grensesnitt (GUI) GUI (Graphical User Interface)-programmering

Faglærer går normalt én runde gjennom lokalet. Ha evt. spørsmål klare!

UNIVERSITETET I OSLO

Løsningsforslag: Deloppgave om heuristiske søkemetoder

Algoritmer og datastrukturer Kapittel 4 - Delkapittel 4.4

EKSAMEN løsningsforslag

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

EKSAMEN Løsningsforslag

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf GUI - del 2

Obligatorisk oppgave nr. 3 i Diskret matematikk

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

IN1010 våren 2019 Onsdag 15. mai. Rask repetisjon av subklasser og tråder (pluss µ nytt)

INF Algoritmer og datastrukturer

Oppgave 1. Stabler og Køer (30%)

INF Algoritmer og datastrukturer

PG4200 Algoritmer og datastrukturer Forelesning 7

EKSAMEN Løsningsforslag

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf:

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Oppgave 1. Løsningsforslag til eksamensoppgave. ITF20006 Algoritmer og datastrukturer Postorden traversering:

ADT og OO programmering

Uke 12 IN3030 v2019. Eric Jul PSE-gruppa Ifi, UiO

INF1010 våren 2017 Torsdag 26. januar. Arv og subklasser del 1. Stein Gjessing Institutt for informatikk Universitetet i Oslo

Løsningsforslag. Oppgavesettet består av 9 oppgaver med i alt 21 deloppgaver. Ved sensur vil alle deloppgaver telle omtrent like mye.

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

UNIVERSITETET I OSLO

INF våren januar, uke 3 - Oversikt og forutsetninger Java datastruktur-tegninger

Binære trær: Noen algoritmer og anvendelser

Oppgave 1. Sekvenser (20%)

Algoritmer og datastrukturer Eksamen

INF Algoritmer og datastrukturer

INF3030 Uke 7, våren Eric Jul PSE Inst. for informatikk

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

Trær. En datastruktur (og abstrakt datatype ADT)

Prioritetskøer. Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper

INF Algoritmer og datastrukturer

INF2220: Forelesning 3

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b

Prioritetskøer. Prioritetskøer. Binære heaper (vanligst) Prioritetskøer

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

INF1010 Sortering. Marit Nybakken 1. mars 2004

INF1020 Algoritmer og datastrukturer. Dagens plan

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. NB! Det er ikke tillatt å levere inn kladd sammen med besvarelsen

Algoritmer og Datastrukturer

Lars Vidar Magnusson

Liste som abstrakt konsept/datatype

INF2220: Forelesning 3. Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5)

KORTESTE STI. Vektede Grafer. Korteste Sti. Dijkstra s Algoritme. Vektet Urettet Graf

Minimum Spenntrær - Kruskal & Prim

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

INF2220: Forelesning 3

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Kapittel 8: Sortering og søking

PG4200 Algoritmer og datastrukturer Forelesning 10

UNIVERSITETET I OSLO

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

INF2440 Uke 4, v2018 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model. Eric Jul PSE, Inst.

Kapittel 9: Sortering og søking Kort versjon

Datastrukturer for rask søking

Kapittel 9: Sortering og søking Kort versjon

Norges Informasjonsteknologiske Høgskole

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

UNIVERSITETET I OSLO

Løsnings forslag i java In115, Våren 1998

INF2220: Forelesning 2

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Grunnleggende Datastrukturer

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Transkript:

PrioritetsKøer I. ADGANG TIL ELEMENTER I EN SAMLING gjeom Positio gjeom økkel II. TOTALE ORDNINGER OG NØKLER III.PRIORITETSKØ ADT PrioritetsKø-Sorterig IV. IMPLEMENTASJON MED SEQUENCE ADT V. IMPLEMENTASJON MED HEAP DS implmetasjo av Heap operasjoer BiaryTree / Array VI. LOCATOR DESIGNMØNSTER (6.) Kap. 6 (kursorisk: 6..) i-0 : H- 7. PrioritetsKøer: adgag til elemetee ku v.hj.a. plasserig (Positio) første/siste LiFi Cotaier -te/vilkårlig PositioalCotaier KeyBasedCotaier med økkel==k Queue Stack PositioalSequece Tree miste/største Dictioary Deque Sequece BiaryTree PriorityQueue struktur er uavhegig av (abstrakte) objekters itere struktur og egeskaper... me f.eks. Sorterig er e operasjo på strukturer med rekkefølge på Posisjoer, og hvor alle elemetee ka sammeliges (mht. e økkel-verdi) adgag til elemetee v.hj.a. økkel plasserig i e samlig avheger av elemetets verdi (økkel) sorter i-0 : H- 7. PrioritetsKøer:

II. Nøkler og Ordiger Gitt e (vilkårlig) megde S :. e biær relasjo R på S, er e megde av par (s,p) der s og p ε S (ma skriver ofte (s,p) ε R som R(s,p), evt. s p). e relasjo R er e total ordig (TO) på S hviss de er: refleksiv : R(s,s) for alle s ε S trasitiv : for alle s,p,q ε S hvis R(s,p) & R(p,q) så R(s,q) atisymmetrisk : for alle s,p ε S hvis R(s,p) & R(p,q) så s = p (for to vilkårlige s p ε S vil ete R(p,s) eller R(s,p) ) Nøkkel (for e megde E) er e fuksjo key : E S, der I. S er e (vilkårlig!) totalt ordet megde II. key er ijektiv, dvs. slik at : hvis e f så key(e) key(f) (forskjellige elemeter har forskjellige økkel-verdier) tek på key(e) som e egeskap/et attributt til e S : R(x,y) heltallee x y et alfabet x kommer-ikke-etter y alle streger (ord) leksiskografisk ordig over et gitt alfabet Samme megde ka TOs på forskjellige måter heltallee xy, ( x y el. x = y og x<0) heltallee x < y pers. i 6-te rad x sitter-til-vestre-for y * x sitter-til-vestre-for -eller-der-hvor y meesker x ygre-e y * x ikke-ygre-e y E S : key(e) persoer persoumre : e s persr (heltall, ) *persoer plasser, : e s sitteplass i 6-te rad til-vestre-eller-likt meesker heltall, : e s alder? Ofte, oppfyller ikke økler II: flere elemeter fra E ka ha samme økkel-verdi. i-0 : H- 7. PrioritetsKøer: Objekter med økler class Pers { e= ew E(,, Oslo ) it alder; key: E heltall, e.alder; (ikke etydig) it pr; key: E heltall, e.pr; (etydig) Strig adr; key: E Strig, compareto e.adr; (ikke etydig)... } Nøkkel for et Objekt e ka være et vilkårlig Objekt k : Item(k,e) e KeyBasedCotaier vil samle Item s abstrakt TO uttrykkes ved iterface Comparator som vil parametrisere ehver implemetasjo av KeyBasedCotaier spesifikk TO er e class X implemets Comparator class itkeycomp implemets Comparator { // atar Item ( key:iteger,?) boolea islesstha(object a, Object b) { Item aa = (Item)a; Item bb= (Item)b; retur (( (Iteger) aa.key() ). itvalue() < ( (Iteger) bb.key() ). itvalue(); }... } class strigkeycomp implemets Comparator { // atar Item ( key:strig,?) boolea islesstha(object a, Object b) { Item aa = (Item)a; Item bb= (Item)b; retur ( (Strig) aa.key() ). compareto ( (Strig) bb.key() ) < 0 ; }... } public class Item { // et par Objekt-økkel private Object el, key; public Item(Object k, Object e) { setelem(e); setkey(k); } public Object key() { retur key;} public Object elemet() { retur el;} public void setkey(object k) {key=k;} public void setelemet(object e) {el=e;} } i-0 : H- 7. PrioritetsKøer:

PriorityQueue ADT /** adgag gjeom miste økkel i e aktuell ordig bestemt av implemetasjo */ public iterface PriorityQueue exteds KeyBasedCotaier { /** sett i et ytt elemet med agitt økkel * @param k økkel til det ye elemetet * @param e elemetet som skal settes i */ void isertitem(object k, Object e); /** returer Objektet med miste økkel * @retur Objektet med miste økkel * @exceptio EmptyCotaierExceptio hvis isempty() */ Object mielemet(); /** returer miste økkel i køe * @retur miste økkel * @exceptio EmptyCotaierExceptio hvis isempty() */ Object mikey(); /** fjer og returerer elemetet med miste økkel * @retur elemetet med miste økkel * @exceptio EmptyCotaierExceptio hvis isempty() */ Object removemielemet(); /** returer lokator til miste elemetet */ Locator mi(); } år e har et Object-atributt som økkel : PQ. isertitem( e.key(), e ) me økkel ka bestemmes ved isettig : PQ. isertitem( ewkey(e), e ) i-0 : H- 7. PrioritetsKøer: PrioritetsKø-Sorterig void pqsort(sequece S, PriorityQueue PQ) // atar at PQ bruker Objektee som økler a) while (! S.isEmpty()) // fjer ett og ett elemet fra S = O() e = S.removeFirst() // og sett dem i i PQ PQ.isertItem(e,e) b) while (! PQ.isEmpty()) // fjer ett og ett elemet fra PQ e = PQ.removeMiElemet() // og sett dem i på slutte av S = O() S.isertLast(e) trykkfeil i boke s.07 + P k.isert e + P k.remmi( ) + k = k = i-0 : H- 7. PrioritetsKøer: 6

IV. Implemetasjo av PriorityQueue med Sequece I DATA REPRESENTASJON Sequece, der hver Positio II DATA STRUKTUR lagrer e Item public class Item { public Object elemet() {...} public Object key() {...}... } class PQSequece implemets PriorityQueue { private Sequece S; private Comparator cp; /** @param sq bør være tom sekves @param c Comparator for sammelikig av Item med passede key-objekter */ public PQSeq(Sequece sq, Comparator c) { S = sq; cp = c; } III DATA INVARIANT Item i S ka sammeliges med cp S er usortert S er sortert i-0 : H- 7. PrioritetsKøer: 7 PriorityQueue med Sequece DATA INVARIANT: INGEN USORTERT A D Z... B DATA INVARIANT: SORTERT STIGENDE A B D... Z void isertitem(o,k) sq.isertlast(ew Item(k,o)) Object mikey(): fi miste... Positio p = sq.first(); Object o = p.elemet(); while ( p!= sq.last() ) { p = sq.after(p); if (cp.lt(p.elemet(), o) o = p.elemet(); } retur ((Item)o).key(); Object mielemet() : fi... Object removemi() : fi og fjer... C O() Θ() Θ() Θ() Ivariate skal velges avhegig av forveted hyppighet av operasjoer Kompleksitet er relativ til implemetasjo av Sequece (LL/DL/Array) C void isertitem(o,k) O() Item y= ew Item(k,o); if ( sq.isempty() ) sq.isertfirst(y) else if ( cp.islessthaorequal(y, sq.first().elemet()) ) sq.isertfirst(y) else if ( cp.isgreaterthaorequal(y, sq.last().elemet()) ) sq.isertlast(y) else Positio c = sq.first() while (cp.isgreatertha(y, c.elemet() ) c= sq.after(c) sq.isertbefore(c,y) Object mikey() O() retur ((Item) sq.first().elemet()). key() Object mielemet() O() retur ((Item) sq.first().elemet()). elemet() Object removemi() O() retur ( (Item)sq.remove(sq.first()) ). elemet() i-0 : H- 7. PrioritetsKøer:

Isertio / Selectio Sort u: s: u: s: u: s: u: s: u: s: u: s: u: s: u: s: u: u: s: s: P k.isert e P k.remmi( ) k = k = O( ) + O( ) u: + -------------- + -------------- s: :O( ) / Ω( ) :O( ) / Ω() i-0 : H- 7. PrioritetsKøer: er et Biært Tre T (for lagrig av objekter med økler) som tilfredstiller DATA INVARIANT: V. Heap DataStruktur. Heap-Orderig ( relasjoell ) for ehver ode v (utatt rote): key(v) key(paret(v)). Komplett Biært Tre ( strukturell ) T med høyde h:.a) alle ivåee i=0,,...,h- har maks. o. oder = i.b) på ivå h- alle itere oder er til vestre for alle ekstere Heap med (itere) oder har høyde: h = log(+) + +...+ h- + = h- + +...+ h- + h- = h h log() + & log(+) h 0 6 6 6 7 7 7 h= sist i-0 : H- 7. PrioritetsKøer: 0

Implemetasjo av PriorityQueue med Heap DATASTRUKTUR private BiaryTree heap private Positio sist 6 private Comparator cp <, >, DATAINVARIANT =, heap oppfyller Heap-Ivariat med hesy til cp-sammelikig og sist er siste posisjo i heap: ==ull hviss heap.isempty() 7 public PQhp(Comparator c) { cp = c ; heap = ew BiaryTreeIMP(); } // sist==ull hviss heap.isempty() private boolea DI() { traverser Heap og sjekk at ehver ode v har key(v) key(paret(v)) : cp. isgreaterthaorequalto ( (Item)v.elemet(), (Item) heap.paret(v).elemet() ) Komplett BiTree er vaskeligere } public Object mielemet() throws EmptyCotaierExceptio { if (heap.isempty()) throw ew EmptyCotaierExceptio( ); retur ((Item) Heap.root().elemet()). elemet() ; } public Object mikey() throws EmptyCotaierExceptio { if (heap.isempty()) throw ew EmptyCotaierExceptio( ); retur ((Item) Heap.root().elemet()). key() ; } i-0 : H- 7. PrioritetsKøer: A. isertitem(o,k) i Heap sist 0 7 7. Bevar KOMPLETT BINÆRT TRE INVARIANT: Fi isettigsode til høyre for siste utvid bladet til e iter ode og sett i det ye elemetet gitt sist:o() el. O(log ). Gjeopprett HEAP-ORDERING INVARIANT : Flytt det ye elemetet opp itil dets forelder har midre økkel h= log(+) = O(log ) sist 0 7 0 7 7 7 i-0 : H- 7. PrioritetsKøer:

A.. Fi isettigsode. Gitt sist, fi isettigsode u avhegig av implemetasjo av BiaryTree Sequece (array): sist = ; u = sist + O() BiaryTree iterface (vilkårlig implemetasjo) Avhegig av hvem sist er har vi tre tilfeller: a) T.isEmpty() : u = T.root() b) ytterste ode på ivå h- u = sist while ( u!= root() && u!= leftchild(paret(u)) ) u = paret(u) if ( u!= root) u = rightchild(paret(u)) while (! isexteral(u) ) u = leftchild(u) retur u O(log ) u c) e mellomode på ivå h- 0 7 0 7 7 u i-0 : H- 7. PrioritetsKøer: A.. Oppover boblig u = siste A. while ( u!= root() && u!= leftchild(paret(u)) ) u = paret(u) if ( u!= root) u = rightchild(paret(u)) while (! isexteral(u) ) u = leftchild(u) retur u O(log ) expadexteral(u) ; u.setelemet(y) ; 0 7 7 while ( u!= root() && A. cp.islesstha( u.elemet(), paret(u).elemet() ) ) swap(u, paret(u)) u = paret(u); O(log ) i-0 : H- 7. PrioritetsKøer:

B. removemielemet() fra Heap. hold root-objektet (til retur) ((Item)root().elemet()).elemet(). Bevar KOMPLETT BINARYTREE INVARIANT : plasser sist.elemet() i rot-posisjo og fjer sist-posisjo = sett i et ytt blad (BiTree: removeaboveexteral(leftchild(sist)) ) oppdater sist O( + log ) 7 7 0. Gjeopprett HEAP-ORDERING INVARIANT: flytt det ye rot-elemetet ed til passede posisjo ( edover boblig ) u = root(); doe = false; while (! doe ) { if ( isexteral(leftchild(u)) && isexteral(rightchild(u)) ) doe = true else { if ( isexteral(rightchild(u)) ) este = leftchild(u) else if (cp.islesstha( leftchild(u).elemet(), rightchild(u).elemet() )) este = leftchild(u) else este = rightchild(u); 7 0 if ( cp.isgreatertha( u.elemet(), este.elemet() )) swap(u,este); u = este; else doe= true }} O(log ) 7 i-0 : H- 7. PrioritetsKøer: PrioritetsKø Sorterig P k.isert ( e ) P k.remmi( ) k = k = O( ) + O( ) Selectio Sort u: -------------- + :O( ) Isertio Sort + -------------- s: :O( ) Heap Sort log() h:... log() :O( log()) i-0 : H- 7. PrioritetsKøer: 6

Oppdater aldri objekter i e Samlig! fordi økkel-verdi avheger, typisk, av Objektets attributter class El { private it alder; private it pr; public Object key() { retur ew Iteger(alder); } public void setalder(it a) { alder=a; }... } PriorityQueue pq = ew PQSeq(ew itcomp()); El e= ew El(); El e= ew El(); e pq.isertitem(e, e.key()); pq.isertitem(e, e.key()); e pq isertitem(o,k) remmielemet() mielemet() mikey()...... El o = (El) pq.mielemet(); o o. setalder(6); 6 e. setalder(0); 6 0 i-0 : H- 7. PrioritetsKøer: 7 Et godt - metodologisk - råd!!!. IMPLEMENETER DATA INVARIANT I eksemplet over: for hver Item i har vi at: i.elemet().key() == i.key() sekves er sortert. UNNGÅ OPPDATERING AV OBJEKTER I NØKKEL-BASERTE-SAMLINGER MÅ DU OPPDATERE SLIKE OBJEKTER:. FJERN FØR OPPDATERING: El o = (El) pq.removemielemet(); o.setalder(6); pq.isertitem(o, o.key());. fjer fra Samlige. oppdater. sett i i Samlige Dette ka virke oe kostbart (spesielt år vi oppdaterer attributter som ikke påvirker økkel-verdier) me :. Hvilke attributter påvirker økkel ka variere og være uklart. Kostade øker valigvis ikke algoritmers kompleksistet. Resulterede kode er betydelig sikrere. BRUK MER SOFISTIKERT GRENSESNITT... i-0 : H- 7. PrioritetsKøer:

Locator desigmøster tilsvarer Positio for samliger der Objekter lokaliseres v.hj.a. økkel (KeyBasedCotaier) public iterface KeyBasedCotaier exteds Cotaier { /** Iserts a Locator ito this Cotaier. */ void isert(locator) /** Iserts a <key, elemet> pair ito this Cotaier. */ Locator isert(object k, Object o) /** Eumeratio of all the Locators withi this Cotaier. */ Eumeratio locators() /** Eumeratio of all of the keys of all the locators i the Cotaier. */ Eumeratio keys() /** Whe you eed a locator that ca be iserted ito this KeyBasedCotaier but do't wat to isert it quite yet. */ Locator makelocator(object k, Object o) /** Removes a elemet from this Cotaier. */ void remove(locator) Object replaceelemet(locator l, Object o) /** Chages the mappig of a Locator's elemet to a ew key. @retur the old key to which the Locator s elemet was mapped */ Object replacekey(locator, Object) } public iterface Locator { Object elemet() Object key() Cotaier cotaier() boolea iscotaied() } implemetasjo vil kreve e god del maipulerig med datastrukture i-0 : H- 7. PrioritetsKøer: Oppsummerig Typer av Samlig LiFi (Stack, Queue) PositioalCotaier KeyBasedCotaier Nøkkel: Totale Ordiger objekter med økler (Item) Prioritetskø ADT : implemetasjo og sorterigsmøster usortert sekves seleksjosort sortert sekves istikksort heap heapsort Heap datastruktur: Biært tre + dataivariat isettig / fjerig! opprettholdelse av dataivariate Locator desigmøster: overtar rolle av Positio for KeyBasedCotaier yttig år objekter/økler må oppdateres mes de er i e samlig i-0 : H- 7. PrioritetsKøer: 0