Czytam CLRS i miał jakiś problem z ćwiczeniem 6.5-8.udowodnić algorytm, który używa min-sterty do scalania sortowanych list k
Podaj O (N lg k) -czas algorytm do połączenia k klasyfikowane wykazy do jednego posortowanej listy, gdzie n jest całkowitą liczbą elementów na wszystkich wejściach list. (Wskazówka: użyć min0heap K-way łączenia).
Roztwór, a każdy mówi
1) opiera się na k-element min sterty pomocą pierwszego elementu list k
2) ekstraktu min(), aby najmniejszy element ze sterty i dołączyć je do listy wynikowej
3) odebrać następny element z samej listy jak ten właśnie pochodzących kupa. Włóż go do sterty i goto 2).
Mogę zrozumieć, że czas jest O (n lg k), ale nie otrzymuję poprawności wyboru w kroku 3). Wygląda na to, że jest, ale czy istnieje jakiś dowód formalny?
Myślę, że złożoność byłaby zamiast O (k * n * lg k). –