Faculteit Elektrotechniek — Vakgroep ICS Tentamen ...

es.ele.tue.nl

Faculteit Elektrotechniek — Vakgroep ICS Tentamen ...

Faculteit Elektrotechniek Vakgroep ICS

Tentamen Netwerkmodellen (5J070) 18 november 1997

Uitwerkingen

OPGAVE 1. basisprogrammeervaardigheden

a. int count_leaves(treenode *tree)

{

if(tree == NULL)

return(0); /* empty tree has no leaves */

if(tree–>left_child == NULL && tree–>right_child == NULL)

return(1); /* this is a leaf */

/* if we get here, this treenode has at least one child */

return(count_leaves(tree–>left_child) +

count_leaves(tree–>right_child));

}

b. (|V¡¢ , elk knooppunt wordt precies 1 x bezocht.

c. Mijn algoritme bezoekt de knooppunten in een preorder volgorde (omdat de expressie

van het laatste return statement van links naar rechts geëvalueerd wordt!).

d. Ja, het kan, en dat is altijd waar voor recursieve algoritmes, ze kunnen altijd ook met loop

constructies geprogrammeerd worden. Je zult alleen waarschijnlijk een stuk werk van de

compiler over moeten nemen, dus moeten nadoen wat er met de stack gebeurt. Hieronder

bewaren we nog te behandelen knooppunten in een fifo queue:

1


tentamen netwerkmodellen van 18–11–97: uitwerkingen

int count_leaves(treenode *tree)

{

int count = 0, is_leaf;

treenode *node;

queue q;

}

if(tree != NULL) {

enqueue(&q, tree) /* start with root node */

while(!emptyqueuep(&q)) {

node = dequeue(&q); /* examine one node */

is_leaf = 1; /* initial guess */

if(node–>left_child != NULL) {

is_leaf = 0; /* not a leaf after all */

enqueue(&q, node–>left_child);

}

if(node–>right_child != NULL)

is_leaf = 0; /* not a leaf after all */

enqueue(&q, node–>right_child);

}

if(is_leaf == 1)

count++;

} /* while */

} /* if */

return(count);

OPGAVE 2. heapsort

a. Zie diktaat.

b. heapify: £ (log(n)), build_heap: £ (n) en heapsort: £ (n log(n)) met n het aantal

elementen in de heap.

c. index left child: 3i ¤ 1

index middle child: 3i

index right child: 3i ¥ 1

index parent:

i ¥ 1

3

d. index first child: ¦ k ¤ i ¤ (k 2)

index last child: ¦ k ¥ i 1

index parent: ¥ i ¤ k 2

k

e. Heapify begint met uit te zoeken waar de grootste sleutelwaarde zit, in het huidige knooppunt

of in één van zijn kinderen. Hiervoor moeten voor een k–heap k vergelijkingen worden

uitgevoerd. In het ergste geval roept heapify zichzelf klog(n) keer recursief aan.

Totale hoeveelheid werk: ¦ k k § k ¦ log(n)

log(n) . Hierin is log(n) constant voor een

log(k)

2


tentamen netwerkmodellen van 18–11–97: uitwerkingen

gegeven probleem, dus het gaat om het gedrag van

k

. Je kunt even een paar waarden

log(k)

invullen voor k, maar met onderstaande figuur is het nog inzichtelijker, er is een minimum

in de buurt van ¨ k 3, voor ¨ k 2 en ¨ k 4 is het precies even duur, en voor grotere

k wordt het duurder.

4.4

4.2

4

3.8

3.6

3.4

3.2

3

2.8

2.6

2 3 4 5 6 7 8 9 10

OPGAVE 3. tweevoudig samenhangende componenten

a.

s t u v

w x y

b. Zie diktaat bladzijde 74 en 75.

c. Zie diktaat bladzijde 79, 80 en 81.

d.

stack:

disc=1

low=1

s t u v

w x y

z

z

3

x / log(x)


stack: (s,w)

disc=1

low=1

s t u v

w

disc=2

low=2

x y

stack: (w,t) (s,w)

disc=1 disc=3

low=1 low=3

s t u v

w

disc=2

low=2

x y

stack: (t,x) (w,t) (s,w)

disc=1 disc=3

low=1 low=3

s t u v

w x y

disc=2

low=2

disc=4

low=4

stack: (x,y) (t,x) (w,t) (s,w)

tentamen netwerkmodellen van 18–11–97: uitwerkingen

z

z

z

4


disc=1 disc=3

low=1 low=3

s t u v

w x y

disc=2

low=2

disc=4

low=4

tentamen netwerkmodellen van 18–11–97: uitwerkingen

disc=5

low=5

