Examenes Programacion III

download Examenes Programacion III

of 115

Transcript of Examenes Programacion III

  • 7/29/2019 Examenes Programacion III

    1/115

    EXMENES

    RESUELTOS

    PROGRAMACIN

    III

    INFORMTICA

    SISTEMASY GESTIN

    DELEGACIN DE ALUMNOS

    CENTRO ASOCIADO DE BALEARES

  • 7/29/2019 Examenes Programacion III

    2/115

    EXMENES PROGRAMACIN III

  • 7/29/2019 Examenes Programacion III

    3/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e F e b r e r o

    E x a m e n p r i m e r a s e m a n a - C u r s o 1 9 9 5 - 9 6

    P r o b l e m a 1 ( 5 p u n t o s ) . E l t i e m p o d e e j e c u c i o n d e u n a l g o r i t m o v i e n e d a d o

    p o r T ( n ) = 2

    n

    2

    . E n c o n t r a r u n a f o r m a e c i e n t e d e c a l c u l a r T ( n ) , s u p o n i e n d o q u e

    e l c o s t e d e m u l t i p l i c a r d o s e n t e r o s e s p r o p o r c i o n a l a s u t a m a ~ n o e n r e p r e s e n t a c i o n

    b i n a r i a .

    P r o b l e m a 2 ( 5 p u n t o s ) . U n r e c u b r i m i e n t o d e v e r t i c e s d e u n g r a f o n o d i r i g i d o

    G = h V A i e s u n c o n j u n t o d e v e r t i c e s t a l e s q u e c a d a a r i s t a d e l g r a f o i n c i d e e n ,

    a l m e n o s , u n v e r t i c e d e V . D i s e ~ n a r u n a l g o r i t m o q u e , d a d o u n g r a f o n o d i r i g i d o ,

    c a l c u l e u n r e c u b r i m i e n t o d e v e r t i c e s d e t a m a ~ n o m n i m o p a r a u n g r a f o d a d o .

    L a r e s o l u c i o n d e c a d a p r o b l e m a d e b e i n c l u i r :

    E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    D e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    E s t r u c t u r a s d e d a t o s .

    A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    E s t u d i o d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s :

    V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o .

    V u e l t a a t r a s : d e s c r i p c i o n d e l a r b o l d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    4/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e F e b r e r o

    E x a m e n s e g u n d a s e m a n a - C u r s o 1 9 9 5 - 9 6

    P r o b l e m a 1 ( 5 p u n t o s ) . L a s 2 8 c h a s d e d o m i n o s o n d e l a f o r m a ( i j ) c o n

    i j = 1 : : : 6 . U n a c h a d e d o m i n o p u e d e c o l o c a r s e a c o n t i n u a c i o n d e l a a n t e r i o r

    s i c o i n c i d e n l o s v a l o r e s d e l o s e x t r e m o s q u e s e t o c a n . P o r e j e m p l o , a c o n t i n u a c i o n

    d e l a c h a ( 1 2 ) p u e d e c o l o c a r s e l a ( 2 4 ) . D i s e ~ n a r u n a l g o r i t m o q u e p r o d u z c a

    t o d a s l a s c a d e n a s p e r m i s i b l e s q u e c o n t e n g a n t o d a s l a s c h a s d e l d o m i n o .

    P r o b l e m a 2 ( 5 p u n t o s ) . D a d a l a s u c e s i o n d e n i d a c o m o f

    n

    = a f

    n ; 3

    + b f

    n ; 2

    +

    c f

    n ; 1

    s e p i d e d i s e ~ n a r u n a l g o r i t m o q u e c a l c u l e e n t i e m p o l o g a r t m i c o e l t e r m i n o

    f

    n

    .

    S u g e r e n c i a : U t i l i z a d l a s i g u i e n t e r e l a c i o n :

    0

    B

    @

    0 1 0

    0 0 1

    a b c

    1

    C

    A

    0

    B

    @

    f

    n ; 3

    f

    n ; 2

    f

    n ; 1

    1

    C

    A

    =

    0

    B

    @

    f

    n ; 2

    f

    n ; 1

    f

    n

    1

    C

    A

    L a r e s o l u c i o n d e c a d a p r o b l e m a d e b e i n c l u i r :

    E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    D e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    E s t r u c t u r a s d e d a t o s .

    A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    E s t u d i o d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s :

    V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o .

    V u e l t a a t r a s : d e s c r i p c i o n d e l a r b o l d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    5/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e S e p t i e m b r e 9 6

    E x a m e n O r i g i n a l

    P r o b l e m a 1 ( 5 p u n t o s ) . U n c a r t o g r a f o a c a b a d e t e r m i n a r e l p l a n o d e s u p a i s ,

    q u e i n c l u y e i n f o r m a c i o n s o b r e l a s c a r r e t e r a s q u e u n e n l a s p r i n c i p a l e s c i u d a d e s y

    s u s l o n g i t u d e s . A h o r a q u i e r e a ~ n a d i r u n a t a b l a e n l a q u e s e r e c o j a l a d i s t a n c i a

    e n t r e c a d a p a r d e c i u d a d e s d e l m a p a ( e n t e n d i e n d o p o r d i s t a n c i a l a l o n g i t u d d e l

    c a m i n o m a s c o r t o e n t r e l a s d o s ) . E s c r i b i r u n a l g o r i t m o q u e l e p e r m i t a r e a l i z a r

    e s a t a b l a .

    P r o b l e m a 2 ( 5 p u n t o s ) . S e c o n s i d e r a n l a s f u n c i o n e s m ( x ) = 3 x y d ( x ) = x 2

    ( d o n d e ` ' r e p r e s e n t a l a d i v i s i o n e n t e r a ) . D i s e ~ n a r u n a l g o r i t m o q u e , d a d o s d o s

    n u m e r o s a y b , e n c u e n t r e u n a f o r m a d e l l e g a r d e a a b m e d i a n t e a p l i c a c i o n e s

    s u c e s i v a s d e m y d . P o r e j e m p l o , s e p u e d e p a s a r d e 7 a 2 m e d i a n t e

    2 = d ( d ( m ( d ( 7 ) ) ) )

    L a r e s o l u c i o n d e c a d a p r o b l e m a d e b e i n c l u i r , p o r e s t e o r d e n :

    1 . E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    2 . D e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    3 . E s t r u c t u r a s d e d a t o s .

    4 . A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    5 . E s t u d i o d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s :

    V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o .

    V u e l t a a t r a s : d e s c r i p c i o n d e l a r b o l d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    6/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I

    S o l u c i o n e s a l o s e x a m e n e s d e S e p t i e m b r e 1 9 9 6

    E q u i p o d o c e n t e d e l a a s i g n a t u r a

    P r o b l e m a 1

    U n c a r t o g r a f o a c a b a d e t e r m i n a r e l p l a n o d e s u p a i s , q u e i n c l u y e i n f o r m a c i o n s o b r e

    l a s c a r r e t e r a s q u e u n e n l a s p r i n c i p a l e s c i u d a d e s y s u s l o n g i t u d e s . A h o r a q u i e r e

    a ~n a d i r u n a t a b l a e n l a q u e s e r e c o j a l a d i s t a n c i a e n t r e c a d a p a r d e c i u d a d e s d e l

    m a p a ( e n t e n d i e n d o p o r d i s t a n c i a l a l o n g i t u d d e l c a m i n o m a s c o r t o e n t r e l a s d o s ) .

    E s c r i b i r u n a l g o r i t m o q u e l e p e r m i t a r e a l i z a r e s a t a b l a .

    E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    P a r a h a l l a r l a d i s t a n c i a m n i m a d e s d e u n v e r t i c e d e u n g r a f o a c a d a u n o d e l o s d e m a s v e r t i c e s

    c o n t a m o s c o n e l a l g o r i t m o v o r a z d e D i j k s t r a . B a s t a , p u e s , c o n a p l i c a r l o p a r a c a d a u n a d e

    l a s c i u d a d e s , s i e n d o e s t a s l o s v e r t i c e s , l a s c a r r e t e r a s l a s a r i s t a s d e l g r a f o , y s u s l o n g i t u d e s l o s

    p e s o s d e l a s a r i s t a s .

    C u i d a d o : n o h a y q u e c o n f u n d i r e s t e p r o b l e m a ( l l a m a d o \ d e c a m i n o s m n i m o s ) c o n e l p r o b l e m a d e

    d a r u n a r b o l d e e x p a n s i o n m n i m o , q u e r e s u e l v e n a l g o r i t m o s c o m o e l d e P r i m o K r u s k a l . E n e s t e c a s o ,

    u n a r b o l d e e x p a n s i o n m n i m o s e r a u n s u b c o n j u n t o d e c a r r e t e r a s q u e c o n e c t a r a t o d a s l a s c i u d a d e s y

    c u y a l o n g i t u d t o t a l f u e r a m n i m a p e r o e s a c o n d i c i o n n o n o s a s e g u r a q u e l a d i s t a n c i a e n t r e c a d a p a r d e

    c i u d a d e s s e a l a m n i m a p o s i b l e . P e n s a d c o n t r a j e m p l o s e n c a s o d e d u d a .

    1

  • 7/29/2019 Examenes Programacion III

    7/115

    D e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    N o s a h o r r a m o s l a e x p l i c a c i o n , q u e p o d e i s e n c o n t r a r e n e l B r a s s a r d / B r a t l e y , p a g . 8 9 .

    E s t r u c t u r a s d e d a t o s .

    E l c o n j u n t o d e c i u d a d e s y c a r r e t e r a s v i e n e r e p r e s e n t a d o p o r u n g r a f o n o o r i e n t a d o c o n

    p e s o s . P o d e m o s i m p l e m e n t a r l o c o m o u n a m a t r i z d e a d y a c e n c i a , c o m o u n a l i s t a d e l i s t a s

    d e a d y a c e n c i a , e t c .

    A d e m a s n e c e s i t a r e m o s o t r a m a t r i z q u e a c u m u l e l a s d i s t a n c i a s m n i m a s e n t r e c i u d a d e s y

    q u e s i r v a c o m o r e s u l t a d o .

    A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    L a u n i c a v a r i a c i o n r e s p e c t o a l a l g o r i t m o d e D i j k s t r a e s q u e n e c e s i t a m o s s a b e r l a d i s t a n c i a

    m n i m a e n t r e c a d a p a r d e c i u d a d e s , n o s o l o e n t r e u n a c i u d a d y t o d a s l a s d e m a s . P o r e l l o , e s

    n e c e s a r i o a p l i c a r D i j k s t r a n v e c e s , s i e n d o n e l n u m e r o d e c i u d a d e s ( e n r i g o r , n o e s n e c e s a r i o

    a p l i c a r l o s o b r e l a u l t i m a c i u d a d , p u e s l o s c a m i n o s m n i m o s a e s a c i u d a d y a h a n s i d o o b t e n i d o s

    e n a p l i c a c i o n e s a n t e r i o r e s .

    f u n m a p a ( g : g r a f o ) d e v v e c t o r 1 . . . N , 1 . . . N ] d e e n t e r o

    m v e c t o r 1 . . . N , 1 . . . N ]

    p a r a c a d a v e r t i c e v h a c e r

    m d i j k s t r a ( g , v , m )

    f p a r a

    d e v m

    f u n

    d o n d e e l a l g o r i t m o d e d i j k s t r a s e i m p l e m e n t a m e d i a n t e u n a f u n c i o n d i j k s t r a ( g , v , m ) q u e

    d e v u e l v e l a m a t r i z m c o n l a i n f o r m a c i o n a ~ n a d i d a c o r r e s p o n d i e n t e a l a s d i s t a n c i a s e n t r e e l

    g r a f o v y t o d o s l o s d e m a s g r a f o s d e g .

    E s t u d i o d e l c o s t e .

    E l c o s t e d e l a l g o r i t m o d e p e n d e d e l a i m p l e m e n t a c i o n p a r a g r a f o s q u e s e e s c o j a . S i s e i m -

    p l e m e n t a c o m o u n a m a t r i z d e a d y a c e n c i a , s a b e m o s q u e e l c o s t e d e l a l g o r i t m o d e D i j k s t r a e s

    c u a d r a t i c o ( O ( n

    2

    ) ) . C o m o h e m o s d e a p l i c a r l o n v e c e s ( o n ; 1 , q u e t a m b i e n e s d e o r d e n n ) ,

    e l c o s t e d e l a l g o r i t m o c o m p l e t o e s O ( n

    3

    ) .

    2

  • 7/29/2019 Examenes Programacion III

    8/115

    P r o b l e m a 2

    S e c o n s i d e r a n l a s f u n c i o n e s m ( x ) = 3 x y d ( x ) = x 2 ( d o n d e ` ' r e p r e s e n t a l a

    d i v i s i o n e n t e r a ) . D i s e ~ n a r u n a l g o r i t m o q u e , d a d o s d o s n u m e r o s a y b , e n c u e n t r e

    u n a f o r m a d e l l e g a r d e a a b m e d i a n t e a p l i c a c i o n e s s u c e s i v a s d e m ( x ) y d ( x ) . P o r

    e j e m p l o , s e p u e d e p a s a r d e 7 a 2 m e d i a n t e

    2 = d ( d ( m ( d ( 7 ) ) ) )

    C o m o e s t e p r o b l e m a e s t a e n r e l a c i o n m u y e s t r e c h a c o n l a p r a c t i c a d e l c u r s o 9 6 - 9 7 , n o o f r e c e m o s

    t o d a v a l a s o l u c i o n

    P r o b l e m a 3

    E n u n a c l a s e h a y f l a s y c c o l u m n a s d e p u p i t r e s . D e l a n t e d e l a p r i m e r a l a s e

    e n c u e n t r a l a p i z a r r a .

    a ) D i s e ~ n a r u n a l g o r i t m o q u e r e p a r t a l o s f c a l u m n o s d e f o r m a q u e , a l m i r a r h a c i a

    l a p i z a r r a , n i n g u n o s e v e a e s t o r b a d o p o r o t r o a l u m n o m a s a l t o q u e e l .

    b ) A m i t a d d e c u r s o s e c o l o c a u n a p i z a r r a a d i c i o n a l e n u n a d e l a s p a r e d e s a d y a c e n t e s

    c o n l a p r i m e r a p i z a r r a . D i s e ~ n a r u n a l g o r i t m o q u e c o l o q u e a l o s a l u m n o s d e f o r m a

    q u e p u e d a n m i r a r t a m b i e n a e s a s e g u n d a p i z a r r a s i n e s t o r b a r s e . E s t e a l g o r i t m o d e b e

    s a c a r p a r t i d o d e l a c o l o c a c i o n a n t e r i o r .

    E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    P a r a q u e n a d i e t e n g a u n a l u m n o m a s a l t o q u e e l a l m i r a r a l a p i z a r r a , e s n e c e s a r i o q u e ,

    d e n t r o d e c a d a c o l u m n a , l o s a l u m n o s e s t e n o r d e n a d o s s e g u n s u a l t u r a d e m a y o r a m e n o r .

    3

  • 7/29/2019 Examenes Programacion III

    9/115

    P a r a r e s o l v e r e l a p a r t a d o a ) d e f o r m a e c i e n t e b a s t a c o n d i v i d i r l o s f c a l u m n o s e n c

    s u b c o n j u n t o s d e f e l e m e n t o s e s c o g i d o s a l a z a r , y a c o n t i n u a c i o n d e b e o r d e n a r s e c a d a u n o

    d e e s o s s u b c o n j u n t o s . C a d a u n o d e e l l o s s e r a u n a c o l u m n a e n l a c l a s e . C o m o a l g o r i t m o

    d e o r d e n a c i o n p u e d e e s c o g e r s e c u a l q u i e r a d e l o s e s t u d i a d o s n o s o t r o s u t i l i z a r e m o s e l a l g o -

    r i t m o d i v i d e y v e n c e r a s d e f u s i o n , p o r s e r m a s e c i e n t e a s i n t o t i c a m e n t e e n e l c a s o p e o r ( e s

    O ( n l o g n ) ) .

    A l c o l o c a r u n a s e g u n d a p i z a r r a a d y a c e n t e a l a p r i m e r a , l o s a l u m n o s d e c a d a l a d e b e n

    e s t a r , a s u v e z , o r d e n a d o s e n t r e s . P a r a q u e e s t e n o r d e n a d a s l a s c o l u m n a s y l a s l a s , e s

    n e c e s a r i o o r d e n a r a t o d o s l o s a l u m n o s d e m e n o r a m a y o r , y c o l o c a r l o s e n l a c l a s e d e f o r m a

    q u e e l m a s b a j i t o o c u p e e l p u p i t r e q u e e s t a e n l a i n t e r s e c c i o n d e l a s d o s p i z a r r a s , y e l m a s a l t o

    e n e l v e r t i c e o p u e s t o d e l a c l a s e . P o r l o t a n t o , p a r a o b t e n e r l a d i s p o s i c i o n n a l d e l o s a l u m n o s

    e n e l a p a r t a d o b ) d e b e h a c e r s e u n a o r d e n a c i o n d e f c e l e m e n t o s . P e r o s i a p r o v e c h a m o s l a

    d i s p o s i c i o n a n t e r i o r n o e s n e c e s a r i o , e s t a v e z , a p l i c a r n i n g u n a l g o r i t m o d e o r d e n a c i o n : b a s t a

    c o n r e a l i z a r u n a f u s i o n d e l o s c s u b c o n j u n t o s y a o r d e n a d o s ( e q u i v a l d r a a l u l t i m o p a s o d e u n

    a l g o r i t m o d e o r d e n a c i o n p o r f u s i o n e n e l q u e e l f a c t o r d e d i v i s i o n f u e r a c ) . A s , l a o r d e n a c i o n

    n a l p u e d e o b t e n e r s e e n t i e m p o l i n e a l .

    D e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    E l e s q u e m a d i v i d e y v e n c e r a s e s u n a t e c n i c a r e c u r s i v a q u e c o n s i s t e e n d i v i d i r u n p r o b l e m a

    e n v a r i o s s u b p r o b l e m a s d e l m i s m o t i p o . L a s s o l u c i o n e s a e s t o s s u b p r o b l e m a s s e c o m b i n a n a

    c o n t i n u a c i o n p a r a d a r l a s o l u c i o n a l p r o b l e m a . C u a n d o l o s s u b p r o b l e m a s s o n m a s p e q u e ~ n o s

    q u e u n u m b r a l p r e j a d o , s e r e s u e l v e n m e d i a n t e u n a l g o r i t m o e s p e c c o . S i s u t a m a ~ n o e s

    m a y o r , s e v u e l v e n a d e s c o m p o n e r . E l e s q u e m a e s e l s i g u i e n t e :

    f u n d i v i d e y v e n c e r a s ( p r o b l e m a )

    s i s u c i e n t e m e n t e - s i m p l e ( p r o b l e m a )

    e n t o n c e s d e v s o l u c i o n - s i m p l e ( p r o b l e m a )

    s i n o h a c e r

    f p

    1

    : : : p

    k

    g d e s c o m p o s i c i o n ( p r o b l e m a )

    p a r a c a d a s

    i

    h a c e r s

    i

    d i v i d e y v e n c e r a s ( p

    i

    ) f p a r a

    d e v c o m b i n a c i o n ( s

    1

    : : : s

    k

    )

    f s i

    u n

    T a m a ~ n o u m b r a l y s o l u c i o n s i m p l e : E l p r e o r d e n b i e n f u n d a d o p a r a l o s p r o b l e m a s s e d e r i v a

    d i r e c t a m e n t e d e l o r d e n t o t a l e n t r e e l t a m a ~ n o d e l o s s u b c o n j u n t o s p r o b l e m a . P o d e m o s t o m a r

    c o m o t a m a ~ n o u m b r a l n = 1 , c a s o e n e l q u e l a o r d e n a c i o n e s t r i v i a l y c o n s i s t e s i m p l e m e n t e e n

    d e v o l v e r e l e l e m e n t o .

    4

  • 7/29/2019 Examenes Programacion III

    10/115

  • 7/29/2019 Examenes Programacion III

    11/115

    L a f u n c i o n d e f u s i o n t i e n e c u a t r o p a r a m e t r o s : e l v e c t o r , e l p r i n c i p i o y n a l d e l t r a m o q u e

    c o n t i e n e a l o s d o s s u b v e c t o r e s q u e h a y q u e f u s i o n a r , y e l f a c t o r d e d i v i s i o n e m p l e a d o . P a r a

    e l a p a r t a d o a ) p o d r a m o s a h o r r a r n o s e s t e u l t i m o a r g u m e n t o ( e s 2 ) , p e r o e s a g e n e r a l i z a c i o n

    n o s p e r m i t i r a u s a r l a m i s m a f u n c i o n e n e l a p a r t a d o b ) .

    p r o c f u s i o n ( v : v e c t o r 1 . . . n ] i n i c i o , n a l , f a c t o r : e n t e r o ) d e v v e c t o r 1 . . . n ]

    f I n i c i a l i z a e l v e c t o r s o l u c i o n g

    v ' v e c t o r 1 . . . n ]

    f I n i c i a l i z a p u n t e r o s a l c o m i e n z o d e l o s v e c t o r e s p o r f u s i o n a r g

    p a r a k = 1 h a s t a f a c t o r h a c e r

    i

    k

    i n i c i o + f a c t o r ( k ; 1 )

    f p a r a

    I f i

    1

    : : : i

    f a c t o r

    g

    f S e l e c c i o n a e l m e n o r e l e m e n t o d e e n t r e l o s p r i n c i p i o s d e v e c t o r

    p a r a i n c l u i r l o e n l a s o l u c i o n , y a c o n t i n u a c i o n l o b o r r a p a r a

    q u e n o v u e l v a a s e r c o n s i d e r a d o g

    p a r a h = i n i c i o h a s t a n a l h a c e r

    i

    x

    e l e m e n t o q u e m a x i m i z a v i

    x

    ]

    v ' h ] v i

    x

    ]

    s i i

    x

    < i n i c i o + f a c t o r x ; 1

    h a c e r i

    x

    i

    x

    + 1

    s i n o h a c e r I I n f i

    x

    g

    f s i

    f p a r a

    v v '

    f p r o c

    L a f u n c i o n b d e b e c o n s e g u i r u n a o r d e n a c i o n c o m p l e t a d e l c o n j u n t o d e a l u m n o s , p e r o d e b e

    t e n e r e n c u e n t a q u e y a e x i s t e u n a o r d e n a c i o n p a r c i a l e n t r e e l l o s : l o s a l u m n o s d e c a d a c o l u m n a

    e s t a n o r d e n a d o s e n t r e s . S i r e p r e s e n t a m o s e l c o n j u n t o d e l o s a l u m n o s c o m o u n v e c t o r d e

    c f e l e m e n t o s , e n e l q u e l o s f p r i m e r o s e l e m e n t o s c o r r e s p o n d e n a l a p r i m e r a c o l u m n a , l o s f

    s i g u i e n t e s a l a s e g u n d a , e t c , e l p r o b l e m a q u e d a s o l u c i o n a d o l l a m a n d o a l a f u n c i o n d e f u s i o n

    d e n i d a a n t e r i o r m e n t e , p e r o u t i l i z a n d o u n f a c t o r d e d i v i s i o n c e n l u g a r d e 2 :

    p r o c b ( v : v e c t o r 1 . . . c * f ] , e n t e r o : c ) d e v v e c t o r 1 . . . c * f ]

    f u s i o n ( v , 1 , c * f , c )

    f p r o c

    6

  • 7/29/2019 Examenes Programacion III

    12/115

    E s t u d i o d e l c o s t e .

    a p a r t a d o a

    L a o r d e n a c i o n p o r f u s i o n t i e n e u n c o s t e q u e c u m p l e :

    T ( n ) = 2 T ( n = 2 ) + c t e n

    y a q u e e l a l g o r i t m o d e f u s i o n t i e n e u n c o s t e O ( n ) ( c o n s t a d e d o s b u c l e s c o n s e c u t i v o s ) . D e

    e s a i g u a l d a d s e o b t i e n e u n c o s t e O ( n l o g n . C o m o s e r e a l i z a n c o r d e n a c i o n e s d e f e l e m e n t o s

    c a d a u n a , e l c o s t e t o t a l e s O ( c f l o g f ) . M e d i a n t e u n a o r d e n a c i o n t o t a l h a b r a m o s r e s u e l t o

    t a m b i e n e l p r o b l e m a , p e r o c o n u n c o s t e O ( c f l o g c f ) ( y a q u e e l t a m a ~ n o d e l p r o b l e m a s e r a

    c f ) .

    a p a r t a d o b

    S e r e s u e l v e m e d i a n t e u n a l l a m a d a a l a l g o r i t m o d e f u s i o n , q u e t i e n e u n c o s t e l i n e a l c o m o

    e l t a m a ~ n o d e l p r o b l e m a e s c f , e l c o s t e e s O ( c f ) . E l c o s t e e s m u c h o m e n o r q u e e n e l c a s o

    e n q u e n o a p r o v e c h a r a m o s l a o r d e n a c i o n p a r c i a l q u e s e o b t i e n e e n e l a p a r t a d o a .

    P r o b l e m a 4

    S e p l a n e a c o n e c t a r e n t r e s t o d o s l o s p u e b l o s d e u n a c i e r t a r e g i o n m e d i a n t e c a r r e t e r a s

    q u e s u s t i t u y a n l o s a n t i g u o s c a m i n o s v e c i n a l e s . S e d i s p o n e d e u n e s t u d i o q u e e n u m e r a

    t o d a s l a s p o s i b l e s c a r r e t e r a s q u e p o d r a n c o n s t r u i r s e y c u a l s e r a e l c o s t e d e c o n s t r u i r

    c a d a u n a d e e l l a s . E n c o n t r a r u n a l g o r i t m o q u e p e r m i t a s e l e c c i o n a r , d e e n t r e t o d a s

    l a s c a r r e t e r a s p o s i b l e s , u n s u b c o n j u n t o q u e c o n e c t e t o d o s l o s p u e b l o s d e l a r e g i o n

    c o n u n c o s t e g l o b a l m n i m o .

    E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    S i i n t e r p r e t a m o s l o s d a t o s c o m o u n g r a f o e n e l q u e l o s p u e b l o s s o n l o s v e r t i c e s y l a s c a r r e t e r a s

    s o n a r i s t a s c u y o s p e s o s s o n e l c o s t e d e c o n s t r u c c i o n , e l p r o b l e m a n o e s o t r o q u e e l d e h a l l a r

    u n a r b o l d e e x p a n s i o n m n i m o p a r a e s e g r a f o . E n e f e c t o , u n a r b o l d e e x p a n s i o n m n i m o e s

    u n c o n j u n t o d e a r i s t a s q u e c o n e c t a n t o d o s l o s v e r t i c e s d e l g r a f o e n e l q u e l a s u m a d e l o s

    p e s o s e s m n i m a ( p o r t a n t o , e l c o s t e d e c o n s t r u i r e l s u b c o n j u n t o d e c a r r e t e r a s e s m n i m o ) .

    7

  • 7/29/2019 Examenes Programacion III

    13/115

    P a r a r e s o l v e r l o p o d e m o s u s a r c u a l q u i e r a d e l o s d o s a l g o r i t m o s v o r a c e s e s t u d i a d o s q u e

    r e s u e l v e n e s t e p r o b l e m a : e l d e K r u s k a l o e l d e P r i m .

    < C u i d a d o ! N o d e b e c o n f u n d i r s e e s t e p r o b l e m a c o n e l d e e n c o n t r a r l o s c a m i n o s m n i m o s e n t r e u n

    v e r t i c e y e l r e s t o . V e r p r o b l e m a 1

    D e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    N o s a h o r r a m o s l a d e s c r i p c i o n d e l r e s t o d e l p r o b l e m a . P o d e i s e n c o n t r a r l a e n l a p a g i n a 8 3 d e l B r a s -

    s a r d / B r a t l e y .

    8

  • 7/29/2019 Examenes Programacion III

    14/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e S e p t i e m b r e 9 6

    E x a m e n d e r e s e r v a

    P r o b l e m a 1 ( 5 p u n t o s ) . E n u n a c l a s e h a y f l a s y c c o l u m n a s d e p u p i t r e s .

    D e l a n t e d e l a p r i m e r a l a s e e n c u e n t r a l a p i z a r r a .

    a ) D i s e ~ n a r u n a l g o r i t m o q u e r e p a r t a l o s f c a l u m n o s d e f o r m a q u e , a l m i r a r

    h a c i a l a p i z a r r a , n i n g u n o s e v e a e s t o r b a d o p o r o t r o a l u m n o m a s a l t o q u e e l .

    b ) A m i t a d d e c u r s o s e c o l o c a u n a p i z a r r a a d i c i o n a l e n u n a d e l a s p a r e d e s a d y a -

    c e n t e s c o n l a p r i m e r a p i z a r r a . D i s e ~ n a r u n a l g o r i t m o q u e c o l o q u e a l o s a l u m n o s

    d e f o r m a q u e p u e d a n m i r a r t a m b i e n a e s a s e g u n d a p i z a r r a s i n e s t o r b a r s e . E s t e

    a l g o r i t m o d e b e s a c a r p a r t i d o d e l a c o l o c a c i o n a n t e r i o r .

    P r o b l e m a 2 ( 5 p u n t o s ) . S e p l a n e a c o n e c t a r e n t r e s t o d o s l o s p u e b l o s d e u n a

    c i e r t a r e g i o n m e d i a n t e c a r r e t e r a s q u e s u s t i t u y a n l o s a n t i g u o s c a m i n o s v e c i n a l e s .

    S e d i s p o n e d e u n e s t u d i o q u e e n u m e r a t o d a s l a s p o s i b l e s c a r r e t e r a s q u e p o d r a n

    c o n s t r u i r s e y c u a l s e r a e l c o s t e d e c o n s t r u i r c a d a u n a d e e l l a s . E n c o n t r a r u n

    a l g o r i t m o q u e p e r m i t a s e l e c c i o n a r , d e e n t r e t o d a s l a s c a r r e t e r a s p o s i b l e s , u n s u b -

    c o n j u n t o q u e c o n e c t e t o d o s l o s p u e b l o s d e l a r e g i o n c o n u n c o s t e g l o b a l m n i m o .

    L a r e s o l u c i o n d e c a d a p r o b l e m a d e b e i n c l u i r , p o r e s t e o r d e n :

    1 . E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    2 . D e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    3 . E s t r u c t u r a s d e d a t o s .

    4 . A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    5 . E s t u d i o d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s :

    V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o .

    V u e l t a a t r a s : d e s c r i p c i o n d e l a r b o l d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    15/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e F e b r e r o d e 1 9 9 7

    E x a m e n p r i m e r a s e m a n a

    P r o b l e m a 1 ( 5 p u n t o s ) . D a d o u n c o n j u n t o d e n c i n t a s c o n n

    i

    r e g i s t r o s o r -

    d e n a d o s c a d a u n a , s e p r e t e n d e m e z c l a r l a s a p a r e s h a s t a l o g r a r u n a u n i c a c i n t a

    o r d e n a d a . L a s e c u e n c i a e n l a q u e s e r e a l i z a l a m e z c l a d e t e r m i n a r a l a e c i e n c i a

    d e l p r o c e s o . D i s e ~ n a r u n a l g o r i t m o q u e b u s q u e l a s o l u c i o n o p t i m a m i n i m i z a n d o e l

    n u m e r o d e m o v i m i e n t o s .

    P o r e j e m p l o : 3 c i n t a s : A c o n 3 0 r e g i s t r o s , B c o n 2 0 y C c o n 1 0

    1 . M e z c l a m o s A c o n B ( 5 0 m o v i m i e n t o s ) y e l r e s u l t a d o c o n C ( 6 0 m o v i m i e n -

    t o s ) , c o n l o q u e r e a l i z a m o s e n t o t a l 1 1 0 m o v i m i e n t o s

    2 . M e z c l a m o s C c o n B ( 3 0 M o v i m i e n t o s ) y e l r e s u l t a d o c o n A ( 6 0 ) . T o t a l =

    9 0 m o v i m i e n t o s

    > H a y a l g u n a f o r m a m a s e c i e n t e d e o r d e n a r e l c o n t e n i d o d e l a s c i n t a s ?

    P r o b l e m a 2 ( 5 p u n t o s ) . E l j u e g o d e l 3 1 u t i l i z a l a s c a r t a s d e l a b a r a j a e s p a ~ n o l a :

    1 , 2 , 3 , 4 , 5 , 6 , 7 , 1 0 ( s o t a ) , 1 1 ( c a b a l l o ) y 1 2 ( r e y ) c o n l o s 4 p a l o s : o r o s , c o p a s , e s p a d a s

    y b a s t o s . D i s e ~ n a r u n a l g o r i t m o q u e c a l c u l e t o d a s l a s p o s i b l e s f o r m a s d e o b t e n e r

    3 1 u t i l i z a n d o a l o s u m o 4 c a r t a s y 2 p a l o s d i s t i n t o s e n c a d a c o m b i n a c i o n .

    L a r e s o l u c i o n d e c a d a p r o b l e m a d e b e i n c l u i r , p o r e s t e o r d e n :

    1 . E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    2 . D e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    3 . E s t r u c t u r a s d e d a t o s .

    4 . A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    5 . E s t u d i o d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s :

    V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o .

    V u e l t a a t r a s : d e s c r i p c i o n d e l a r b o l d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    16/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e F e b r e r o d e 1 9 9 7

    E x a m e n s e g u n d a s e m a n a

    Q u e r e m o s g r a b a r n c a n c i o n e s d e d u r a c i o n e s t

    1

    : : : t

    n

    e n u n a c i n t a d e a u d i o d e

    d u r a c i o n T

  • 7/29/2019 Examenes Programacion III

    17/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e S e p t i e m b r e d e 1 9 9 7

    O r i g i n a l

    P r o b l e m a 1 ( 5 p u n t o s ) . U n a e m p r e s a d e m e n s a j e r a d i s p o n e d e t r e s m o t o r i s t a s e n d i s t i n t o s

    p u n t o s d e l a c i u d a d , y t i e n e q u e a t e n d e r a t r e s c l i e n t e s e n o t r o s t r e s p u n t o s . S e p u e d e e s t i m a r e l

    t i e m p o q u e t a r d a r a c a d a m o t o r i s t a e n a t e n d e r a c a d a u n o d e l o s c l i e n t e s ( e n l a t a b l a , e n m i n u t o s ) :

    M o t o 1 M o t o 2 M o t o 3

    c l i e n t e 1 3 0 4 0 7 0

    c l i e n t e 2 6 0 2 0 1 0

    c l i e n t e 3 4 0 9 0 2 0

    D i s e ~ n a r u n a l g o r i t m o q u e d i s t r i b u y a u n c l i e n t e a c a d a m o t o r i s t a d e f o r m a q u e s e m i n i m i c e e l

    c o s t e t o t a l ( e n t i e m p o ) d e a t e n d e r a l o s t r e s c l i e n t e s .

    P r o b l e m a 2 ( 5 p u n t o s ) . S e a u n j u e g o d e t a b l e r o p a r a d o s p e r s o n a s , e n e l q u e s e t u r n a n p a r a

    m o v e r l a s p i e z a s d e l t a b l e r o s e g u n u n a s r e g l a s d e t e r m i n a d a s . D a r e m o s p o r c o n o c i d o s :

    U n a e s t r u c t u r a d e d a t o s j u g a d a q u e n o s d a d o s t i p o s d e i n f o r m a c i o n : e n u n r e g i s t r o t a b l e r o ,

    p o r u n l a d o , l a s i t u a c i o n d e l a s c h a s e n e l t a b l e r o . Y e n u n r e g i s t r o t u r n o , p o r o t r o l a d o ,

    q u i e n d e b e m o v e r a c o n t i n u a c i o n ( o , e n c a s o d e s e r u n a p o s i c i o n n a l , q u i e n e s e l g a n a d o r ) ,

    c o n l a s i g u i e n t e c o n v e n c i o n : 1 s i g n i c a q u e l e t o c a m o v e r a l j u g a d o r q u e c o m e n z o . 2 , a l

    s e g u n d o j u g a d o r . 3 , q u e l a p a r t i d a a c a b o c o n t r i u n f o d e l p r i m e r j u g a d o r , y 4 , q u e l a p a r t i d a

    a c a b o c o n t r i u n f o d e l s e g u n d o j u g a d o r .

    U n a f u n c i o n

    f u n c i o n m o v i m i e n t o s ( j : j u g a d a ) d e v o l v e r l : l i s t a d e j u g a d a

    q u e d a t o d a s l a s j u g a d a s p o s i b l e s a p a r t i r d e u n a d a d a .

    S u p o n d r e m o s q u e e n e l j u e g o n o s e p u e d e n d a r c i c l o s ( v o l v e r a u n a s i t u a c i o n p r e v i a e n e l j u e g o ) ,

    q u e n o s e p u e d e p r o l o n g a r i n d e n i d a m e n t e y q u e l a p a r t i d a n o p u e d e a c a b a r e n t a b l a s . D i s e ~ n a r

    u n a l g o r i t m o q u e a v e r i g u e s i e x i s t e u n a e s t r a t e g i a o p t i m a p a r a e l j u g a d o r q u e m u e v e p r i m e r o , d e

    f o r m a q u e s e a s e g u r e l a v i c t o r i a s i g u i e n d o e s a e s t r a t e g i a . > S e p u e d e a p l i c a r e l a l g o r i t m o , e n t e o r a ,

    a l j u e g o d e l a j e d r e z ? > Y e n l a p r a c t i c a ?

    L a r e s o l u c i o n d e c a d a p r o b l e m a d e b e i n c l u i r , p o r e s t e o r d e n :

    1 . E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    2 . D e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    3 . E s t r u c t u r a s d e d a t o s .

    4 . A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    5 . E s t u d i o d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s :

    V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o .

    E x p l o r a c i o n e n g r a f o s : d e s c r i p c i o n d e l a r b o l d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    18/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e F e b r e r o d e 1 9 9 8

    P r i m e r a S e m a n a

    P r o b l e m a 1 ( 5 p u n t o s ) . S e c o n s i d e r a u n j u e g o s o l i t a r i o e n e l q u e e l t a b l e r o s e c o m p o n e d e

    v a r i o s h u e c o s d i s p u e s t o s e n f o r m a d e c r u z y u n c o n j u n t o d e b o l a s q u e , i n i c i a l m e n t e , c u b r e n t o d o s

    e l l o s e x c e p t o e l h u e c o c e n t r a l ( v e r g u r a i z q u i e r d a ) . S i e m p r e q u e h a y a d o s b o l a s y u n h u e c o v a c o

    c o n s e c u t i v o s , s e p u e d e s a l t a r c o n l a p r i m e r a b o l a a l h u e c o v a c o , r e t i r a n d o l a b o l a i n t e r m e d i a ( v e r

    u n p o s i b l e p r i m e r m o v i m i e n t o e n g . d e r e c h a ) . S o l o s e c o n s i d e r a n m o v i m i e n t o s h o r i z o n t a l e s o

    v e r t i c a l e s , n u n c a e n d i a g o n a l . E l o b j e t i v o d e l j u e g o e s e l i m i n a r p r o g r e s i v a m e n t e t o d a s l a s b o l a s

    d e l t a b l e r o h a s t a q u e s o l o q u e d e u n a . D i s e ~ n a r u n a l g o r i t m o q u e e n c u e n t r e u n a s o l u c i o n a l j u e g o .

    P r o b l e m a 2 ( 5 p u n t o s ) . E n l a c o m p l e j a r e d d e m e t r o d e J a p o n , l a c a n t i d a d q u e s e p a g a p o r

    u n b i l l e t e e s p r o p o r c i o n a l a l a d i s t a n c i a q u e s e r e c o r r e . P o r t a n t o , e s n e c e s a r i o i n s t a l a r e n c a d a

    e s t a c i o n u n p a n e l i n f o r m a t i v o q u e i n f o r m e d e l p r e c i o d e l b i l l e t e a c u a l q u i e r o t r a e s t a c i o n d e l a r e d .

    D e s c r i b i r u n a l g o r i t m o q u e d e d u z c a l a i n f o r m a c i o n d e t o d o s e s o s p a n e l e s , b a s a n d o e l c a l c u l o e n l a

    s u p o s i c i o n d e q u e e l v i a j e r o s e t r a s l a d a r a d e u n a e s t a c i o n a o t r a p o r e l c a m i n o m a s c o r t o .

    L a r e s o l u c i o n d e c a d a p r o b l e m a d e b e i n c l u i r , p o r e s t e o r d e n :

    1 . E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    2 . B r e v e d e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    3 . E s t r u c t u r a s d e d a t o s r e q u e r i d a s .

    4 . A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    5 . E s t u d i o d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s :

    V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o e n t r e l o s e j e m p l a r e s d e l p r o b l e m a .

    E x p l o r a c i o n e n g r a f o s : d e s c r i p c i o n d e l g r a f o d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    19/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e F e b r e r o d e 1 9 9 8

    S e g u n d a S e m a n a

    P r o b l e m a 1 ( 5 P u n t o s ) S o b r e u n e j e d e c o o r d e n a d a s p o s i t i v o s e t i e n e n r e p r e s e n t a d o s e d i c i o s

    e n f o r m a d e r e c t a n g u l o s . C a d a r e c t a n g u l o d e s c a n s a s o b r e e l e j e h o r i z o n t a l y s e r e p r e s e n t a p o r

    s u s a b s c i s a s i n i c i a l y n a l y p o r s u a l t u r a . L a l i n e a d e h o r i z o n t e e s e l c o n t o r n o q u e f o r m a n l o s

    e d i c i o s . S e p i d e p r o g r a m a r u n a l g o r i t m o e c i e n t e q u e e n c u e n t r e l a l i n e a d e h o r i z o n t e q u e f o r m a

    u n c o n j u n t o d e e d i c i o s .

    E j . U n a c i u d a d C = f ( 0 4 7 ) ( 2 1 4 4 ) ( 7 1 2 5 ) ( 8 1 7 2 ) ( 1 9 2 1 1 0 ) g t e n d r a u n a l i n e a d e

    h o r i z o n t e H = f ( 0 4 7 ) ( 4 7 4 ) ( 7 1 2 5 ) ( 1 2 1 4 4 ) ( 1 4 1 7 2 ) ( 1 7 1 9 0 ) ( 1 9 2 1 1 0 ) g :

    P r o b l e m a 2 ( 5 P u n t o s ) S e t i e n e u n m e c a n o d e 8 p i e z a s . L a s p i e z a s s e a c o p l a n e n t r e s m e d i a n t e

    t o r n i l l o s , f o r m a n d o d i s t i n t o s j u g u e t e s d e p e n d i e n d o d e c o m o s e c o m b i n e n . U n j u g u e t e c o m p l e t o e s

    a q u e l f o r m a d o p o r l a s 8 p i e z a s . E l g a s t o d e t o r n i l l o s d e c a d a a c o p l a m i e n t o e s e l i n d i c a d o e n l a

    s i g u i e n t e t a b l a : ( U n ; i n d i c a q u e l a s p i e z a s n o e n c a j a n )

    p

    1

    p

    2

    p

    3

    p

    4

    p

    5

    p

    6

    p

    7

    p

    8

    p

    1

    - 7 1 2 - 4 - - -

    p

    2

    7 - 2 6 1 - 1 -

    p

    3

    1 2 2 - 4 - 1 0 - 3

    p

    4

    - 6 4 - - 3 2 -

    p

    5

    4 1 - - - 2 0 1 0 -

    p

    6

    - - 1 0 3 2 0 - 5 -

    p

    7

    - 1 - 2 1 0 5 - -

    p

    8

    - - 3 - - - - -

    S e p i d e c o n s t r u i r u n a l g o r i t m o q u e c a l c u l e l a c o m b i n a c i o n d e p i e z a s q u e f o r m a n u n j u g u e t e

    c o m p l e t o m i n i m i z a n d o e l g a s t o d e t o r n i l l o s .

    L a r e s o l u c i o n d e c a d a p r o b l e m a d e b e i n c l u i r , p o r e s t e o r d e n :

    1 . E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    2 . B r e v e d e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    3 . E s t r u c t u r a s d e d a t o s r e q u e r i d a s .

    4 . A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    5 . E s t u d i o d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s :

    V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o e n t r e l o s e j e m p l a r e s d e l p r o b l e m a .

    E x p l o r a c i o n e n g r a f o s : d e s c r i p c i o n d e l g r a f o d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    20/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e S e p t i e m b r e d e 1 9 9 8

    O r i g i n a l

    P r o b l e m a 1 ( 5 p u n t o s ) . D a d o u n c o n j u n t o d e n r e c t a n g u l o s c u y o s l a d o s s o n p a r a l e l o s

    a l o s e j e s d e l p l a n o , h a l l a r e l r e c t a n g u l o i n t e r s e c c i o n d e t o d o s l o s r e c t a n g u l o s m e d i a n t e u n

    a l g o r i t m o e c i e n t e .

    P r o b l e m a 2 ( 5 p u n t o s ) . U n a c a d e n a e u l e r i a n a e n u n g r a f o n o o r i e n t a d o e s u n a c a d e n a

    q u e u n e c a d a a r i s t a d e l g r a f o e x a c t a m e n t e u n a v e z . E s c r i b i r u n a l g o r i t m o q u e d e c i d a s i u n

    g r a f o d a d o t i e n e u n a c a d e n a e u l e r i a n a y , s i e s a s , q u e d e v u e l v a e s a c a d e n a .

    L a r e s o l u c i o n d e c a d a p r o b l e m a d e b e i n c l u i r , p o r e s t e o r d e n :

    1 . E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    2 . B r e v e d e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    3 . E s t r u c t u r a s d e d a t o s r e q u e r i d a s .

    4 . A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    5 . E s t u d i o d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s :

    V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o e n t r e l o s e j e m p l a r e s d e l p r o b l e m a .

    E x p l o r a c i o n e n g r a f o s : d e s c r i p c i o n d e l g r a f o d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    21/115

  • 7/29/2019 Examenes Programacion III

    22/115

    ESCUELA UNI\7ERSITARIA DE INFORMTICA DE LA UNEDINGENIERA TECNICA DE SISTEMAS E INGENIERA TECNICA DE GESTIN

    Programacin I II - Convocatoria de Febrero de 1999

    Segunda Semana

    Problema 1 (5 puntos).Disear un algoritmo que tome un mapa poltico y coloree el mapa con el mnimo nmero de colores posible de manera

    que dos pases fronterizos no tengan el mismo color.

    Problema 2 (5 puntos).Una liga denequiposeijuega a un juego donde solo se pierde o se gana, pero no se empata.Disear un algoritmo que realice

    unapseudo-ordenacin (e1,e2. - - ,en) a partir de la tabla de resultados de lo equipos de manera quee1haya ganado a e2, e2a e3,

    etc. El coste debe ser a lo sumoO(nlogn)

    La resolucin de cada problema debe incluir, por este orden:

    1. Eleccin razonada del esquema algortmico.

    2. Descripcin del esquema usado e identificacin con el problema.

    3. Estructuras de datos.

    4. Algoritmo complejo a partir del refinamiento del esquema general.

    5. Estudio del coste.

    Segn el esquema elegido hay que especificar, adems:

    eVoraz: demostracin de optimalidad.

    eDivide y vencers: preorden bien fundado.

    eExploracin en grafos: descripcin del rbol de bsqueda asociado.

  • 7/29/2019 Examenes Programacion III

    23/115

    [Exmen copiado del original]Programacin III- Convocatoria de febrero de 2000Primera Semana

    Problema (5 puntos)Se considera un juego de tablero genrico con las siguientes caractersticas: Juegan dos oponentes entre s. Cada jugador mueve alternativamente. El juego acaba conla victoria de uno de los dos jugadores, o en tablas. Se supone conocido:- Una estructura de datossi t uaci n que nos da la situacin actual del juego: qujugador tiene el turno, disposicin de las fichas en el tablero, etc.- Una funcin f unci on movi mi ent os( j : si t uaci on) devol ver l : l i st ade si t uaci n que nos da todas las jugadas posibles a partir de una dada. Aceptaremosque, si nos devuelve una lista vaca, es porque eljuego ha terminado.

    Se pide disear un algoritmo que encuentre cul es el nmero de movimientos de la (o las)partidas ms cortas.

    Cuestiones

    1. Comparar la eficiencia de los algoritmos de ordenacin quicksort (ordenacin rpida) ymergesort (ordenacin por fusin) (2 puntos)

    2. Comenta las condiciones de poda que has utilizado en la realizacin de la prctica del

    Nim. (1 punto).

    3. Que variante del problema de la mochila admite una solucin voraz y por qu? Quvariante no admite solucin voraz? Poner un ejemplo del segundo caso en el que lasolucin voraz no nos lleve a la solucin ptima. (2 Puntos).

    La resolucin del problema debe incluir, por este orden:1. Eleccin razonada del esquema algortmico.2. Descripcin del esquema usado e identificacin con el problema.3. Estructuras de datos.

    4. Algoritmo complejo a partir del refinamiento del esquema general.5. Estudio del coste.

    Segn el esquema elegido hay que especificar, adems: Voraz: demostracin de optimalidad. Divide y vencers: preorden bien fundado. Exploracin en grafos:descripcin del rbol de bsqueda asociado.

  • 7/29/2019 Examenes Programacion III

    24/115

    EXAMEN Programacin II I. Febrero 2000 (Primera Semana)

    Cuestin 1. Comparar la eficiencia de los algoritmos de ordenacin Quicsort (ordenacin rpida) ymergesort (ordenacin por fusin). (Respuesta: Fundamentos de Algoritmia, pag. 260)

    El algoritmo Quicksort emplea un tiempo promedio de n log n, en el peor caso de n2. El algoritmo porfusin mergesort utiliza un tiempo de n log n (siempre observando la precaucin de equilibrar lossubcasos a tratar). Pese a esto, en la prctica Quicksort es ms rpido en un tiempo c constante.Adems el algoritmo mergesort requiere de un espacio extra para tratar los distintos casos sin perdereficiencia (hacer la ordenacin in situ lleva asociado un incremento de la constante oculta bastantealto).

    Cuestin 2. Comenta las condiciones de poda que has utilizado en la realizacin de la prctica delNim.

    Cuestin 3.Qu variante del problema de la mochila admite solucin voraz, y porqu?Qu varianteno admite solucin voraz? Poner un ejemplo del segundo caso en el que la solucin voraz no nos llevea la solucin ptima. (Respuesta: Fundamentos de algoritmia, pag 227, contraejemplo en pag. 300)

    La variante del problema de la mochila que admite solucin voraz es la variante continua, dondepodemos fragmentar los objetos. Esta variante admite solucin voraz porque encontramos una funcinde seleccin que nos permite escoger del candidato a cada paso de forma que obtengamos unasolucin ptima. Dicha funcin consiste en escoger los objetos por orden decreciente (de mayor amenor) segn su relacin valor/peso, lo que nos lleva a una solucin ptima.

    La variante que no admite solucin optima es la que no nos permite fragmentar los objetos, veamosesto con un ejemplo. Dada la siguiente relacin de objetos valor-peso para una mochila de capacidad10 (W=10 , peso mximo de la mochila) .

    a b c

    wi 6 5 5

    vi 8 5 5

    Segn el algoritmo voraz de la variante continua tomaramos los objetos segn su orden decreciente enfuncin de la relacin valor/peso. De este modo tendramos: a (vi/wi =1,333) , b (vi/wi=1) y c(vi/wi=1) . La sucesin a, b y c.

    Sin embargo como en esta ocasin no podemos fragmentar los objetos al introducir en la mochila el

    objeto a de peso 6 ya no podemos introducir ninguno ms, el valor conseguido ser entonces de 6;mientras que si introducimos primero el objeto b, queda an espacio para el objeto c, con lo que enesta ocasin hemos utilizado el peso total mximo de la mochila y el valor conseguido es de 10.Siendo esta la solucin ptima. Vemos con este ejemplo como el criterio seguido en la variantecontinua del problema no puede aplicarse en el caso en el que los objetos no puedan fragmentarse.

  • 7/29/2019 Examenes Programacion III

    25/115

    PROGRAMACION III Convocatoria de Febrero del 2.000

    Segunda semana

    Cuestiones:

    1. Poner algn ejemplo en el que un enfoque de Divide y Vencers nos lleve a uncoste exponencial de forma innecesaria. (1 Punto).

    1. Puedes explicar brevemente que papel desempea un montculo en elalgoritmo de Ramificacin y Poda? Cul es el criterio general para realizar

    la poda en este algoritmo? (2 Puntos).

    1. En una exploracin de un rbol de juego con dos oponentes a nivel deprofundidad 4 (contando la raiz como nivel 1) y siguiendo la estrategia del

    MINIMAX nos encontramos con la siguiente puntuacin:

    [[[-7,5] [-3] [-10,-20,0]] [[-5,-10] [-15,20]] [[1] [6,-8,14] [-30,0] [-8,-9]]]

    donde los corchetes indican agrupacin de nodos por nodo padre comn.

    Se pide propagar las puntuaciones y elegir la rama ms adecuada a partir de la

    raiz sabiendo que el nodo raiz corresponde al jugador A, a mayor valor, mejor

    jugada para A, y que se alternan para mover.

    En que se diferencia esta estrategia de juego de la utilizada para resolver la

    prctica? (2 Puntos).

    Problema (5 Puntos). La Base Aerea de Gando (Gran Canaria) posee una flotavariada de n cazas de combate ci (con i {1..n}). Cada caza tiene que salir del

    bunker y superar un tiempo de rodadura ki ms un tiempo de despegue ti para estar

    en el aire y operativo. Durante este proceso la nave es vulnerable. Suponiendo que

    se produce un ataque sorpresa, construir un algoritmo que averige el rden de

    despegue de las aeronaves de manera que se minimice el tiempo medio durante elcual son vulnerables.

  • 7/29/2019 Examenes Programacion III

    26/115

    Supongamos ahora que cada aeronave ci posee un ndice acumulativo bi de

    importancia estratgica siempre que despegue antes de la ranura temporal hi (con i

    {1..n}). Si queremos maximizar la importancia estrategica una vez que hayan

    despegado todas Qu tipo de problema es ste? Con que esquema se resuelve?.Explica en un prrafo breve el funcionamiento del algoritmo.

    La resolucin del problema debe incluirsiempre, y por este orden:

    1. Eleccin razonada del esquema algortmico.

    2. Descripcin del esquema usado e identificacin con el problema.

    3. Estructuras de datos

    4. Algoritmo completo a partir del refinamiento del esquema general.

    5. Estudio del coste. Segn el esquema elegido hay que especificar, adems

    Voraz:demostracin de optimalidad.Divide y vencers: preorden bien fundado.

    Exploracin en grafos:descripcin del rbol de bsqueda asociado

  • 7/29/2019 Examenes Programacion III

    27/115

    EXAMEN Programacin II I. Febrero 2000 (Segunda semana)

    Cuestin 1.Poner algn ejemplo en el que un enfoque divide y vencers nos lleve a un costeexponencial de forma innecesaria. (Respuesta: Fundamentos de Algoritmia, pag.83)

    Un ejemplo claro de esto es utilizar la definicin recursiva de la funcin de Fibonacci sin ms, de estemodo el siguiente algoritmo conlleva un coste exponencial, existiendo formas de obtener la solucinen un coste inferior utilizando un enfoque distinto al de divide y vencers.

    Fun Fib(n)si (n

  • 7/29/2019 Examenes Programacion III

    28/115

    E s c u e l a U n i v e r s i t a r i a d e I n f o r m

    a t i c a d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - S e p t i e m b r e 2 . 0 0 0 - O r i g i n a l

    C u e s t i o n 1 . ( 1 p u n t o ) . A l a h o r a d e h a c e r u n a e x p l o r a c i o n c i e g a e n u n

    g r a f o , > q u e c r i t e r i o s n o s p u e d e n d e c i d i r p o r u n a b u s q u e d a e n p r o f u n d i d a d o

    e n a n c h u r a ?

    C u e s t i o n 2 ( 2 p u n t o s ) . L a s u c e s i o n d e F i b o n a c c i s e d e n e c o m o f i b ( 0 ) =

    f i b ( 1 ) = 1 f i b ( n ) = f i b ( n ; 1 ) + f i b ( n ; 2 ) s i n 2 . Q u e o c u r r e s i a p l i c a m o s

    u n a e s t r a t e g i a d i v i d e y v e n c e r a s p a r a c a l c u l a r f i b ( n ) u s a n d o d i r e c t a m e n t e

    l a d e n i c i o n ? > Q u e o t r a s o p c i o n e s e x i s t e n ? ( 2 p u n t o s ) .

    C u e s t i o n 3 ( 2 p u n t o s ) . > C u a l e s l a r e l a c i o n e n t r e l a o r d e n a c i o n p o r

    s e l e c c i o n y l a o r d e n a c i o n p o r m o n t c u l o ? > C o m o s e r e e j a e n l a e c i e n c i a

    d e l o s d o s a l g o r i t m o s ? ( 2 p u n t o s ) .

    P r o b l e m a ( 5 p u n t o s ) . S e a T 1 : : : n ] u n v e c t o r d e n e l e m e n t o s . L a u n i c a

    c o m p a r a c i o n q u e s e p e r m i t e e n t r e e s o s e l e m e n t o s e s e l t e s t d e i g u a l d a d .

    L l a m e m o s e l e m e n t o m a y o r i t a r i o d e T , s i e x i s t e , a a q u e l q u e a p a r e c e e s t r i c -

    t a m e n t e m a s d e n = 2 v e c e s e n T . D i s e ~ n a r u n a l g o r i t m o q u e e n c u e n t r e e l

    e l e m e n t o m a y o r i t a r i o d e u n v e c t o r ( s i e x i s t e ) e n u n t i e m p o q u e s e a , a l o

    s u m o , O ( n l o g n ) . S u g e r e n c i a : e l e l e m e n t o m a y o r i t a r i o d e u n v e c t o r d e b e

    s e r l o t a m b i e n , a l m e n o s , d e u n a d e s u s d o s m i t a d e s .

    L a r e s o l u c i o n d e l p r o b l e m a d e b e i n c l u i r , p o r e s t e o r d e n :

    1 . E l e c c i o n r a z o n a d a d e l e s q u e m a a l g o r t m i c o .

    2 . D e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a .

    3 . E s t r u c t u r a s d e d a t o s .

    4 . A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l .

    5 . E s t u d i o d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s :

    V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o .

    E x p l o r a c i o n e n g r a f o s : d e s c r i p c i o n d e l a r b o l d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    29/115

    EXAMEN Programacin III . Septiembre 2000 (Original)

    Cuestin 1.A la hora de hacer una exploracin ciega en un grafoqu criterios nos pueden decidir poruna bsqueda en profundidad o en anchura? (Respuesta: Fundamentos de Algoritmia, pag 340)

    A la hora de escoger un criterio u otro fundamentaremos nuestra decisin segn el problema encuestin y el tamao del grafo generado. Si el problema consiste en encontrar el camino ms cortodesde un punto del grafo hasta otro, la exploracin en anchura es la ms adecuada. Del mismo modo,si el grafo a tratar es de un tamao muy grande, de forma que no resulte manejable, o infinito,utilizaremos la exploracin en anchura para realizar una exploracin parcial de dicho grafo. En otrocaso nos decidiremos por la exploracin en profundidad.

    Cuestin 2.La sucesin de fibonacci se define como Fib(1)=1; fib(n)=fib(n-1)+fib(n-1) si n >=2 Quocurre si aplicamos una estrategia divide y vencers para calcular fib(n) usando directamente ladefinicin?Qu otras opciones existen?. (Respuesta. Fundamentos de Algoritmia pag. 83)

    Si utilizamos directamente la definicin obtendremos un algoritmo con un coste exponencial. Dichoalgoritmo sera el siguiente:

    Fun Fib(n)si (n

  • 7/29/2019 Examenes Programacion III

    30/115

    EXAMEN Programacin II I. Septiembre 2000 (Reserva)

    Cuestin 1. En el algoritmo quicksort, qu implicaciones tiene para la eficiencia el escoger comopivote la mediana exacta del vector?. (Respuesta en: Fundamentos de Algoritmia, pag. 266)

    El algoritmo Quicksort tiene un tiempo promedio de O(n log n ). En la prctica es ms rpido que laordenacin por montculo (heapsort) y la ordenacin por fusin (mergesort) en un tiempo constante.

    Al ser un algoritmo recursivo sera ideal poder dividir el caso en sub-casos de tamaos similares demanera que cada elemento sea de profundidad log n, es decir, poder equilibrar los subcasos. Sinembargo, aunque seleccionemos la mediana del vector en el peor caso (todos los elementos a ordenarson iguales) el orden ser cuadrtico.

    Para obtener alguna ventaja utilizando como pivote la mediana tendremos que hacer algunasmodificaciones al algoritmo original. Utilizaremos una nueva funcin pivote que divida en tressecciones el vector , de modo que dado un pivote p una parte conste de elementos menores que l, otrade elementos iguales y finalmente otra parte con los ms grandes que p. Tras hacer esto se haran lasllamadas recursivas correspondientes al algoritmo, una para con el sub-vector de elementos menores

    que p, y otra para el de los mayores que p. Esta modificacin consigue que, utilizando la medianacomo pivote el orden del algoritmo sea O(n log n) incluso en el peor caso. Pero el coste que implicaesta modificacin hace que el tiempo constante crezca haciendo mejor el algoritmo de ordenacin pormontculo que el Quicksort en todos los casos, lo que hace que la modificacin no sea factible.

    Cuestin 2. Los algoritmos de Prim y Kruskal calculan, de distintas formas, el rbol de expansinmnimo de un grafo. Cul de los dos es ms eficiente para un grafo con alta densidad de aristas?.Razonar la repuesta. (Respuesta en: Fundamentos de Algoritmia, pag. 223)

    El algoritmo de Kruskal tiene un tiempo (a log n), siendo a el nmero de aristas. Si la densidad esalta el nmero de aristas a tiene a ser n(n-1)/2, con lo que el tiempo pasara a (n2 log n), y el

    algoritmo de Prim podra implementarse de forma que fuera mejor. En el caso de un grafo disperso(pocas aristas) el nmero de aristas tendera a n, siendo en este caso el tiempo (n log n), siendomejor que algunas implementaciones del algoritmo de Prim. Pero si implementamos el algoritmo dePrim utilizando montculos el tiempo requerido ser de (a log n) (al igual que el algoritmo deKruskal).

    Cuestin 3. Explicar cmo funciona el algoritmo que dota a un vector de la propiedad de montculoen tiempo lineal (no es necesario demostrar que ese es el coste).

    (Respuesta en: Fundamentos de Algoritmia, pag. 190)

    El algoritmo que convierte un vector en un montculo en tiempo lineal es:

    Proc CrearMontculo (V[1...N])Para i [n/2] bajando hasta 1 hacer hundir(V,i)Fin_procY hundir es:Proc Hundir(V[1...N],i)k iRepetirj k

    Si 2j V[k] entonces k

    2j fsiSi 2j < n y V[2j+1] > V[k] entonces k2j + 1 fsiIntercambiar V[j] y V[k]hasta j=kFin_proc

  • 7/29/2019 Examenes Programacion III

    31/115

    La idea es considerar el vector como un montculo, empezamos convirtiendo inicialmente enmontculos los sub-rboles del nivel ms bajo, para progresivamente seguir modificando en nivelessuperiores sucesivos.

    Veamos su funcionamiento con un ejemplo V=[4,3,7,7,10,1] con n=5

    Si consideramos este vector cmo un montculo tendremos...

    Ejecutaramos el algoritmo CrearMontculo

    Para i3 hasta 1 hundir(V,i)I=3, hundir (V,3)k=6, j =6no habra ningn cambio dado que V[6] < V[3] V=[4,3,7,7,10,1]k=j fin del bucleI=2 hundir (V,2)k=2, j=2Como V[4]>V[2] k = 4

    Pero V[5]>V[2], k=5 intercambia V[5],V[2] V=[4,10,7,7,3,1]k=5 y j=5, termina el bucle.I=1 hundir (V,1)k=1, j=1Resulta que V[2]>V[1] k=2Y NO (V[3] > V[2]) Intercambia V[2],V[1] V=[10,4,7,7,3,1]k=2, j=2Como V[4]>V[2] k = 4Pero NO(V[3]>V[4]) asi que k=4 Intercambia V[4],V[2] V=[10,7,7,4,3,1]k=3, j=3NO(V[6]>V[4]) con lo que no hay cambio y termina el bucle.

    Hemos obtenido finalmente el montculo.

    Si dibujamos los vectores como montculos, observamos que el proceso es el descrito anteriormente,vamos al nivel ms bajo y obtenemos los montculos correspondientes. Y as sucesivamente hastallegar a la raz.

  • 7/29/2019 Examenes Programacion III

    32/115

  • 7/29/2019 Examenes Programacion III

    33/115

    EXAMEN Programacin II I. Febrero 2001 (Primera Semana)

    Cuestin 1.Dado el siguiente montculo[10,6,3,5,2,3,2] se pide insertar el valor 6 describiendo toda lasecuencia de cambios en el mismo.

    El algoritmo de insercin es el siguiente:

    Proc aadir-nodo (T[1...n],v)T[n+1] vFlotar(T[1...n+1],n+1)FprocProc Flotar(T[1...n],i)k iRepetirjkSi j> 1 y T[j/2] < T[k] entonces k j/2Intercambiar T[j] y T[k]Hasta j=k

    Fproc

    De este modo, dado el montculo [10,6,3,5,2,3,2], aadimos 6 al final [10,6,3,5,2,3,2,6] y procedemosa comparar y subir T[n+1] para cada sub-rbol hasta no tener que hacer ningn cambio.

    Veamos como ira cambiando:

    Se llamara a flotar (T[1...8],8).

    Se compara T[8] con su padre, que viene dado por T[8/2]=4, como es mayor se intercambiararesultando

    [10,6,3,6,2,3,2,5]. El valor de k queda actualizado a 4.

    Se vuelven a comparar T[4] y T[2], como son iguales no se hace nada y j queda igual que k, luegotermina el bucle.

    Cuestin 2.Suponemos que para el juego del ajedrez hemos programado una funcin esttica perfectade evaluacin eval(u) para cada situacin de juego u. Se supone conocida otra funcin, compleciones(u) que devuelve la lista de las jugadas legales a partir de la posicin del tablero u. Explica, incluyendopseudocdigo si es preciso, como programar un algoritmo que juegue al ajedrez.Qu pasa si (comoocurre en la realidad) la funcin eval(u) no existe?Qu papel desempea entonces la estrategia

    MINIMAX? (Respuesta: Fundamentos de Algoritmia, pag.355)

    Gracias a la informacin perfecta suministrada por la funcin eval(u) podremos saber en cadamomento cul es la mejor jugada posible. De este modo si jugaran por ejemplo las blancas dado unestado u, tomaramos como mejor movimiento el que maximice el valor de eval(u) (suponiendo queeval(u) nos devuelve el valor ms grande cuanto mejor sea la jugada para las blancas), sin importarnosqu decisin puedan tomar las negras tras nuestro movimiento, ya que eval(u) nos asegura que nuestromovimiento es el ms acertado.

    Sin embargo no existe una funcin eval(u) perfecta en el caso del ajedrez, deberemos entonces buscaruna funcin eval aproximada con una relacin coste/precisin lo mejor posible. En este caso, eval(u)no nos confirma que el mejor movimiento considerado por ella sea en realidad el ms adecuado. Y esaqu donde entra la estrategia MINIMAX, considerando que si para las blancas ser la mejor jugada lamarcada como mayor valor de eval(u), las negras ejecutarn aquella que minimice dicho valor. De este

  • 7/29/2019 Examenes Programacion III

    34/115

    modo si queremos anticipar un nmero determinado de jugadas, tomaremos al anterior criterio,minimizar el valor de eval(u) paras las negras y maximizarlo paras las blancas.

    Cuestin 3. Un vector T contiene n elementos. Se quieren encontrar los m mayores elementos delvector y se supone que n >>m. Describe una forma eficiente de hacer esto sin ordenar el vector ycalcula qu coste tiene.

    Podemos utilizar un enfoque similar a como hacemos en la ordenacin por fusin, pero en este casoiremos generando un sub-vector con aquellos elementos mayores que m. Dividimos por tanto el vectororiginal de forma equilibrada y progresivamente, hasta llegar a un tamao base adecuado (losuficientemente pequeo) para aplicar en el la bsqueda de todo elemento menor que m, cada vez queencontremos un elemento menor que m lo almacenaremos en un vector resultado, que posteriormentese fusionar con los encontrados en las distintas llamadas. Igualmente podemos utilizar otro algoritmode Ordenacin pero sin ordenar el vector, si no almacenar en otro vector los ndices en el ordencorrespondiente, por ejemplo.

  • 7/29/2019 Examenes Programacion III

    35/115

  • 7/29/2019 Examenes Programacion III

    36/115

    EXAMEN Programacin II I. Febrero 2001 (Segunda Semana)

    Cuestin 1.Mostrar mediante un ejemplo que el algoritmo de Dijkstra no siempre encuentra el caminomnimo si existe una distancia negativa. (Respuesta: Fundamentos de Algoritmia pag. 224)

    El algoritmo de Dijkstra nos devuelve los caminos mnimos desde el origen, y su pseudo cdigo es:

    Funcin Dijkstra (L[1...n,1..n]): matriz [2...n]Matriz D[2...n]{Inicializacin}C{2,3,....n}Para i 2 hasta n hacer D[i] L[1,i] Finpara{Bucle voraz}Repetir n-2 vecesvalgn elemento de C que minimiza D[v]CC \ {v}Para cada wC hacerD[w] min (D[w], D[v] + L[v,w])

    FinparaFinRepite

    Probaremos este algoritmo para el siguiente grafo:

    2 1

    145 -9

    Observando el grafo apreciamos los caminos ms cortos desde 1 a cualquier nodo son:

    1-2 con coste 2, 1-3 con coste 4, 1-3-5 con coste 9, 1-3-5-6 con coste 0 y 1-3-5-6-4 con coste 1,veremos si el algoritmo de Dijkstra nos devuelve esta solucin.

    Tenemos para cada paso y tras la inicializacin...

    Paso V C D[2] D[3] D[4] D[5] D[6]

    Inicializa - {2,3,4,5,6} 2 4

    1 2 {3,4,5,6} 2 4 3

    2 4 {3,5,6} 2 4 3

    3 3 {5,6} 2 4 3 9

    4 5 {6} 2 4 3 9 0

    Observamos como la solucin devuelta no es la correcta ya que los costes no son los mnimos, con loque los caminos seran 1-2 (coste 2), 1-2-4 (coste 3) aqu est el fallo-, 1-3 (coste 4), 1-3-5(coste 9) y 1-3-5-6 (coste 0).

  • 7/29/2019 Examenes Programacion III

    37/115

    Cuestin 2.Poner un ejemplo de un vector de 10 elementos que suponga un ejemplo de caso peor parael algoritmo de ordenacin Quicksort. Ordenar el vector mediante este algoritmo detallando cada unode los pasos. (Respuesta Fundamentos de Algoritmia, pag 261)

    Tomaremos un vector con 10 elementos ya ordenados como peor caso.{1,2,3,4,5,6,7,8,9,10}El algoritmo Quicksort es...Proc pivote(T[i...j],var L )pT[i]k i ; L j+1repetir kk+1 hasta que T[k] > p o k >= j fin_repiterepetir L L 1 hasta que T[L] p fin_repiterepetir L L+1 hasta que T[L] p2. segundo bucle, L llega hasta 1, ya que es el nico elemento tq T[L]L), no existe por tanto intercambio alguno, excepto laltima instruccin Intercambiar T[i] por T[L], como L apunta a 1, e i es uno T[L] queda igual.

    A continuacin se llamara a: Quicksort(T[1...0]), Llamada a un caso de tamao cero.

    Quicksort(T[2....10]). Llamamos al resto del vector.

    Ignoramos la primera llamada al ser de un tamao 0, la segunda llamada tendra el mismo efecto quela primera vez, en este caso en el procedimiento pivote L descendera hasta llegar al T[2], y k quedaraen el tercer elemento; no se provoca cambio alguno, y vuelve a hacerse una tercera llamada aQuicksort, una de ellas para un caso de tamao 0: Quicksort(T[2..1]), y otra para el resto del vector,Quicksort(T[3...10]).

    Como vemos el proceso se repite hasta llegar al ltimo elemento, producindose tantas llamadas comoelementos posee el vector.

    Cuestin 3. Dado un montculo T[1...n] programar completamente en pseudocdigo una funcinrecursiva flotar(T,i) para flotar el elemento de la posicin i del vector T. Explica como usar estafuncin para insertar un elemento en el montculo. (Respuesta. Fundamentos de Algoritmia, pag. 188)

    Tomar el algoritmo iterativo de la pag 188 y transformar en recursivo.

  • 7/29/2019 Examenes Programacion III

    38/115

    E s c u e l a T

    e c n i c a S u p e r i o r d e I n g e n i e r o s I n f o r m

    a t i c o s d e l a U N E D

    I n g e n i e r

    a T

    e c n i c a d e S i s t e m a s e I n g e n i e r

    a T

    e c n i c a d e G e s t i

    o n

    P r o g r a m a c i o n I I I - C o n v o c a t o r i a d e S e p t i e m b r e d e 2 0 0 1

    O r i g i n a l

    C u e s t i o n 1 ( 2 p u n t o ) . H a l l a e l g r a f o d e e x p a n s i o n m n i m o d e l g r a f o d e l a g u r a m e d i a n t e

    e l a l g o r i t m o d e K r u s k a l . D e t a l l a c a d a p a s o .

    C u e s t i o n 2 ( 1 p u n t o ) . E x p l i c a p o r q u e u n a e s t r u c t u r a d e m o n t c u l o s u e l e s e r a d e c u a d a

    p a r a r e p r e s e n t a r e l c o n j u n t o d e c a n d i d a t o s e n u n a l g o r i t m o v o r a z .

    C u e s t i o n 3 ( 1 p u n t o ) . E x p l i c a e n q u e c o n s i s t e u n p r o b l e m a d e p l a n i c a c i o n c o n p l a z o

    j o . P o n u n e j e m p l o c o n n = 4 y r e s u e l v e l o a p l i c a n d o e l a l g o r i t m o v o r a z c o r r e s p o n d i e n t e .

    P r o b l e m a 2 ( 5 p u n t o s ) . S e p l a n t e a e l s i g u i e n t e j u e g o : T e n e m o s u n r e c t a n g u l o ( t a b l e r o )

    d e n l a s y m c o l u m n a s c o n n m c a s i l l a s y s u p o n e m o s q u e e l t a b l e r o d e s c a n s a s o b r e u n o

    d e s u s l a d o s d e t a m a ~ n o m a l q u e d e n o m i n a r e m o s b a s e , y d o n d e c a d a c a s i l l a p u e d e c o n t e n e r

    s m b o l o s d e k t i p o s d i f e r e n t e s . A l c o m i e n z o d e l j u e g o e l u s u a r i o c o m i e n z a c o n u n t a b l e r o

    l l e n o d e s m b o l o s . E n c a d a m o v i m i e n t o e l j u g a d o r e l i g e u n s m b o l o d e l t a b l e r o y e s t e e s

    e l i m i n a d o d e l m i s m o j u n t o c o n ( s i l a s h a y ) l a s a g r u p a c i o n e s a d y a c e n t e s ( e n h o r i z o n t a l o

    v e r t i c a l ) d e s u m i s m o s m b o l o s i e m p r e q u e m a n t e n g a n l a c o n t i n u i d a d . U n a v e z e l i m i n a d a

    l a a g r u p a c i o n , l o s h u e c o s d e j a d o s p o r e s t a s e r e l l e n a n d e s l i z a n d o h a c i a l a b a s e l o s s m b o l o s

    d e s u c o l u m n a q u e q u e d e n p o r e n c i m a d e l h u e c o d e j a d o p o r l o s s m b o l o s e l i m i n a d o s . E l

    o b j e t i v o d e l j u e g o e s e l d e d e j a r e l t a b l e r o v a c o .

    P a r a i l u s t r a r e l e n u n c i a d o s u p o n g a m o s u n t a b l e r o d e 4 l a s y 5 c o l u m n a s c o n 4 s m b o l o s

    o , + , * , x y d o n d e - r e p r e s e n t a u n a c a s i l l a v a c a . U n a s e c u e n c i a d e j u e g o s e r a l a s i g u i e n t e :

    o o x + x - - x + x - - - + x - - - - - - - - - - - - - - - - - - - - - - - - -

    o + + x + - - + x + - - - x + - - - + - - - - - - - - - - - - - - - - - - - - -

    o * * o x - + * o x - - x o x - - x x x - - - + - - - - + - - - - - - - - - - -

    o o * x x - * * x x - + + x x - + + o + - + + o + - - - o + - - + + - - - - - -

    S e p i d e p r o g r a m a r u n a l g o r i t m o q u e r e s u e l v a e l j u e g o . E x p l i c a r a d e m a s ( s i l a s h a y ) l a s

    d i f e r e n c i a s q u e h a b r a q u e i n t r o d u c i r a e s t e a l g o r i t m o s i s e e x i g i e r a r e s o l v e r e l j u e g o e n e l

    m e n o r n u m e r o d e m o v i m i e n t o s .

    L a r e s o l u c i o n d e c a d a p r o b l e m a d e b e i n c l u i r , p o r e s t e o r d e n : E l e c c i o n r a z o n a d a d e l e s q u e m a

    a l g o r t m i c o . B r e v e d e s c r i p c i o n d e l e s q u e m a u s a d o e i d e n t i c a c i o n c o n e l p r o b l e m a . E s t r u c t u r a s

    d e d a t o s r e q u e r i d a s . A l g o r i t m o c o m p l e t o a p a r t i r d e l r e n a m i e n t o d e l e s q u e m a g e n e r a l . E s t u d i o

    d e l c o s t e .

    S e g u n e l e s q u e m a e l e g i d o h a y q u e e s p e c i c a r , a d e m a s : V o r a z : d e m o s t r a c i o n d e o p t i m a l i d a d .

    D i v i d e y v e n c e r a s : p r e o r d e n b i e n f u n d a d o e n t r e l o s e j e m p l a r e s d e l p r o b l e m a . E x p l o r a c i o n e n

    g r a f o s : d e s c r i p c i o n d e l g r a f o d e b u s q u e d a a s o c i a d o .

  • 7/29/2019 Examenes Programacion III

    39/115

    EXAMEN Programacin II I. Septiembre 2001 (Original).

    Cuestin 1.Comenta de qu formas se puede mejorar la eficiencia del algoritmo de Dijkstra medianteel uso de estrucutras de datos apropiadas. (Respuesta. Fundamentos de Algoritmia. Pag 227)

    Utilizando una matriz de adyacencia y matrices para representar los datos el algoritmo se situan enO(n2) (con un tiempo O(n) para inicializar la matriz de adyacencia y un tiempo (n2 ) en los buclesque conforman el algoritmo voraz).

    Si resulta que el nmero de aristas a es mayor que el nmero de nodos al cuadrado, n2 , resultaapropiado utilizar en vez de una matriz de adyacencia, una lista de adyacencia, evitando examinarentradas innecesarias -dnde no existe arista- , ahorrando as tiempo en el bucle ms interno delalgoritmo. Por otro lado podemos utilizar un montculo invertido para representar el camino mnimoque se ir generando (que llamaremos D), esto hace que buscar un nodo que minimice el costorequiera slo eliminar la raiz del montculo lo que conlleva un gasto de O(log n) , siendo lainicializacin del montculo (n). Igualmente las operaciones empleadas en el bucle ms interno delalgoritmo reducirn su coste (al ser D un montculo), situndose en O(log n).

    Si se produce la eliminacin de la raiz del montculo n-2 veces (el bucle se ejecuta n-2 veces) y hayque flotar un mximo de a nodos (siendo a el nmero de aristas) obtenemos un tiempo total de((a+n) log n). Si el grafo es conexo, es decir, a >=n-1 el tiempo corresponde a (a log n). Si el grafoes denso ser preferible la implementacin con matrices, si el grafo es disperso es mejor laimplementacin con montculos.

    Cuestin 2. Explica porqu una estructura de montculo suele ser adecuada para representar elconjunto de candidatos de un algoritmo voraz.

    En un algoritmo voraz iremos eligiendo el candidato ms apropiado a cada paso para la hallar lasolucin segn el valor de una funcin de seleccin. Para agilizar esa eleccin podemos tener dichos

    candidatos almacenados en un montculo, de forma que el valor considerado para su mantinimientosea el valor de dicha funcin de seleccin. De este modo la eleccin de candidato consistir en irescogiendo la cima de dicho montculo y actulizar este cuando as proceda, operaciones stas queresultan ms efecientes en los montculos que en otros tipos de estructura de datos.

    Cuestin 3. Explica en que consiste un problema de planificacin con plazo fijo. Pon un ejemplo conn=4 y resulvelo aplicando el algoritmo correspondiente. (Respuesta: Fundamentos de Algoritmia pag.233)

    Un problema de planificacin con plazo fijo consiste en:

    Dado un conjunto de n tareas, cada una de las cuales requiere un tiempo unitario, en cualquier instanteT=1,2,... podemos ejecutar nicamente una tarea. Cada tarea nos producir un beneficio mayor quecero, slo en el caso en el que su ejecucin sea en un instante anterior a di. Habr que buscar lasecuencia de tareas ms apropiada de manera que el beneficio obtenido sea mayor.

    ( Bastara con aplicar el algoritmo que aparece en la pag. 240, ilustrado con un ejemplo para seistareas, como se ve la solucin bastara con eleminar las tareas 5 y 6 y el resultado sera igual con loque ya tenemos un ejemplo con n=4

    i 1 2 3 4

    beneficio 20 15 10 7tiempo 3 1 1 3

    Observar que tenemos las tareas ya ordenadas segn su beneficio de mayor a menor, si no fuera aspara utilizar el algoritmo convendra proceder a esta ordenacin )

  • 7/29/2019 Examenes Programacion III

    40/115

    EXAMEN Programacin II I. Septiembre 2001 (Reserva).

    Cuestin 1.Compara la eficiencia de los algoritmos de ordencin quicksort y mergesort.

    (Ver cuestin 1. Examen de Febrero del 2000 Primera Semana. )

    Cuestin 2. Programa un algoritmo recursivo para implementar la operacin de hundir un elemento ien un montculo representado por el vector T[1...n] (Se supone que salvo por T[i], el vector T posee lapropiedad del montculo). (Respuesta Fundamentos de Algoritmia, pag 188)

    Tomar el algoritmo iterativo descrito en el libro y transformarlo aun algoritmo recursivo.

    Cuestin 3. En los algoritmos de vuelta atrs explica la diferencia entre una condicin de poda y unacondicin de retroceso.

    El algoritmo de vuelta atrs bsico consiste en una bsqueda exhaustiva en el rbol, si el recorrido delrbol no tiene xito porque la solucin parcial hasta ese momento no puede ser completada se produceun retroceso, igualmente si ya existiera una solucin mejor a la que est siendo actualmente calculado

    volveramos atrs.

    Si queremos limitar ms an nuestro espacio de bqueda podemos utilizar condiciones de poda, dadoun determinado problema intentamos encontrar informacin que nos permita decidir deterner labsqueda (volvindo consecuentemente atrs) si hay claros indicios de que el estado actual no nosconducir a una solucin.

  • 7/29/2019 Examenes Programacion III

    41/115

  • 7/29/2019 Examenes Programacion III

    42/115

    Escuela Universitaria de Informatica de la UNED

    Ingeniera Tecnica de Sistemas e Ingeniera Tecnica de Gestion

    Programacion III - Febrero 2.002 - Segunda Semana

    Cuestion 1 (1 puntos). Escribe la secuencia completa de pasos para or-denar por fusion el vector [3,2,7,5,9,3,4,8].

    Cuestion 2 (1 punto). Un algoritmo de coste O(n2) tarda 15 segundosen realizar un determinado procesamiento sobre un ordenador a 450 MHz.Cuanto tiempo se tarda en realizar el mismo procesamiento con el mismo

    algoritmo sobre una maquina 3 veces mas lenta?

    Cuestion 3 (3 puntos). Programar en pseudocodigo todos los proce-dimientos necesarios para fusionar dos conjuntos implementados con montculos.Suponer que los conjuntos no pueden tener elementos repetidos.

    Problema (5 puntos). Se dispone de un tablero de 8 casillas similar alque muestra la figura. En la situacion inicial, las casillas estan ocupadas porcuatro O y cuatro X distribuidas de forma aleatoria. En cada paso la unicaoperacion posible es intercambiar dos fichas adyacentes. Programar de laforma mas eficiente posible el algoritmo que devuelva la secuencia de pasos

    mas corta para ordenar el tablero de forma que todas las fichas tengan almenos otra igual adyacente.

    X O X X O O O X

    La resolucion del problema debe incluir, por este orden:

    1. Eleccion razonada del esquema algortmico.

    2. Descripcion del esquema usado e identificacion con el problema.

    3. Estructuras de datos.

    4. Algoritmo completo a partir del refinamiento del esquema general.

    5. Estudio del coste.Segun el esquema elegido hay que especificar, ademas:

    Voraz: demostracion de optimalidad.

    Divide y venceras: preorden bien fundado.

    Exploracion en grafos: descripcion del arbol de busqueda asociado.

  • 7/29/2019 Examenes Programacion III

    43/115

  • 7/29/2019 Examenes Programacion III

    44/115

  • 7/29/2019 Examenes Programacion III

    45/115

    Pgina 1 de 3Apuntes realizados por Jos Mara Arrando Baeza, centro asociado de Terrasa.

    Suponiendo la llamada inicial flotar_rec( T[1..n+1], n+1)

    Fun flotar_rec(T[1..n, i])

    Si T[i]>T[i DIV 2] ent

    Intercambiar T[i] y T[i DIV 2]

    Flotar_rec(T, i DIV 2);

    FsiFfun

    Nota: en este ejercicio solo pondremos los pasos donde hay intercambio. (si no seran 189 pasos)

    El pivote va a ser el elemento primero, ahora buscamos hacia la derecha el

    primer elemento mayor y hacia la izquierda el menor o igual que el pivote eintercambiamos, seguimos haciendo esto y cuando se crucen los punteros cambiaremos

    el que va decreciendo por el pivote.

    2 2 8 1 9 4 2 3 6 5 4 3 7 4

    Ahora hacemos dos llamadas recursivas, una por cada lado del pivote. Solo

    detallamos las llamadas que producen cambios. En este caso vamos con la del lado

    derecho.

    2 3 8 1 9 4 2 2 6 5 4 3 7 4

    2 2 2 1 9 4 8 3 6 5 4 3 7 4

    1 2 2 2 9 4 8 3 6 5 4 3 7 4

    1 2 2 2 9 4 8 3 6 5 4 3 7 4

    1 2 2 2 4 4 8 3 6 5 4 3 7 9

    1 2 2 2 4 4 7 3 6 5 4 3 8 9

  • 7/29/2019 Examenes Programacion III

    46/115

    Pgina 2 de 3Apuntes realizados por Jos Mara Arrando Baeza, centro asociado de Terrasa.

    Si nos centramos sobre todo en las repeticiones vemos que el primer para es: 1

    asignacin y 7 llamadas recursivas. b=2(el problema se llama recursivamente con

    ejemplares de tamao n/2 (n/b). A=7, se llama 7 veces.

    El segundo para ser desde 1 hasta 4n^3. Por lo que el grado k del polinomio

    ser 3 (k=3). La ecuacin de recurrencia quedara:

    T(n)= cte si n1

    Ahora falta el coste, que si no pasa nada estar esta noche.

    1 2 2 2 4 4 7 3 6 5 4 3 8 9

    1 2 2 2 4 4 3 3 6 5 4 7 8 9

    1 2 2 2 4 4 3 3 6 5 4 7 8 9

    1 2 2 2 4 4 3 3 4 5 6 7 8 9

    1 2 2 2 4 4 3 3 6 5 4 7 8 9

  • 7/29/2019 Examenes Programacion III

    47/115

    Pgina 3 de 3Apuntes realizados por Jos Mara Arrando Baeza, centro asociado de Terrasa.

    Este ni idea, todava no he conocido a nadie que lo sepa resolver, una pista es que

    funciona de forma parecida a los de exponenciacin.

  • 7/29/2019 Examenes Programacion III

    48/115

  • 7/29/2019 Examenes Programacion III

    49/115

    Programacin III

    Cdigos de asignatura:Sistemas: 402048; Gestin: 41204-

    Primera SemanaEnero de 2003

    UNIVERSIDAD NACIONAL

    DE EDUCACIN A DISTA NCIA Prueba PresencialDuracin: 2 horas

    Material permitido: NINGUNO

    Apel l idos: ___________________________________________________________________________________ DN I : _______________________

    Nom bre: _____________________________________ Cent ro Asoc iad o en e l que ent reg la pr c t ic a: _______________________

    La resolucin del problema debe incluir, por este orden:1. Eleccin razonada del esquema algortmico2. Descripcin del esquema usado e identificacin con el problema3. Estructuras de datos4. Algoritmo completo a partir del refinamiento del esquema general5. Estudio del coste

    Cuestin 1 (1 puntos). Para qu se pueden utilizar montculos en el algoritmo de Kruskal?Qu mejoras introduce en trminos de complejidad?

    Solucin:

    Brassard, pgina 220.

    Cuestin 2 (2 punto). Dado el grafo de la figura, aplicar el algoritmo de Dijkstra para hallar loscaminos ms cortos desde el nodo 1 hasta cada uno de los otros nodos, indicando en cadapaso: nodos seleccionados, nodos no seleccionados, vector de distancias y vector de nodosprecedentes.

    7

    5

    7

    7

    515

    20

    3 54

    12

    Solucin:

    Distancias desde 1 Nodo precedente

    Paso Nodos seleccionados Nodos no seleccionados 2 3 4 5 2 3 4 5

    Inicializacin 1 2, 3, 4, 5 20 5 7 1 1 1 1

    1 1, 4 2, 3, 5 20 12 5 7 1 4 1 1

    2 1, 4, 5 2, 3 20 12 5 7 1 4 1 1

    3 1, 4, 5, 3 2 19 12 5 7 3 4 1 1

    Cuestin 3 (2 puntos). Se desea implementar una funcin para desencriptar un mensajenumrico. La funcin desencriptar recibe tres enteros: el mensaje cifrado c, la clave privada s yla clave pblica z; y devuelve el mensaje original a. El mensaje original se recompone con la

    frmula:a := cs mod z

    Sabiendo que no se dispone del operador de potencia, implementar la funcin utilizando elesquema divide y vencers.

    Segn el esquema elegido hay que especificar, adems:

    Voraz: demostracin de optimalidad

    Divide y Vencers: preorden bien fundado

    Exploracin en grafos: descripcin del rbol de bsqueda asociado

  • 7/29/2019 Examenes Programacion III

    50/115

    Solucin:

    a)desencript