4
1) Teorema dell'esperto: (n)  T (n/ )  log (n) T  = 5 5 + n 3/2  lim noo  n log  (5) 5 n log  (n) 3/2 = 0  lim noo n log  (n) 3/2 n log  (5)0.1 5 = 0  Caso 1 con .1 ε = 0  (n) (n  ) T  = Θ  2  2) Spiegare cos'è l'albero delle decisioni di un algoritmo. Dire perchè l'albero delle decisioni di un algoritmo generale di ordinamento ha altezza maggiore o uguale di dove è la dimensione dell'array in ingresso. og  ( n!) l  2  n  Vedi dimostrazione del limite inferiore del costo di un algoritmo di ordinamento nella lezione 6-7 3) Descrivere uno degli algoritmi visti a lezione per calcolare il numero di inversioni di un array di n elementi in tempo (n log  n) O  MERGE-SORT (A, n) return MERGE-SORT-RIC (A, 1, n) MERGE-SORT-RIC (A, p, r) if (p r) return 0 q = (p + r)/2 inv1 = MERGE-SORT-RIC (A, p, q) inv2 = MERGE-SORT-RIC (A, q + 1, r) inv3 = MERGE (A, p, q, r) return inv1 + inv2 + inv3 MERGE (A, p, q, r) n1 = q p + 1 n2 = r q for i = 1 to n1 L[i] = A[p + i 1] for j = 1 to n2 R[j] = A[q + j] L[n1 + 1] = R[n2 + 1] = inv = 0 i = j = 1 for k = p to r if (L[i] R[j] and i n1)  A[k] = L[i], i = i + 1

ASD12-13Appello2Recuperato

Embed Size (px)

DESCRIPTION

ASD 2012 - 2013

Citation preview

  • 5/26/2018 ASD12-13Appello2Recuperato

    1/4

    1) Teorema dell'esperto: (n) T(n/ ) log(n)T = 5 5 +n3/2

    limnoo n

    log (5)5

    n log (n)3/2= 0

    limnoo

    n log (n)3/2

    nlog (5)0.15= 0

    Caso 1 con .1 = 0

    (n) (n )T = 2

    2) Spiegare cos' l'albero delle decisioni di un algoritmo. Dire perch l'albero delle

    decisioni di un algoritmo generale di ordinamento ha altezza maggiore o uguale di

    dove la dimensione dell'array in ingresso.og(n!)l 2 n

    Vedi dimostrazione del limite inferiore del costo di un algoritmo di ordinamento nella lezione 6-7

    3) Descrivere uno degli algoritmi visti a lezione per calcolare il numero di inversioni di

    un array di n elementi in tempo (nlogn)O

    MERGE-SORT (A, n)

    return MERGE-SORT-RIC (A, 1, n)

    MERGE-SORT-RIC (A, p, r)

    if (p r) return 0

    q = (p + r)/2

    inv1 = MERGE-SORT-RIC (A, p, q)inv2 = MERGE-SORT-RIC (A, q + 1, r)

    inv3 = MERGE (A, p, q, r)

    return inv1 + inv2 + inv3

    MERGE (A, p, q, r)

    n1 = q p + 1

    n2 = r q

    for i = 1 to n1

    L[i] = A[p + i 1]

    for j = 1 to n2

    R[j] = A[q + j]L[n1 + 1] =

    R[n2 + 1] =

    inv = 0

    i = j = 1

    for k = p to r

    if (L[i] R[j] and i n1)

    A[k] = L[i], i = i + 1

  • 5/26/2018 ASD12-13Appello2Recuperato

    2/4

    else

    A[k] = R[j], j = j + 1

    inv = inv + n1 i + 1

    return inv

    4) Calcolare il massimo numero totale di nodi in un albero rosso-nero di altezza

    nera e con un solo nodo rosso. Dimostrare che il massimo numero di nodi si hak

    quando il nodo rosso uno dei figli della radice

    Siccome lalbero contiene un nodo rosso esso non vuoto e quindi . Sek 1

    dallalbero togliamo il sottoalbero con radice il nodo rosso e lo sostituiamo

    con uno dei due sottoalberi radicati nei suoi figli otteniamo un albero rosso

    nero con tutti i nodi neri e altezza nera k. Questalbero un albero binario

    completo di altezza k ed ha quindi

    k

    i=0

    2i = 2k+1 1

    nodi. Per ottenere il numero di nodi dellalbero originario dobbiamo ag-

    giungere il nodo rosso e il numero di nodi del sottoalbero tralasciato. Se il

    nodo rosso si trova a profondit il sottoalbero tralasciato un albero binarioi

    completo di altezza e contieneki

    k

    i=0

    2i = 2ki+1 1

    nodi. Il numero di nodi dellalbero originale, in funzione della profondit a cui si trova il nodo

    rosso, quindi:

    2k+1 1 + 1 + 2ki+1 1 = 2k+1 + 2ki+1 1

    che massimo quando la profondit i del nodo rosso minima. Siccome la radice deve essere

    nera, la profondit minima del nodo rosso 1 (il nodo rosso figlio della radice). Dunque il

    massimo numero di nodi e

    2k+1 + 2k 1

    5) Scrivere una versione della funzione Search(x, i) che data la radice x di un albero

    rosso-nero aumentato con il campo size ed un intero i cerca la chiave i-esima in ordine

    di grandezza. Si suppone che dove il numero di chiavi presenti nellalbero1 in n

    T. La complessit asintotica deve essere (log(n))O

    SEARCH (x, i)

    /* Precondizione: 1

  • 5/26/2018 ASD12-13Appello2Recuperato

    3/4

    if left[x] = nil then nl=0

    else nl=size[left[x]]

    if i

  • 5/26/2018 ASD12-13Appello2Recuperato

    4/4

    LINK(x,y)

    if (x.rank>y.rank)

    y.p=x

    x.somma=x.somma+y.somma

    elsex.p=y

    y.somma = y.somma + x.somma

    if (x.rank=y.rank)

    y.rank = y.rank + 1

    SUM-SET(x)

    x = FIND-SET(x)

    return x.somma