Sho cu s: Abs ac Poin e s"
J. Ma co
[email p o ec ed] c.es
X. F anch
anc[email p o ec ed] c.es
Dep . Llengua ges i Sis emes In o ma ics (LSI)
Uni e si a Poli ecnica de Ca alunya (UPC)
Campus No d
Jo di Gi ona Salgado, 1-3
08034 BARCELONA
Abs ac
In his wo k we p esen he sp ecica ion and he implemen a ion o a new abs ac da a yp e
(ADT) called
STORE
. This new ADT allows he s o age o a gi en collec ion o elemen s oe ing
an abs ac mechanism ha supplies a di ec access o hem, al e na i e o he me ho d dened
by he s anda d op e a ions o usual ADTs. The in e es o he new mechanism s ems om he
eciency o p oin e s, while a oiding he loss o mo dula i y ha usually o ccu s when p oin e s a e
used. The implemen a ion o he op e a ions oe ed by he new ADT is done by de i a ion om
he equa ional sp ecica ion. The ep esen a ion chosen o he implemen a ion o he new ADT
makes he eciency p e iously men ioned p ossible, e en when he ep esen a ion s a egy equi es
he mo emen o he elemen s.
1
Con en s
1In o duc ion 3
2 The ADT
STORE
4
2.1 Op e a ions . ... ... .. ... ... ... ... ... .. ... ... ... ... ... . 5
2.1.1 Cons uc o Op e a ions . ... ... ... ... .. ... ... ... ... ... . 5
2.1.2 Obse e Op e a ions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.3 Mo die Op e a ions ... ... ... ... ... .. ... ... ... ... ... . 6
2.2 Equa ional sp ecica ion .. ... ... ... ... ... .. ... ... ... ... ... . 6
2.2.1 Equa ions b e ween Cons uc o Op e a ions .. .. ... ... ... ... ... . 6
2.2.2 Equa ions o he Obse e Op e a ions .. ... .. ... ... ... ... ... . 8
2.2.3 Equa ions o Mo die Op e a ions . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Implemen a ion in Main Memo y 14
3.1 The Typ e Rep esen a ion . ... ... ... ... ... .. ... ... ... ... ... . 15
3.2 De i ing co de o he op e a ions ... ... ... ... .. ... ... ... ... ... . 19
3.2.1 De i a ion o
pu
.. ... ... ... ... ... .. ... ... ... ... ... . 19
3.3 Chosing implemen a ions o he comp onen s o he ep esen a ion . ... ... ... . 25
4 An Example: The Tennis Ladde 26
4.1 Aho, Hop c o & Ullman's Solu ions o he P oblem . .. ... ... ... ... ... . 26
4.2 The solu ion wi h he ADT
STORE
. ... ... ... .. ... ... ... ... ... . 28
5 Co dica ions 29
6 Conclusions 30
2
1 In o duc ion
The p esen wo k deals wi h he me ho dology o mo dula p og am de elopmen by means o abs ac
da a yp es (ADT). The mo dula me ho dology oe s many imp o an p op e ies such as unde s anding,
abs ac ion, eusabili y, e c., bu , o en, i implies a loss o eciency due o he imp ossibili yo
accessing implemen a ion o ADTs om o he mo dules.
O en, while designing a da a s uc u e, we ace he p oblem o educing he space cos (i.e.,
minimising edundan da a) o he emp o al cos (i.e., accessing mo e as e o da a). Too e come
hese p oblems wemay need an implemen a ion which p e mi s he access o he da a by means
o p oin e s (see, e.g, 1, pag. 149]). Recall ha he no ion o
poin e
co esp onds o he memo y
add ess o a gi en ob jec (wi h some high-le el acili ies, which a y among he die en p og amming
languages). Un o una ely, he use o p oin e s causes in gene al a comple e loss o mo dula i y b ecause:
I is necessa y o know he unde lying da a s uc u e used in he implemen a ion and he e o e,
in o ma ion hiding is no accomplished.
Co ec ness p o o s and so wa e main enance and eusabili y a e, in gene al, mo e complica ed.
Also, p og ams a e mo e dicul o unde s and.
An implemen a ion using p oin e s needs o gua an ee ha da a will no change hei p osi ion in
he s uc u e o he wise wewould no access he desi ed in o ma ion (unless all clien mo dules
keep acko changes and his may b e imp ossible).
When he implemen a ion is done by means o p oin e s no only he ADT op e a ions can b e
used bu also we can access di ec ly o i s ep esen a ion and manipula e i . The e o e, i is
p ossible o manipula e ADTs wi hou esp ec ing he p olicy dened by hei equa ions.
Wi h he aim o a oiding hese d awbacks, we p op ose he design o a new ADT, which no only
p e mi s o s o e da a and o access hem bymeans o akey, bu also allows o di ec access o da a
wi hou knowing how hey a e s o ed. We should men ion ha he addi ion o his mechanism will
b e done by dening i s o mal seman ics. Ce ainly, he idea o s udy his new ADT comes om he
necessi y o a comp omise b e ween mo dula i y and eciency.
The goal o he p esen wo k is o p esen he design o his new ADT which oe s, in he one hand,
unc ions o da a s o age and access bykey o da a s uc u es, indep enden ly o hei o ganiza ion
3
and o he key yp e and, on he o he hand, he p ossibili y o a di ec access o da a by means o
an add ess we call he
sho cu
. Essen ially,we ob ain an abs ac mechanism inside he ADT which
co esp onds o he p oin e s in b o h concep and eciency.
The es o he pap e is o ganized as ollows. In sec ion 2, we p esen he algeb aic sp ecica ion
o he new ADT showing he so s and he op e a ions oe ed as well as he equa ions ha dene
he b eha iou o each o hem. In sec ion 3, wecho ose s he ep esen a ion o he new da a yp e,
hen we show he comple e de i a ion o one o he op e a ions and nally we indica e he cos o
each op e a ion, dep ending on he de ailed implemen a ion o he ep esen a ion used. In sec ion 4, we
conside a classic example ha equi es he use o p oin e s o eciency easons, and whe e we can see
ha he use o he new ADT assu es he same eciency wi hou losing mo dula i y a all. In sec ion
5, we include se e al conclusions ega ding he co dica ion o he new ADT in ADA, Mo dula-2 and
C++. Finally, in sec ion 6, we summa ise he ad an ages o he new ADT and we p esen some op en
ques ions o u he esea ch. This pap e is based on 11], whe e all he emaining discussions can b e
ound, ega ding he de i a ion o all he op e a ions and de ails o he h ee implemen a ions.
2 The ADT
STORE
Since wewan o ob ain an ADT which p e mi s o s o e any kind o in o ma ion, weha e designed an
ADT ha is gene ic" ( pa ame e ized"). The new ADT, called
STORE
, has he da a o b e s o ed
as a pa ame e , decomp osed in o
key
and
in o ma ion
. The pa ame e
key
is used o access he da a.
The e a e no op e a ions equi ed on
in o ma ion
he so
key
mus ha e compa ison op e a ions
1
.
The ADT
STORE
oe s wo so s:
s o e:
whe e he da a is s o ed.
sho cu :
which supplies he di ec access o he s o ed da a.
1
F om now on, we use he op e a ion symbol
cmp
o e e o he equali y op e a ion.
4
2.1 Op e a ions
2.1.1 Cons uc o Op e a ions
c ea e:
;!
s o e
c ea es an emp y s o e.
pu : s o e, key, in o ma ion
;!h
s o e, sho cu
i
e u ns a pai o med by he esul ing s o e a e adding he pai o key and in o ma ion,
and he sho cu whichgi es di ec access o his pai .
Al e na i ely,we could decomp ose
pu
in o wo op e a ions, one o each comp onen o he esul .
Howe e , weha e p e e ed he ab o e men ioned s uc u e o he sake o clea ness o algeb aic
sp ecica ion p esen ed in Subsec ion 2.2.
2.1.2 Obse e Op e a ions
ge In Key: s o e, key
;!
in o ma ion
e u ns he in o ma ion asso cia ed o he key. P econdi ion: he key is in he s o e.
ge In Sho: s o e, sho cu
;!
in o ma ion
e u ns he in o ma ion asso cia ed o he sho cu . P econdi ion: he sho cu has da a
asso cia ed inside he s o e.
ge Key: s o e, sho cu
;!
key
e u ns he key asso cia ed o he sho cu . P econdi ion: he sho cu has da a asso cia ed
inside he s o e.
isIn?: s o e, key
;!
bool
e u ns a b o olean alue indica ing whe he he key is in he s o e.
ge Sho cu : s o e, key
;!
sho cu
e u ns he sho cu asso cia ed o he key. P econdi ion: he key is in he s o e.
isEmp y?: s o e
;!
bool
e u ns a b o olean alue indica ing whe he he s o e is emp y.
5
2.1.3 Mo die Op e a ions
emo e: s o e, sho cu
;!
s o e
e u ns he esul ing s o e a e emo ing he da a asso cia ed o he sho cu . P econdi-
ion: he sho cu has da a asso cia ed inside he s o e.
modi y: s o e, sho cu , in o ma ion
;!
s o e
e u ns he esul ing s o e a e subs i u ing he in o ma ion asso cia ed o he sho cu ,
by he new in o ma ion. P econdi ion: he sho cu has da a asso cia ed inside he s o e.
2.2 Equa ional sp ecica ion
Following he gene al me ho d o algeb aic sp ecica ion wi h ini ial seman ics, wegi e s he equa-
ions b e ween cons uc o op e a ions 4, 5, 6].
2.2.1 Equa ions b e ween Cons uc o Op e a ions
I seems ha we could assume ha he
s o es
b eha e as se s, in ha he o de ing in which he da a
a e s o ed is no imp o an . Ac ually his happ ens in able" like ADT's 6]. In o de o assu e his
p op e ywe should ha e o gua an ee ha , o a gi en
key
,we ob ain always he same
sho cu
,
ega dless o he momen in which he
key
and i s
in o ma ion
a e s o ed. This would imply ha
die en keys could no ha e he same
sho cu
o he wise, s o ing an
in o ma ion
and a
key
implies a
isk o mo di ying he
in o ma ion
o ano he key (o he same
sho cu
) whichwas s o ed p e iously.
The e o e, he e should b e a unique
sho cu
co esp onding o a
key
, and his, in u n, equi es he
numbe o keys and he keys hemsel es o b e known b e o e hand. Al e na i ely,we can do i byan
injec i e unc ion om he se o keys o he se o sho cu s. The las equi emen is e y es ic i e,
i wewan he
s o e
o b e indep enden om he
key
.
Weo e come his es ic ion, by le ing he
sho cu
o dep end also on he
s o e
, and in his way
die en keys can ha e he same
sho cu
, i hey a e s o ed in die en s o es. The e o e, he o de
in which da a a e s o ed is imp o an , and hus
s o es
will no b eha e as se s.
Now, le us conside he ela ions b e ween he wo consecu i e
pu
op e a ions, when we s o e
some
in o ma ion
wi h a
key
whichwas p e iously in he
s o e
. Since we can ha e only a unique
in o ma ion
asso cia ed o each
key
, he esul will b e ha o eplacing he
in o ma ion
asso cia ed o
he
key
by he new
in o ma ion
. The ques ion ha a ises he e is: whichis he
sho cu
ob ained?
6
Since he e was a
sho cu
asso cia ed o he
key
( i.e., he
sho cu
ob ained when s o ed he p e ious
in o ma ion
) and since wewan a unique
sho cu
co esp onding o he
key
, hen i is p ecisely he
o me
sho cu
he one we will ob ain.
Le us see he equa ions which exp ess hese ela ions. Le us s a by hose ela ed o s o es we
will use he op e a ion
isIn?
which ell us whe he he key is in he s o e. This op e a ion is used only
when he s o e is no emp y, b ecause o he wise he s o e would no ha e his ela ion.
In he case when he
key
is he ein, we conside he ollowing wo cases:
1. The key is he las one added o he s o e.
2. The key exis s bu i is no he las one.
In he s case, he equa ion is simple i jus exp esses he ac ha he ob ained s o e will b e
he same as i he las ime we had s o ed he new in o ma ion.
h
isIn?(pu (s ,k
1
,i
1
).s o e,k
2
)
^
cmp(k
1
,k
2
)
i
)
pu (pu (s ,k
1
,i
1
).s o e,k
2
,i
2
).s o e = pu (s ,k
2
,i
2
).s o e
In he second case, he equa ion exp esses he swap b e ween he wo las keys ob aining his:
h
isIn?(pu (s ,k
1
,i
1
).s o e,k
2
)
^:
cmp(k
1
,k
2
)
i
)
pu (pu (s ,k
1
,i
1
).s o e,k
2
,i
2
).s o e = pu (pu (s ,k
2
,i
2
).s o e,k
1
,i
1
).s o e
No ice ha in his case he e is no a subs i u ion o he in o ma ion asso cia ed o he key, bu
applying his equa ion successi ely,we will a i e o he s case since he key is he ein. The e o e,
we can apply he s equa ion and in his way o subs i u e he in o ma ion asso cia ed o he key.
Le us see now he equa ions o sho cu s. As b e o e, we dis inguish wo cases:
1. The key is he las one added o he s o e.
2. The key exis s, bu i is no he las one.
In he s case, we only ha e o exp ess ha he ob ained
sho cu
will b e he one ob ained
p e iously.
h
isIn?(pu (s ,k
1
,i
1
).s o e,k
2
)
^
cmp(k
1
,k
2
)
i
)
pu (pu (s ,k
1
,i
1
).s o e,k
2
,i
2
).sho cu = pu (s ,k
1
,i
1
).sho cu
7
In he second case weha e o jus exp ess ha he ob ained
sho cu
will b e he same as he one
ha wewould ha e ob ained, i he new key and he new in o ma ion had b een s o ed in he p e ious
s o e.
h
isIn?(pu (s ,k
1
,i
1
).s o e,k
2
)
^:
cmp(k
1
,k
2
)
i
)
pu (pu (s ,k
1
,i
1
).s o e,k
2
,i
2
).sho cu = pu (s ,k
2
,i
2
).sho cu
This do es no sp eci y ye comple ely he b eha iou o sho cu s, b ecause weha e no conside ed
he case in which he key is no he ein in ac , in his case,
pu
may e u n any alue as sho cu
bu he access o he sho cu should supply he app op ia e esul s. The equa ions o he op e a ion
ge In Sho
will desc ib e his b eha iou , as gi en nex .
2.2.2 Equa ions o he Obse e Op e a ions
Le us s udy now he b eha iou o he obse e op e a ions.
The equa ions o
ge In Sho
:
{
The s one will b e an e o equa ion, indica ing ha he op e a ion is no dened o an
emp y
s o e
. Recall ha his op e a ion is pa ial.
ge In Sho(c ea e,sc) = e o
{
We also include an equa ion o exp ess, he b eha iou when he
sho cu
whose
in o ma ion
wewan o consul is he same as he one e u ned in he las op e a ion o
s o e
.The
in o ma ion
ha we will ob ain will b e he one o his las op e a ion. In o de o compa e
he
sho cu s
we will use a p i a e op e a ion, deno ed
cmp
.
h
cmp(sc,pu (s ,k,i).sho cu )
i
)
ge In Sho(pu (s ,k,i).s o e,sc) = i
{
The nex equa ion indica es ha , i he
sho cu
is no he same as he one ob ained in
he las op e a ion o
pu
, hen he esul o consul ing he in o ma ion asso cia ed o he
sho cu
will b e he same as consul ing he p e ious
s o e
.
h
:
cmp(sc,pu (s ,k,i).sho cu )
i
)
ge In Sho(pu (s ,k,i).s o e,sc) = ge In Sho(s ,sc)
8
No ice ha , i he e was no
in o ma ion
asso cia ed o he
sho cu
,by applying successi ely
his equa ion, wewould ob ain
s =c ea e
, and he e o e om he s equa ion his is an
e o .
Equa ions o
ge Key
, simila o hose o
ge In Sho
:
ge Key(c ea e,sc) = e o
h
cmp(sc,pu (s ,k,i).sho cu )
i
)
ge Key(pu (s ,k,i).s o e,sc) = k
h
:
cmp(sc,pu (s ,k,i).sho cu )
i
)
ge Key(pu (s ,k,i).s o e,sc) = ge Key(s ,sc)
The Equa ions o
ge In Key
:
{
The s equa ion s a es ha , i he
key
o b e consul ed is he las one s o ed hen we will
ob ain he las he
in o ma ion
s o ed.
h
cmp(k
1
,k
2
)
i
)
ge In Key(pu (s ,k
1
,i).s o e,k
2
)= i
{
I he condi ion o he s equa ion do es no hold hen weha e a second equa ion, and
he co esp onding esul will b e ha o applying
ge In Key
on he p e ious
s o e
.
h
:
cmp(k
1
,k
2
)
i
)
ge In Key(pu (s ,k
1
,i).s o e,k
2
)=ge In Key(s ,k
2
)
{
Since he op e a ion in ques ion is a pa ial one (b ecause i is no dened when he
key
is no in he
s o e
)wemus also add a las equa ion which indica es ha consul ing he
in o ma ion
asso cia ed o a
key
in an emp y
s o e
will b e an e o .
ge In Key(c ea e,k) = e o
Equa ions o
isIn?
:
{
The s equa ion is in ui i ely clea . I we apply
isIn?
o a
key
and o an emp y
s o e
,
hen he esul will b e alse.
isIn?(c ea e,k) = alse
{
In he same way, he second equa ion comes na u ally. I he
key
o whichwe apply he
op e a ion
isIn?
is he las one added o he
s o e
, hen he esul will b e ue i he
key
is no he las one added, hen he esul will b e ha o applying
isIn?
o he p e ious
s o e
.
9
Using his ep esen a ion o he yp e
s o e
we s ill ha e an op e a ion o high cos , namely he
pu
op e a ion. When we s o e he da a by means o a
key
which is al eady in he
s o e
,weha e only o
ob ain he
sho cu
asso cia ed o he
key
and hen using i o access o he a ay, assigning he alue
o he new da a. In his case, he cos is ha o consul ing he able. Howe e , when he
key
is no
in he
s o e
,weha e o sea ch o ee p osi ion in he a ay, and his, in he wo s case, has linea
cos . Toa oid his cos we add ano he s uc u e o nd quickly a ee p osi ion. This s uc u e is a
queue whe e he ee p osi ions o he a ay a e s o ed (see Fig. 3). Wi h his mo dica ion, he cos
o nding a ee p osi ion is cons an (p o ided ha he implemen a ion o he queue is go o d enough,
i co esp onds jus o ob aining he s elemen o he queue). The cos o pu ing a p osi ion as a
ee one, while emo ing, could b e made also cons an i i jus co esp onds o he cos o pu ing an
elemen o he queue.
k
1
k
6
k
5
k
3
k
2
k
4
1 2 3 4 5 6 7 8 9 10 11 12 13
k
5
k
1
k
3
k
6
k
4
k
2
in
5
in
1
in
3
in
6
in
4
in
2
j
q
q)
-
-
666I 66
Figu e 3: a ay, able and queue
16
The ep esen a ion o he new so s o da a is:
s o e
is implemen ed by a eco d consis ing o h ee elds:
1.
a
: a ayo
n
comp onen s, whe e he alid indices a e he na u al numbe s be ween 1 and
n
, o a ce ain na u al
n
he comp onen s o he a ay a e pai s consis ing o wo elds:
in
(o yp e
in o ma ion
)and
key
(o yp e
key
).
2.
: a queue o
sho cu s
i.e., a queue con aining he indices co esp onding o he ee p osi-
ions o he a ay.
3.
: is a able o pai s
h
k ey sho cu
i
.
The
sho cu
is implemen ed by a na u al in he ange 0
:::n
. The alue 0 is used as an undened
alue. The es o he alues will co esp ond o he indices o he a ay.
To e i y ha he implemen a ion o he new ADT is co ec wi h esp ec o i s sp ecica ion we
ollow he me ho d p esen ed in 8]. I consis s o dening he abs ac ion unc ion, which ans o ms a
alue o he implemen a ion o a alue o i s mo del, deno ed by a e m which b elongs o i s asso cia ed
equi alence class in he quo ien - e m algeb a 4]. Since his unc ion is pa ially dened, wemus
also dene he in a ian o he ep esen a ion which es ablishes he condi ion ha he alues o he
implemen a ion mus sa is y so o ep esen alid alues o he ADT. Also, we need o indica e when
wo die en alues o he implemen a ion co esp ond o he same alue o ADT unde implemen a ion,
in o he wo ds, weha e o sp eci y he edeni ion o he equali y.
He e is a sho desc ip ion o he a ay, queue and able op e a ions, esp ec i ely, ha we a e going
o use.
cons
(
a p
) e u ns he alue in he p osi ion
p
o he a ay
a
ass
(
a p
) assigns he alue
in
he p osi ion
p
o he a ay
a
pu F i s
(
q
) pu s he alue
in he on o he queue
q
assig n
(
k
)
asso cia es he alue
o he key
k
in he able
deassig n
(
k
) asso cia es an undened alue o he
key
k
in he able
and
l ook up
(
k
) e u ns he alue asso cia ed o he key
k
in he able
.
The Abs ac ion Func ion
con e
(
h
a
i
)=
8
>
>
>
>
<
>
>
>
>
:
c ea e
i
=TABLE.c ea e
pu
(
con e
(
h
a pu F i s
(
sc
)
deassig n
(
k
)
i
)
k cons
(
a sc
)
:in
)
:s o e
i
=assign( ',k,sc)
17
The Rep esen a ion In a ian
The ep esen a ion in a ian mus assu e ha e e y p osi ion o he a ay is ee o o ccupied bu no
b o h o hem a he same ime. The e o e, i indica es ha any p osi ion o he a ay, i.e., any na u al
be ween 1 and
n
mus b e ei he in he queue o ee p osi ions (only once) o as a alue asso cia ed o
a
key
in he able. In his las case, he
key
canno b e wha e e : i mus coincide wi h he alue o
he eld o he a ay in his p osi ion. Since a
sho cu
canno b e asso cia ed o mo e han a
key
,a a
ce ain momen , wemus assu e also ha , gi en a p osi ion he e is only one
key
in he able whichi
is asso cia ed o.
Bu he
sho cu
dep ends on he
s o e
, he e o e he ep esen a ion in a ian mus indica e which
is he
sho cu
ha will assign ou ep esen a ion when we s o e an in o ma ion by means o a
key
ha is no ound in he
s o e
. Since he only condi ion ha mus sa is y he
sho cu
, is no o b e
asso cia ed o ano he
key
,any o he queue p osi ions can b e used, o ins ance i s head.
We can now w i e down he in a ian .
Fi s we will dene a p edica e ha indica es whe he a
sho cu
b elongs only once o he queue.
8
2
q ueue
8
sc sc
1
sc
2
2
sho cu
uniq ue
(
c ea e sc
)=
alse sc
2
c ea e
=
alse
uniq ue
(
enq ueue
(
sc
)
sc
)=
:
(
sc
2
)
sc
2
enq ueue
(
sc
)=
ue
:
ig
(
sc
1
sc
2
)]
)
:
ig
(
sc
1
sc
2
)]
)
uniq ue
(
enq ueue
(
sc
1
)
sc
2
)=
uniq ue
(
sc
2
)
sc
2
2
enq ueue
(
sc
1
)=
sc
2
2
In Rep(
h
a
i
)
8
j
:1
j
n
:
uniq ue
(
j
)
^:9
k
:
l ook up
(
k
)=
j
_
:
(
j
2
)
^9
!
k
:
lookup
(
k
)=
j
^
8
k
:
l ook up
(
k
)
6
=
unde ined
:
cons
(
a l ook up
(
k
))
:key
=
k
^
8
k
:
:
isI n
?(
con e
(
h
a
i
)
k
):
pu
(
con e
(
h
a
i
)
ki
)
:sho cu
=
head
(
)
The Equali y Redeni ion
The equali y edeni ion exp esses ha he alues o he a ay in i s ee p osi ions ( hose ound in
he queue) a e no ele an o he abs ac alue. This means ha he same
s o e
is ob ained i any
ee p osi ion o he a aywe e mo died. Also, i should exp ess ha wo
s o es
a e equal when wo
ables, cons uc ed in die en ways, con ain he same se o pai s. Bu his has b een con empla ed in
he equa ions o he yp e able, and he e o e he e is no need o include i in he equali y edeni ion.
18
8
j
:1
j
n
^
(
j
2
):
con e
(
h
a
i
)=
con e
(
h
ass
(
a j al
)
i
)
3.2 De i ing co de o he op e a ions
In his subsec ion, we p esen he de i a ion o he implemen a ion a pa icula op e a ion,
pu
,asa
case s udy o he whole de i a ion p o cess
2
. In o de o simpli y he demons a ions wewo k unde
he hyp o hesis ha
n
is big enough o assu e ha he queue is ne e emp y. La e , a he nal
implemen a ion, weha e conside ed his p ossible case o e o .
3.2.1 De i a ion o
pu
Acco ding o 8] he op e a ion
pu
mus b e implemen ed by a unc ion sa is ying he ollowing p e-p os
sp ecica ion:
unc ion
impl pu (
h
a:a ay :queue : able
i
k:keyi:in o ma ion)
e u n
hh
a
1
:a ay
1
:queue
1
: able
i
sc:sho cu
i
P e: In Rep(
h
a, ,
i
)
g
P
Pos : In Rep(
h
a
1
,
1
,
1
i
)
^
con e (
h
a
1
,
1
,
1
i
)=pu (con e (
h
a, ,
i
),k,i).s o e
^
sc=pu (con e (
h
a, ,
i
),k,i).sho cu
g
e u n
hh
a
1
,
1
,
1
i
,sc
i
The de i a ion o his unc ion is c ucial o he e ica ion p o cess no only b ecause o i s dicul y
bu also due o he ac ha weha e o p o e, p e iously, a se ie o lemmas necessa y also o he
de i a ion o he es o he unc ions.
The Lemmas ega ding he ables
Lemma 1
lookup(assign( ,k,sc),k
1
)=undened
]
):
ig(k,k
1
)
Lemma 2
lookup( ,k)=undened
]
)
deassign( ,k)=
Lemma 3
lookup( ,k)=undened
]
)
deassign(assign( ,k,sc),k)=
Lemma 4
lookup( ,k)
6
=
undened
]
)
6
=
TABLE.c ea e
2
See 11] o he comple e de i a ion.
19
Lemma 5
lookup( ,k)
6
=
undened
]
)
=assign(
1
,k,lookup( ,k))
Lemma 6
lookup(deassign( ,k),k)=undened
Lemma 7
=assign(
1
,k
1
,sc
1
)
]
)
=assign(
2
,k
1
,sc
1
)
^
lookup(
2
,k
1
)=undened
Lemma 8
isIn?(con e (
h
a, ,
i
),k)=(lookup( ,k)
6
=
undened)
The Lemmas ega ding he queues
Lemma 9
pu Fi s (dequeue(q),head(q))=q
Lemma 10
head(pu Fi s (q, ))=
Using hese lemmas le us see he de i a ion o he unc ion
pu
.
The esul o he op e a ion will dep end on whe he he
key
o b e s o ed is ound in he
s o e
o
no . The e o e, we conside an al e na i e o he design o he unc ion. Since, om Lemma 8, he
esul o
isIn?(con e (
h
a, ,
i
),k)
is equi alen o
lookup( ,k)
6
=
undened
we will pu his las one as a
condi ion o he al e na i e.
unc ion
impl pu (
h
a:a ay :queue : able
i
k:keyi:in o ma ion)
e u n
hh
a
1
:a ay
1
:queue
1
: able
i
sc:sho cu
i
P e: In Rep(
h
a, ,
i
)
g
i
lo okup( ,k)=undened
hen
A
1
:In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
g
P
1
else
A
2
:In Rep(
h
a, ,
i
)
^
lo okup( ,k)
6
=undened
g
P
2
end i
Pos : In Rep(
h
a
1
,
1
,
1
i
)
^
con e (
h
a
1
,
1
,
1
i
)=pu (con e (
h
a, ,
i
),k,i).s o e
^
sc=pu (con e (
h
a, ,
i
),k,i).sho cu
g
e u n
hh
a
1
,
1
,
1
i
,sc
i
20
Le 's see wha asse ion we can deduce om A
1
.
In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
)
( Lemma 8 )
In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
^:
isIn?(con e (
h
a, ,
i
),k)
)
( Deni ion o In Rep )
In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
^
pu (con e (
h
a, ,
i
),k,i).sho cu =head( )
)
( Equali y Redeni ion and head( )
2
)
In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
^
pu (con e (
h
a, ,
i
),k,i).sho cu =head( )
^
con e (
h
a, ,
i
)= con e (
h
ass(a,head( ),
h
k,i
i
), ,
i
)
)
( The in o duc ion o he op e a ion pu in b o h sides o he equali y)
In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
^
pu (con e (
h
a, ,
i
),k,i).sho cu =head( )
^
pu (con e (
h
a, ,
i
),k,i).s o e= pu (con e (
h
ass(a,head( ),
h
k,i
i
), ,
i
),k,i).s o e
)
( Lemma 3 )
In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
^
pu (con e (
h
a, ,
i
),k,i).sho cu =head( )
^
pu (con e (
h
a, ,
i
),k,i).s o e= pu (con e (
h
ass(a,head( ),
h
k,i
i
), ,deassign(assi gn ( ,k,head( )),k)
i
),k,i).s o e
)
( Lemma 9 )
In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
^
pu (con e (
h
a, ,
i
),k,i).sho cu =head( )
^
pu (con e (
h
a, ,
i
),k,i).s o e=
pu (con e (
h
ass(a,head( ),
h
k,i
i
),pu Fi s (d equeu e( ),head( )),deassi gn(ass ign ( ,k,head( )),k)
i
),k,i).s o e
)
( Eq. o a ay cons(ass(A,i, ),i)= )
In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
^
pu (con e (
h
a, ,
i
),k,i).sho cu =head( )
^
pu (con e (
h
a, ,
i
),k,i).s o e= pu (con e (
h
ass(a,head( ),
h
k,i
i
),pu Fi s (deq ueue( ),head( )),
deassign(assign ( ,k,head( )),k)
i
),k,cons(ass(a,hea d( ),
h
k,i
i
), head( )).in ).s o e
)
( Abs ac ion Func ion )
In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
^
pu (con e (
h
a, ,
i
),k,i).sho cu =head( )
^
pu (con e (
h
a, ,
i
),k,i).s o e= con e (
h
ass(a,head( ),
h
k,i
i
),dequeue( ), assign( ,k,head( ))
i
)
)
( In Rep(
h
a, ,
i
)
^
lo okup( ,k)=unden ed]
)
In Rep(
h
ass(a,head( ),
h
k,i
i
),dequeue( ), assign( ,k,head( ))
i
))
In Rep(
h
ass(a,head( ),
h
k,i
i
),dequeue( ), assign( ,k,head( ))
i
)
^
pu (con e (
h
a, ,
i
),k,i).sho cu =head( )
^
pu (con e (
h
a, ,
i
),k,i).s o e= con e (
h
ass(a,head( ),
h
k,i
i
),dequeue( ), assign( ,k,head( ))
i
)
The e o e, om A
1
we can deduce his las asse ion, deno ed A
3
.
Le 's see wha asse ion we can deduce om A
2
.
In Rep(
h
a, ,
i
)
^
lo okup( ,k)
6
=undened
)
( Lemma 5 )
In Rep(
h
a, ,
i
)
^
=assign(
1
,k,lo okup( ,k)) )
21
)
( Abs ac ion Func ion )
In Rep(
h
a, ,
i
)
^
con e (
h
a, ,
i
)= pu (con e (
h
a,pu Fi s ( ,lo oku p( ,k)),deassi gn( ,k)
i
),k, cons(a,lo okup( ,k)).in ).s o e
)
( Equali y Redeni ion and
8
k:k
2
pu Fi s ( ,k) )
In Rep(
h
a, ,
i
)
^
con e (
h
a, ,
i
)= pu (con e (
h
ass(a,lo okup ( ,k),
h
cons(a,lo o kup ( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassig n( ,k)
i
),k,cons(a,lo okup ( ,k)).in ).s o e
)
( The in o duc ion o he op e a ion pu in b o h sides o he equali y)
In Rep(
h
a, ,
i
)
^
pu (con e (
h
a, ,
i
),k,i).s o e= pu (pu (con e (
h
ass(a,lo oku p( ,k),
h
cons(a, lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassi gn( ,k)
i
),k,cons(a,l o oku p( ,k)).in ).s o e,k,i).s o e
^
pu (con e (
h
a, ,
i
),k,i).sho cu = pu (pu (con e (
h
ass(a,lo o kup( ,k),
h
cons (a, lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassi gn( ,k)
i
),k,cons(a,lo oku p( ,k)).in ).s o e,k,i).sho cu
)
( Eq. o s o e pu (pu (s ,k,i
1
).s o e,k,i
2
).s o e= pu (s ,k,i
2
).s o e, and
pu (pu (s ,k,i
1
).s o e,k,i
2
).sho cu =pu (s ,k,i
1
).sho cu )
In Rep(
h
a, ,
i
)
^
pu (con e (
h
a, ,
i
),k,i).s o e= pu (con e (
h
ass(a,lo okup( ,k),
h
cons(a , lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassi gn( ,k)
i
),k,i).s o e
^
pu (con e (
h
a, ,
i
),k,i).sho cu = pu (con e (
h
ass(a,lo oku p( ,k),
h
cons(a, lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassi gn( ,k)
i
),k,cons(a,l o ok up( ,k)).in ).sho cu
)
( Eq. o a ay cons(ass(A,i, ),i)= )
In Rep(
h
a, ,
i
)
^
pu (con e (
h
a, ,
i
),k,i).s o e= pu (con e (
h
ass(a,lo okup( ,k),
h
cons(a , lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassi gn ( ,k)
i
),k,cons(ass(a,lo okup ( ,k),
h
cons(a,lo okup( ,k)).key,i
i
),lo ok up( ,k)).in ).s o e
^
pu (con e (
h
a, ,
i
),k,i).sho cu = pu (con e (
h
ass(a,lo oku p( ,k),
h
cons(a, lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassi gn( ,k)
i
),k,cons(a,l o oku p( ,k)).in ).sho cu
)
( Lemma 6 )
In Rep(
h
a, ,
i
)
^
pu (con e (
h
a, ,
i
),k,i).s o e= pu (con e (
h
ass(a,lo okup( ,k),
h
cons(a , lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassi gn ( ,k)
i
),k,cons(ass(a,lo okup ( ,k),
h
cons(a,lo okup( ,k)).key,i
i
),lo ok up( ,k)).in ).s o e
^
pu (con e (
h
a, ,
i
),k,i).sho cu = pu (con e (
h
ass(a,lo oku p( ,k),
h
cons(a, lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassig n( ,k)
i
),k,cons(a,lo okup ( ,k)).in ).sho cu
^
lo okup(deassig n( ,k),k)=unde ned
)
( Lemma 8 )
In Rep(
h
a, ,
i
)
^
pu (con e (
h
a, ,
i
),k,i).s o e= pu (con e (
h
ass(a,lo okup( ,k),
h
cons(a , lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassi gn ( ,k)
i
),k,cons(ass(a,lo okup ( ,k),
h
cons(a,lo okup( ,k)).key,i
i
),lo ok up( ,k)).in ).s o e
^
22
pu (con e (
h
a, ,
i
),k,i).sho cu = pu (con e (
h
ass(a,lo oku p( ,k),
h
cons(a, lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassig n( ,k)
i
),k,cons(a,lo okup ( ,k)).in ).sho cu
^
:
isIn?(con e (
h
ass(a,lo ok up( ,k),
h
cons(a, lo okup( ,k)).key,i
i
), pu Fi s ( ,lo okup( ,k)),deassi gn( ,k)
i
),k)
)
(In Rep(
h
a, ,
i
)
^
lo okup( ,k)
6
=undened ]
)
In Rep(
h
ass(a,lo okup( ,k),
h
cons(a,l o oku p( ,k)) .key,i
i
), pu Fi s ( ,lo okup( ,k)),deassi gn( ,k)
i
))
In Rep(
h
a, ,
i
)
^
pu (con e (
h
a, ,
i
),k,i).sho cu =head(pu Fi s ( , lo okup( ,k))
^
pu (con e (
h
a, ,
i
),k,i).s o e= pu (con e (
h
ass(a,lo okup( ,k),
h
cons(a , lo okup( ,k)).key,i
i
),
pu Fi s ( ,lo okup( ,k)),deassi gn( ,k)
i
),k,cons(as s(a,lo o kup ( ,k),
h
cons(a,lo okup( ,k)).key,i
i
),lo okup ( ,k)).in ).s o e
)
( Abs ac ion Func ion and Lemma 10 )
In Rep(
h
a, ,
i
)
^
pu (con e (
h
a, ,
i
),k,i).s o e= con e (
h
ass(a,lo okup( ,k),
h
cons(a,lo okup ( ,k)).key,i
i
), ,
i
)
^
pu (con e (
h
a, ,
i
),k,i).sho cu =lo okup( ,k)
)
( In Rep(
h
a, ,
i
)
^
lo okup( ,k)
6
=undened ]
)
In Rep(
h
ass(a,lo okup( ,k),
h
cons(a,lo okup( ,k)).key,i
i
), ,
i
))
In Rep(
h
ass(a,lo okup( ,k),
h
cons(a,lo okup ( ,k)).key,i
i
), ,
i
)
^
pu (con e (
h
a, ,
i
),k,i).s o e= con e (
h
ass(a,lo okup( ,k),
h
cons(a,lo okup ( ,k)).key,i
i
), ,
i
)
^
pu (con e (
h
a, ,
i
),k,i).sho cu =lo okup( ,k)
The e o e, om A
2
we can deduce his las asse ion, deno ed A
4
.
By in o ducing hese new asse ions weha e:
unc ion
impl pu (
h
a:a ay :queue : able
i
k:keyi:in o ma ion)
e u n
hh
a
1
:a ay
1
:queue
1
: able
i
sc:sho cu
i
P e: In Rep(
h
a, ,
i
)
g
i
lo okup( ,k)=undened
hen
A
1
:In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
g
A
3
g
P
1
else
A
2
:In Rep(
h
a, ,
i
)
^
lo okup( ,k)
6
=undened
g
A
4
g
P
2
end i
Pos : In Rep(
h
a
1
,
1
,
1
i
)
^
con e (
h
a
1
,
1
,
1
i
)=pu (con e (
h
a, ,
i
),k,i).s o e
^
sc=pu (con e (
h
a, ,
i
),k,i).sho cu
g
e u n
hh
a
1
,
1
,
1
i
,sc
i
23
Ha ing hese wo new asse ions i is easy o iden i y,by means o he assignmen ule, which
exp essions should b e assigned o
a
1
1
1
, and
sc
in each case. By doing hese assignmen s we ob ain
he ollowing implemen a ion o he
pu
unc ion:
unc ion
impl pu (
h
a:a ay :queue : able
i
k:keyi:in o ma ion)
e u n
hh
a
1
:a ay
1
:queue
1
: able
i
sc:sho cu
i
P e: In Rep(
h
a, ,
i
)
g
i
lo okup( ,k)=undened
hen
A
1
:In Rep(
h
a, ,
i
)
^
lo okup( ,k)=undened
g
A
3
g
a
1
:= ass(a,head( ),
h
k,i
i
)
1
:= dequeue( )
1
:= assign( ,k,head( ))
sc:= head( )
else
A
2
:In Rep(
h
a, ,
i
)
^
lo okup( ,k)
6
=undened
g
A
4
g
a
1
:= ass(a,lo okup( ,k),
h
cons(a,lo okup( ,k)).key,i
i
)
1
:=
1
:=
sc:= lo okup( ,k)
end i
Pos : In Rep(
h
a
1
,
1
,
1
i
)
^
con e (
h
a
1
,
1
,
1
i
)=pu (con e (
h
a, ,
i
),k,i).s o e
^
sc=pu (con e (
h
a, ,
i
),k,i).sho cu
g
e u n
hh
a
1
,
1
,
1
i
,sc
i
24
3.3 Chosing implemen a ions o he comp onen s o he ep esen a ion
Once weha e de i ed he co de o he op e a ions, we s udy wo pa icula implemen a ions o he new
ADT
3
. In b o h o hem we use he dynamic memo y zone as an a ay and he queue o he sys em as
ha o he ee sho cu s. These wo implemen a ions die in he implemen a ion o he able. In he
s one, weha e used a hashing able wi h chaining. Using a hashing able equi es he pa ame e
KEY
o include also a hashing unc ion. In he second implemen a ion weha e implemen ed he
able wi h an AVL
4
1].
We gi e nex he cos o he op e a ions o he ADT dep ending on he implemen a ion used o
able (see Table 1).
Table 1: The cos o he unc ions
COST
FUNTIONS AVL HASHING
TABLE
c ea e
O
(1)
O
(
)
pu
O
(log
n
)
O
(1)
ge In Key
O
(log
n
)
O
(1)
ge In Sho
O
(1)
O
(1)
ge Key
O
(1)
O
(1)
isIn?
O
(log
n
)
O
(1)
ge Sho cu
O
(log
n
)
O
(1)
isEmp y?
O
(1)
O
(1)
emo e
O
(log
n
)
O
(1)
mo di y
O
(1)
O
(1)
As i can b e seen, he cos o he op e a ions
ge Key
,
ge In Sho
and
modi y
is cons an in b o h
implemen a ions b ecause he able is no accessed, in his case. The cos o he emaining op e a ions
3
See 11] o mo e de ails.
4
An AVL is a bina y sea ch ee whe e he di e ence b e ween he heigh o i s sub ees is less o equal han 1 and he
sub ees a e AVL in u n.
25
14]
Wi h, N.
P og amminginModula-2.
Sp inge -Ve lag, 3 d. edi ion, 1988.
32