25
Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS, kapitel 10] Gerth Stølting Brodal Aarhus Universitet

Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS, kapitel 10]

Gerth Stølting BrodalAarhus Universitet

Page 2: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

[CLRS, Del 3] : Datastrukturer

Oprethold en struktur for en dynamisk mængde data

Page 3: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Minimum(S) pointer til element

Maximum(S) pointer til element

Search(S,x) pointer til element

Member(S,x) TRUE eller FALSE

Successor(S,x) pointer til element

Predecessor(S,x) pointer til element

Insert(S,x) pointer til element

Delete(S,x) -

DeleteMin(S) element

DeleteMax(S) element

Join(S1 ,S2 ) mængde S

Split(S,x) mængder S1 og S2

Abstrakte Datastrukturer for Mængder

-Min-priorite

tskø

-Max-priorite

tskø

- Ordbog

Fore

spør

gsel

Opd

ater

inge

r

Page 4: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Empty(S) TRUE eller FALSE

Head(S), Tail(S) pointer til element

Next(S,x), Prev(S,x) pointer til element

Search(S,x) pointer til element

Push(S,x) -

Pop/Dequeue(S) element

Enqueue(S) -

Delete(S,x) element

InsertAfter(S,x,y) pointer til element

Fore

spør

gsel

Opd

ater

inge

r

Abstrakte Datastrukturer for Lister

-Stak-Kø

3 10 6 8 20 -7 6 5 25 7 3 -3 13, , , , , , , , , , , , ,

Enqueue(43)

pop/dequeue

push(27)

11

InsertAfter(6,4)prev nexthead tail

Page 5: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Stak

Page 6: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Stak : Array Implementation

Stack-Empty, Push, Pop : O(1) tid

87654321

top[S]=7

pop = 4 push(4)

-363712 4

top[S]=6

87654321

-363712

Page 7: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Stak : Overløb

? 87654321 9 10 11 12 13 14 15 16

top[s]=9

-363712 4 9 13

Array fordobling : O(n) tid

87654321

top[S]=8Push(13)

-363712 4 9

Page 8: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Fordoble arrayet når det er fuld

Tid for n udvidelser: 1+2+4+···+n/2+n = O(n)

Array Fordobling

Halver arrayet når det er <1/4 fyldt

Tid for n udvidelser/reduktioner:O(n)

1

2

48

16

32

3216

16

8

16

8

Page 9: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Tid for n udvidelser/reduktioner er O(n)Plads ≤

4 ·

aktuelle antal elementer

Array Fordobling + Halvering – en generel teknik

Array implementation af Stak: n push og pop operationer tager O(n) tid

Page 10: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Page 11: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Kø : Array Implementation

87654321

tail[Q]=2 head[Q]=4

-363 2 7-4

87654321

head[Q]=3 tail[Q]=7

-3637

Enqueue(2)Enqueue(7)Engueue(-4)Dequeue = 7

Enqueue, dequeue : O(1) tid

Page 12: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Kø : Array Implementation

Empty

: tail[Q]=head[Q] ?

Enqueue(9)

87654321

head[Q]=4tail[Q]=3

-363 2 7-4 5

87654321 9 10 11 12 13 14 15 16

head[Q]=1 tail[Q]=9

-363 2 7 -4 5 9

Array implementation af Kø: n enqueue og dequeue operationer tager O(n) tid

Overløb : array fordobling/halvering

Page 13: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Arrays (med Fordobling/Halvering)

StakPush(S,x) O(1)*

Pop(S) O(1)*

KøEnqueue(S,x) O(1)*

Dequeue(S) O(1)*

* Worst-case uden fordobling/halveringAmortiseret ([CLRS, Kap. 17]) med fordobling/halvering

Page 14: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Kædede lister

Page 15: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Kædede ListerEnkelt kædede (ikke-cyklisk og cyklisk)

Dobbelt kædede (ikke-cyklisk og cyklisk)

8 3 -3 2 4key next

head

-3 24 -38headkey nextprev

-3 24 -3key nextprev

headsentinel/nil

3 -3 2 4key next

head

Page 16: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

-3 24 -38headkey nextprev

List-Search O(n)List-Insert O(1)List-Delete O(1)

Dobbelt Kædede Lister

Page 17: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

List-Search’ O(n)List-Insert’ O(1)List-Delete’ O(1)

-3 24 -3key nextprev

headsentinel/nil

Dobbelt Kædede Cykliske Lister

Page 18: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

StakPush(S,x) O(1)

Pop(S) O(1)

KøEnqueue(S,x) O(1)

Dequeue(S) O(1)

-3 24 -3key nextprev

headsentinel/nil

Dobbelt Kædede Cykliske Lister

Page 19: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,
Page 20: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

”The Challenge Puzzle”

?

Page 21: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

”The Challenge Puzzle”

Nederste- venstre fri

Før

Efter

L := Tomt brætB := Alle brikkerSolve(L,B)

procedure Solve(Delløsning

L, Brikker B)for alle b i B

for alle orienteringer af b (* max 8 forskellige *)if b kan placeres i nederste venstre fri then

fjern b fa Bindsæt b i Lif |B|=0 thenrapporter L er en løsning

elseSolve(L,B)

fislet b fra Lgenindsæt b i B

fi

Page 22: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

4.040 løsninger

Solve placerer8.387.259 brikker

”The Challenge Puzzle”

Page 23: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

(Jorge Stolfi)

Page 24: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Binær Træ Repræsentation

Felter: Left, right, parent

Page 25: Algoritmer og Datastrukturer 1 - Aarhus Universitettildeweb.au.dk/au121/dADS1-08/slides/stacks.pdf · 2008. 2. 15. · Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS,

Træ Repræsentation

Felter: Left, right sibling, parent