Substitutionsmethode

Mittels der Substitutionsmethode für Rekurrenzen lässt sich eine untere Schranke bzw. obere Schranke des (Rechen-)Aufwandes einer Rekursion bestimmen.

Beschreiben der Methode

Gegeben sei eine Rekursion T(n) der Form T(n) = a⋅T(n/b) + f(n). Um eine obere Schranke zu ermitteln, schätzt man diese zuerst mittels Ο-Kalkül ab. Unter Abschätzen versteht man „geschicktes Raten“. Anschließend wird die Vermutung mit Hilfe von Substitution bewiesen bzw. widerlegt. Analog ist das Vorgehen zur Bestimmung der unteren Schranke.

  1. Vermutung(1): T(n) ≤ c⋅g(n), mit c > 0 bzw. T(n) ∈ Ο(g(n))  (nach Definition des Ο-Kalküls)
  2. Annahme(2): Tsub(n/b) ≤ c⋅g(n/b)
  3. Substitution durch Einsetzen der Annahme in die Rekurrenz: T(n) ≤ a⋅Tsub(n/b) + f(n)  bzw.  T(n) ≤ a⋅(c⋅g(n/b)) + f(n)
  4. Genaues(3) Umformens zu: T(n) ≤ c⋅g(n)  → Falls dies nicht möglich ist, so war entweder die Vermutung oder die Annahme(2) falsch.
  5. Beweis von T(n) ≤ c⋅g(n) durch Induktion ⇒ T(n) ∈ Ο(g(n))
(1)   Die Vermutung ist die nach oben abgeschätzte Schranke, so dass gilt: T(n) ≤ c⋅g(n) ∈Ο(g(n))
(2)   Falls sich bei 4. T(n) nicht entsprechend genau(3) umformen lässt, so darf man von der Annahme Tsub(n/b) ≤ c⋅g(n/b) einen Term t(n) niedrigerer Ordnung subtrahieren. Die neue Annahme ist dann: Tsub(n/b) ≤ c⋅g(n/b) – t(n)
(3)   Hiermit ist gemeint, dass z. B. T(n) ≤ (c+1)⋅g(n) nicht die genaue Form der Vermutung ist. Korrekt wäre beispielsweise T(n) ≤ c⋅g(n) oder auch T(n) ≤ (c-1)⋅g(n).

Beispiel

1.  Vermutung: T(n)∈O(nln⁡(n))⟹T(n)≤c⋅nln⁡(n)
2.  Annahme: Tsub1(n4)≤c⋅(n4)ln⁡(n4)  und  Tsub2(n16)≤c⋅(n16)ln⁡(n16)
3.  Substitution: T(n)≤2⋅Tsub1(n4)+8Tsub2(n16)+n
4.  Umformen:
=2(c⋅(n4)ln⁡(n4))+8(c⋅(n16)ln⁡(n16))+n
=c⋅n2(ln⁡(n)−ln⁡(4))+c⋅n2(ln⁡(n)−ln⁡(16))+n
=c⋅n2(2ln⁡(n)−ln⁡(4)−ln⁡(16))+n
=c⋅nln⁡(n)−c⋅n2(ln⁡(4)+ln⁡(16))+n
≤c⋅nln⁡(n)  mit  c≥2ln⁡(4)+ln⁡(16)=2ln⁡(64)
5.  Induktion:
I.A.: n=2:T(2)=2≤c⋅2ln⁡(2)=  mit  c≥ln−1(2)≈1,443
I.V.: T(n)≤c⋅nln⁡(n)  für  n≥n0
I.S.: n → n + 1: Da man für ein n0 gezeigt hat, dass T(n) ≤ c⋅n⋅ln(n) korrekt ist, stimmt die Vermutung. (Es zeigt sich, dass eine Konstante c ≥ 1,443 ausreicht.)
Damit folgt für T(n):  T(n)∈O(nln⁡(n))
Siehe zu demselben Beispiel auch die Aufwandsabschätzung mit dem Θ-Kalkül im Artikel zum Mastertheorem.
1.  Vermutung: T(n)∈O(n3ln2(n))⟹T(n)≤c⋅n3ln2(n)
2.  Annahme: Tsub(n2)=c⋅(n2)3ln2(n2)−t(n)  mit  t(n)=b⋅ln2(2)(n2)3  und  b>0
3.  Substitution: T(n)≤8Tsub(n2)+n3ln⁡(n)
4.  Umformen:
=8(c⋅(n2)3ln2(n2)−b⋅ln2(2)(n2)3)+n3ln⁡(n)
=c⋅n3ln2(n2)−b⋅ln2(2)n3+n3ln⁡(n)
=c⋅n3(ln⁡(n)−ln⁡(2))⋅(ln⁡(n)−ln⁡(2))−b⋅ln2(2)n3+n3ln⁡(n)
=c⋅n3(ln2(n)−2ln⁡(2)ln⁡(n)+ln2(2))−b⋅ln2(2)n3+n3ln⁡(n)
=c⋅n3ln2(n)−c⋅n32ln⁡(2)ln⁡(n)+c⋅n3ln2(2)−b⋅ln2(2)n3+n3ln⁡(n)
=c⋅n3ln2(n)−c⋅n32ln⁡(2)ln⁡(n)+n3ln⁡(n)−b⋅ln2(2)n3+c⋅n3ln2(2)
=c⋅n3ln2(n)+n3ln⁡(n)⋅(1−c⋅2ln⁡(2))⏟c≥12ln⁡(2)+n3ln2(2)⋅(c−b)⏟ b≥c
≤c⋅n3ln2(n)  mit   b≥c≥2ln−1(2)
5.  Induktion:
I.A.: n=2:T(2)≈5,5≤c⋅23ln2(2)  mit  c≥1
I.V.: T(n)≤c⋅n3ln2(n)  für  n≥n0
I.S.: n → n + 1: Da man für ein n0 gezeigt hat, dass T(n) ≤ c⋅n3ln2(n) korrekt ist und c eine beliebig große Konstante sein darf, stimmt die Vermutung. (Eine Konstante c ≥ 4 ist hinreichend groß für alle n.)
Damit folgt für T(n):  T(n)∈O(n3ln2(n))