stack: (y,u) (x,y) (t,x) (w,t) (s,w)

disc=1 disc=3 disc=6

low=1 low=3 low=6

s t u v

w x y

disc=2

low=2

disc=4

low=4

disc=5

low=5

stack: (u,v) (y,u) (x,y) (t,x) (w,t) (s,w)

disc=1 disc=3 disc=6 disc=7

low=1 low=3 low=6 low=7

s t u v

w x y

disc=2

low=2

disc=4

low=4

disc=5

low=5

stack: (v,z) (u,v) (y,u) (x,y) (t,x) (w,t) (s,w)

z

z

z

5


disc=1 disc=3 disc=6 disc=7

low=1 low=3 low=6 low=7

s t u v

w x y

disc=2

low=2

disc=4

low=4

tentamen netwerkmodellen van 18–11–97: uitwerkingen

disc=5

low=5

z

disc=8

low=8

stack: (v,z) (u,v) (y,u) (x,y) (t,x) (w,t) (s,w)

disc=1 disc=3 disc=6 disc=7

low=1 low=3 low=6 low=7

s t u v

w x y

disc=2

low=2

disc=4

low=4

disc=5

low=5

stack: (u,v) (y,u) (x,y) (t,x) (w,t) (s,w)

Component 1: (v,z)

z

disc=8

low=8

disc=1

low=1

s

disc=3

low=3

t

disc=6

low=4

u

disc=7

low=7

v

A A

w x y

disc=2

low=2

disc=4

low=4

disc=5

low=5

stack: (y,u) (x,y) (t,x) (w,t) (s,w)

Component 2: (u,v)

z

disc=8

low=8

6


disc=1

low=1

s

disc=3

low=3

t

disc=6

low=4

u

disc=7

low=7

v

A A

w x y

disc=2

low=2

disc=4

low=4

disc=5

low=4

stack: (u,x) (y,u) (x,y) (t,x) (w,t) (s,w)

tentamen netwerkmodellen van 18–11–97: uitwerkingen

z

disc=8

low=8

disc=1

low=1

s

disc=3

low=3

t

disc=6

low=4

u

disc=7

low=7

v

A A

w x A y

disc=2

low=2

disc=4

low=4

disc=5

low=4

stack: (t,x) (w,t) (s,w)

Component 3: (u,x) (y,u) (x,y)

z

disc=8

low=8

disc=1

low=1

s

disc=3

low=1

t

disc=6

low=4

u

disc=7

low=7

v

A A A

w x A y

disc=2

low=2

disc=4

low=4

disc=5

low=5

stack: (t,s) (w,t) (s,w)

Component 4: (t,x)

z

disc=8

low=8

7


disc=1

low=1

s

disc=3

low=1

t

disc=6

low=4

u

disc=7

low=7

v

A A A

w x A y

disc=2

low=1

disc=4

low=4

disc=5

low=4

stack: (t,s) (w,t) (s,w)

tentamen netwerkmodellen van 18–11–97: uitwerkingen

z

disc=8

low=8

disc=1 disc=3 disc=6 disc=7

low=1 low=1 low=4 low=7

s t u v

A A A

w x A y

disc=2

low=1

stack:

disc=4

low=4

disc=5

low=5

Component 5: (t,s) (w,t) (s,w)

z

disc=8

low=8

disc=1 disc=3 disc=6 disc=7

low=1 low=1 low=4 low=7

s t u v

A A A

w x A y z

disc=2

low=1

disc=4

low=4

disc=5

low=4

disc=8

low=8

e. De tweevoudig samenhangende componenten zijn:

©

©

©

©

takken: (s,t),(s,w),(t,w)

knooppunten: s,t,w

takken: (t,x)

knooppunten: t,x

takken: (u,x),(u,y),(x,y)

knooppunten: u,x,y

takken: (u,v)

knooppunten: u,v

8


takken: (v,z)

knooppunten: v,z

De articulatiepunten zijn: t,x,u,v

OPGAVE 4. netwerkstroomproblemen

a. Zie diktaat.

b. Zie diktaat.

tentamen netwerkmodellen van 18–11–97: uitwerkingen

Gegeven het volgende


netwerkstroomprobleem:




30

50

5

a b c

s 5

5

t

5

20

15

d e f

20

70

c. De waarde van de maximale stroomfunctie: 20

9

5

40

60









15

d. Wat is de minimale snede? Zie plaatje, ook te noteren als {{s, a, b, d, e, f}, {c, t}}.

e. 4, omdat er elke keer tenminste 5 toegevoegd wordt aan de waarde. Elke capaciteit is per

slot van rekening een veelvoud van 5.

More magazines by this user
Similar magazines