+1 Daumen
1,7k Aufrufe

Aufgabe:

Zusammen mit einer Kommilitonin erstellen Sie eine eigene Java-Bibliothek mit mathematischen Studieninhalten. Unabhängig voneinander haben Sie Methoden zur Berechnung von Binomialkoeffizienten implementiert. Sie haben sich für eine rekursive Version entschieden:

public static long binomialRecursion(int n, int k) {
  if ((k==0) || (k==n)) return 1;
  if ((k<0) || (k>n)) return 0;
  return binomialRecursion(n-1, k-1) + binomialRecursion(n-1, k);
}

Ihre Kommilitonin ist dagegen iterativ vorgegangen:

public static long binomialIteration(int n, int k) {
  if (k<0 || n<k) return 0;
  long[][] h = new long[n+1][n+1];
  for (int i=0; i<=n; i++) {
      h[i][0] = h[i][i] = 1;
      for (int j=1; j<i; j++)
          h[i][j] = (j==0 ? 0 : h[i-1][j-1]) + (i==j ? 0 : h[i-1][j]);
  }
  return h[n][k];
}


Um Ihre Bibliothek klein zu halten, diskutieren Sie darüber, welche Implementation Sie beibehalten und gegebenenfalls verbessern wollen. Dazu versuchen Sie folgende Fragen zu beantworten:

(a) Wie groß ist \( \left(\begin{array}{c}36 \\ 2\end{array}\right) \)?

(b) Für welche \( k \) (in Abhängigkeit von \( n \) ) können Sie mittels Induktion über \( n \) zeigen, dass für die Anzahl \( C(n, k) \) rekursiver Aufrufe von `binomialRecursion auf Eingabe \( (n, k) \)

\( C(n, k) \geq \sqrt{2}^{n} \)

gilt?

Hinweis: Gehen Sie dabei von folgender Rekursionsgleichung für \( C(n, k) \) aus:

\( C(n, k)=\left\{\begin{array}{ll}C(n-1, k-1)+C(n-1, k)+2 & \text { falls } 0<k<n \\ 0 & \text { sonst }\end{array}\right. \)

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt:

Berechnung von \( \left(\begin{array}{c}36 \\ 2\end{array}\right) \)

Zuerst berechnen wir den Binomialkoeffizienten \( \left(\begin{array}{c}36 \\ 2\end{array}\right) \) mithilfe der bekannten Formel:
\( \left(\begin{array}{c}n \\ k\end{array}\right) = \frac{n!}{k!(n-k)!} \)

Im Falle von \( n = 36 \) und \( k = 2 \), erhalten wir:
\( \left(\begin{array}{c}36 \\ 2\end{array}\right) = \frac{36!}{2!(36-2)!} = \frac{36!}{2!34!} \)
Das vereinfacht sich zu:
\( \left(\begin{array}{c}36 \\ 2\end{array}\right) = \frac{36 \times 35}{2} = 18 \times 35 = 630 \)

Antwort: \( \left(\begin{array}{c}36 \\ 2\end{array}\right) = 630 \)

Induktionsbeweis für \( C(n, k) \geq \sqrt{2}^{n} \)

Induktionsanfang (IA): Wir zeigen, dass die Ungleichung für ein kleines \( n \) gilt. Beispielsweise für \( n = 1 \), ist \( C(1, 0) = 1 \) und \( C(1, 1) = 1 \). Da \( \sqrt{2}^{1} = \sqrt{2} \), ist die Ungleichung erfüllt.

Induktionsschritt (IS):
1. Induktionsvoraussetzung (IV): Angenommen, die Ungleichung gilt für \( n \). Das bedeutet, dass \( C(n, k) \geq \sqrt{2}^{n} \) für unsere IV.
2. Induktionsschluss (IS): Wir müssen zeigen, dass die Ungleichung dann auch für \( n+1 \) gilt, also \( C(n+1, k) \geq \sqrt{2}^{n+1} \).

Betrachten wir die Rekursionsgleichung für \( C(n, k) \):
\( C(n, k)=\left\{\begin{array}{ll} C(n-1, k-1) + C(n-1, k) + 2 & \text { falls } 0<k<n \\ 0 & \text { sonst } \end{array}\right. \)

Für \( 0<k<n \), mit der IV, können wir annehmen, dass \( C(n-1, k-1) \geq \sqrt{2}^{n-1} \) und \( C(n-1, k) \geq \sqrt{2}^{n-1} \). Also:
\( C(n, k) \geq 2\sqrt{2}^{n-1} + 2 = 2(\sqrt{2}^{n-1} + 1) \)

\( \sqrt{2}^{n-1} + 1 \) ist immer größer als \( \sqrt{2}^{n-1} \), also ist \( 2(\sqrt{2}^{n-1} + 1) > 2\sqrt{2}^{n-1} = \sqrt{2}^{n+1} \).

Folglich ist die Bedingung erfüllt für \( k \) mit \( 0<k<n \).

Antwort auf die Frage (b): Indem wir die Induktionsvoraussetzung und den Induktionsschluss betrachten, können wir feststellen, dass \( C(n, k) \geq \sqrt{2}^{n} \) tatsächlich für alle \( k \) mit \( 0<k<n \) gilt, indem wir die gegebene Rekursionsgleichung und die Annahmen nutzen.
Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community