Usiłuję zrozumieć, co jest nie tak z następującym dowodem kolejnego wystąpienia
Dokumentacja mówi, że jest błędna z powodu hipotezy indukcyjnej, że
Usiłuję zrozumieć, co jest nie tak z następującym dowodem kolejnego wystąpienia
Dokumentacja mówi, że jest błędna z powodu hipotezy indukcyjnej, że
Odpowiedzi:
Powiedzmy, że ostatecznym celem jest udowodnienie, że . Zaczynasz od hipotezy indukcyjnej:
dla wszystkich i < n .
Aby ukończyć dowód, musisz również wykazać, że również.
Można jednak wywnioskować, że , co nie jest pomocne w wypełnieniu dowodu; potrzebujesz jednej stałej c dla (prawie) wszystkich n . Dlatego nie możemy niczego wywnioskować, a T ( n ) = O ( n ) nie zostało udowodnione.
Zauważ, że jesteś zdezorientowany między wynikiem a procesem sprawdzania. I jeszcze jeden punkt, jest w tym przypadku Θ ( n log n ), więc możesz rozważyć odpowiednią hipotezę indukcyjną, aby móc to udowodnić.
Pominąłeś kilka kroków. Wygląda na to, że próbujesz udowodnić przez indukcję, że , a twój dowód to:
Załóżmy, że dla k < n . Oznacza to, że T ( k ) ≤ c dla niektórych c . Następnie T ( n ) = 2 T ( ⌊ n / 2 ⌋ ) + n ≤ 2 c ⌊ n / 2 ⌋ + n ≤ ( c + 1 , więc T ( n ) = O ( n ) .
Ten dowód od samego początku idzie źle: „ dla k < n ” nie ma sensu. Duże oh jest pojęciem asymptotycznym: T ( k ) = O ( k ) oznacza, że istnieje pewna stała c i wartość progowa N taka, że ∀ k ≥ N , T ( k ) ≤ c . I znowu na końcu nie można dojść do wniosku, że „ T ( n ) = O ( n ) ”, ponieważ mówi to coś o funkcji T jako całości i udowodniłeś tylko coś o konkretnej wartości T ( n ) .
Musisz wyraźnie powiedzieć, co oznacza Więc może twój dowód brzmi:
Załóżmy, że dla wszystkich k < n . Następnie T ( n ) = 2 T ( ⌊ n / 2 ⌋ ) + n ≤ 2 c ⌊ n / 2 ⌋ + n ≤ ( c + 1 ) .
To nie dowodzi kroku indukcyjnego: zacząłeś od , a wykazałeś, że dla k = n , T ( k ) ≤ ( c + 1 . To jest słabsza granica. Zobacz, co to oznacza: T ( k ) ≤ c oznacza, że C jest związane z szybkością wzrostu T . Ale masz współczynnik c, który rośnie, gdyrośnie k . To nie jest liniowy wzrost!
Jeśli przyjrzysz się uważnie, zauważysz, że współczynnik rośnie o 1 za każdym razem, gdy k podwaja się. Tak więc, nieformalnie, jeśli m = 2 p k, to c m = c k + p ; innymi słowy, c k = c 0 log 2 k .
Można to zrobić precyzyjnie. Udowodnij przez indukcję, że dla , T ( k ) ≤ c log 2 ( k ) .
The recurrence relation is typical for divide-and-conquer algorithms that split the data in two equal parts in linear time. Such algorithms operate in time (not ).
Aby zobaczyć oczekiwany wynik, możesz sprawdzić relację powtarzalności względem twierdzenia głównego . Podział wynosi a dodatkowa wykonana praca to n ; log 2 ( 2 ) = 1, więc jest to drugi przypadek, dla którego wzrost wynosi Θ ( n .
I'm extending the answer already given, perhaps only by explaining my comment in more detail.
and are constants and a function. Note that in our case can be interpreted to mean
. This means that we have . The second case of the Master theorem applies since , and we have the solution .