Sto leggendo CLRS e ho avuto qualche problema con l'esercizio 6.5-8.dimostrare l'algoritmo che utilizza il min-heap per unire k liste ordinate
Invia un O (n lg k) algoritmo con tempo di fondere k ordinate liste in uno lista ordinata, dove n è il numero totale di elementi in tutti gli ingressi elenchi. (Suggerimento: usare un min0heap per k-way fusione.)
La soluzione è, come tutti dicono,
1) costruire un k-elemento min-heap utilizzando il primo elemento delle liste k,
2) estrarre-min() per ottenere l'elemento più piccolo dal mucchio e aggiungerlo alla lista dei risultati,
3) raccogliere l'elemento successivo da alla medesima lista come quella che abbiamo appena estratto dalla il mucchio. Inseriscilo nell'heap e goto 2).
Posso capire che il tempo è O (n lg k), ma non ho la correttezza della scelta nel passaggio 3). È sembra ovvio ma c'è qualche prova formale?
Penso che la complessità sarebbe O (k * n * lg k). –