Quanti diversi max-heap esistono per un elenco di n numeri interi?


19

Quanti diversi max-heap esistono per un elenco di numeri interi?n

Esempio: elenco [1, 2, 3, 4]

Il max-heap può essere 4 3 2 1:

    4
   / \
  3   2
 /
1

oppure 4 2 3 1:

    4 
   / \
  2   3 
 /
1

Risposte:


22

Non ho trovato un modulo chiuso, ma secondo questa voce nell'Enciclopedia online delle sequenze di numeri interi la sequenza inizia con

1, 1, 1, 2, 3, 8, 20, 80, 210, 896, 3360, 19200, 79200, 506880, 2745600, 21964800, 108108000, 820019200, 5227622400, 48881664000, 319258368000, ...

È possibile trovare una ricorsione non così piacevole nel database OEIS. Fondamentalmente l'idea è la seguente. La radice di un cumulo ario è sempre il massimo. I due sottoalberi appesi alla radice sono di nuovo maxheaps. Le loro dimensioni dipendono da , è un po 'noioso calcolare le dimensioni (vedere la voce OEIS), chiaramente . Ora possiamo scegliere quali elementi vanno nell'heap di sinistra e quali vanno nell'heap di destra. Esistono modi per distribuire gli elementi. Questo dà la ricorrenzannn1,n2n1+n2=n1(n1n1)

a(n)=(n1n1)a(n1)a(n2).
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.