<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[KOmplexität]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versteh nicht wie man von einem rekursiven Algorithmus die Komplexität bestimmen soll. Wieviel Speicher braucht er und wie lange braucht er.</p>
<p>Hab gesehen da macht man oft nur grobe Abschätzungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/270826/komplexität</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 20:22:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270826.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Jul 2010 04:13:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to KOmplexität on Mon, 19 Jul 2010 04:13:55 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versteh nicht wie man von einem rekursiven Algorithmus die Komplexität bestimmen soll. Wieviel Speicher braucht er und wie lange braucht er.</p>
<p>Hab gesehen da macht man oft nur grobe Abschätzungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928365</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Mon, 19 Jul 2010 04:13:55 GMT</pubDate></item><item><title><![CDATA[Reply to KOmplexität on Mon, 19 Jul 2010 05:19:45 GMT]]></title><description><![CDATA[<p>Man macht häufig nur Abschätzungen, allerdings braucht man einen Beweis,<br />
wenn man es sauber beantworten will.</p>
<p>Im Grunde überlegt man, wie häufig die Funktion aufgerufen wird,<br />
wenn man ein Datenstruktur der Größe n hat.<br />
Falls Schleifen in der Funktion sind, die abhängig von n sind, ist das ganze<br />
natürlich nicht mehr so einfach. Aber wenn diese z.B. im Durchschnitt n/2<br />
mal ausgeführt werden, dann kann man z.B. einfach wieder mit n multiplizieren.<br />
Richtig kompliziert wird es wenn die Tiefe bei der Anzahl der Wiederholungen<br />
berücksichtigt wird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928371</guid><dc:creator><![CDATA[Complexity]]></dc:creator><pubDate>Mon, 19 Jul 2010 05:19:45 GMT</pubDate></item><item><title><![CDATA[Reply to KOmplexität on Mon, 19 Jul 2010 12:28:03 GMT]]></title><description><![CDATA[<p>blurry333 schrieb:</p>
<blockquote>
<p>ich versteh nicht wie man von einem rekursiven Algorithmus die Komplexität bestimmen soll. Wieviel Speicher braucht er und wie lange braucht er.</p>
</blockquote>
<p>Hier würde ein Beispiel helfen.</p>
<p>blurry333 schrieb:</p>
<blockquote>
<p>Hab gesehen da macht man oft nur grobe Abschätzungen.</p>
</blockquote>
<p>Das ist mir neu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928552</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 19 Jul 2010 12:28:03 GMT</pubDate></item><item><title><![CDATA[Reply to KOmplexität on Mon, 19 Jul 2010 19:22:53 GMT]]></title><description><![CDATA[<blockquote>
<p>&gt; ich versteh nicht wie man von einem rekursiven Algorithmus die Komplexität bestimmen soll. Wieviel Speicher braucht er und wie lange braucht er.</p>
</blockquote>
<p>Konkret willst du also die Zeitkomplexität und die Speicherkomplexität erhalten, denn die beiden musst du AFAIK in einem Algorithmus unterscheiden. Allerdings trifft die Komplexität keinerlei Aussage darüber, wie lange ein Algorithmus braucht oder an Speicherplatz benötigt, sondern, wie er sich bei ändernder Größenordnung verhält.<br />
Angenommen:</p>
<pre><code class="language-cpp">void recursive(unsigned n) {
   calculation(n);
   --n;
   if(n &gt; 0)
      recursive(n);
}
</code></pre>
<p>So, wenn calculation so definiert wurde:</p>
<pre><code class="language-cpp">void calculation(unsigned n) { }
</code></pre>
<p>ist die Zeitkomplexität direkt proportional zum parameter n, also einfach linear. Sowohl best-case alsauch worst-case sind dann einfach mit ƒ(n) = n zu beschreiben. Theoretisch ändert sich das auch nicht, wenn die Funktion nun anders aussähe:</p>
<pre><code class="language-cpp">void calculation(unsigned n) {
   for(unsigned i = 0; i &lt; 100; ++i) {
      i * i;
   }
}
</code></pre>
<p>Wird in calculation nun jedoch eine Abhängigkeit mit dem Parameter n gefunden, dann ändert sich das allerdings:<br />
Edit: Nur noch Unfug (siehe unten)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928610</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:22:53 GMT</pubDate></item><item><title><![CDATA[Reply to KOmplexität on Mon, 19 Jul 2010 16:19:45 GMT]]></title><description><![CDATA[<p>Ad aCTa schrieb:</p>
<blockquote>
<p>Jetzt wird schnell klar, dass da eine Beziehung für ƒ(n) = n² + n herrscht. (n² Schleifendurchläufe mit konstanter Berrechnung, n rekursive Aufrufe)</p>
</blockquote>
<p>Wirklich? Auch wenn du letztlich bei dem Ergebnis O(n^2) landest, müsstest du den Weg dorthin nochmal gründlich überdenken. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928722</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Mon, 19 Jul 2010 16:19:45 GMT</pubDate></item><item><title><![CDATA[Reply to KOmplexität on Mon, 19 Jul 2010 18:15:05 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5255">@Ad</a> aCTa:<br />
Für f(n) = c gilt f(n) = O(1), nicht f(n) = O(n).</p>
<p>Deine Begründung für O(recursive) = O(n²) Iterationen kann ich nicht nachvollziehen. Einerseits leuchtet mir das &quot;+ n&quot; nicht ein. Abgesehen davon berechnest du die Anzahl an Iterationen falsch.<br />
Für n = 4 beispielsweise komme ich auf 10 Iterationen (4 + 3 + 2 + 1).<br />
Allgemein: A(n) = 1/2n² + 1/2n<br />
Offensichtlich gilt A(n) = O(1/2n²). Dass O(n²) stimmt, liegt nur daran, dass diese Notation, wie du schon gesagt hast, nur die asymptotisch obere Schranke angibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928774</guid><dc:creator><![CDATA[Famer]]></dc:creator><pubDate>Mon, 19 Jul 2010 18:15:05 GMT</pubDate></item><item><title><![CDATA[Reply to KOmplexität on Mon, 19 Jul 2010 19:25:01 GMT]]></title><description><![CDATA[<p>Hoppla, das ist mir jetzt ein wenig peinlich. Richtigerweise geht es natürlich so:</p>
<pre><code class="language-cpp">void recursive(unsigned n) {
   calculation(n);
   if(n &gt; 0)
      recursive(n - 1); // &lt;--- Was hab ich mir hier vorher nur gedacht?
}
</code></pre>
<p>So, für diese Funktion</p>
<pre><code class="language-cpp">void calculation(unsigned n)
   for(unsigned i = 0; i &lt; n; ++i) {
      i * n;
   }
}
</code></pre>
<p>Wäre natürlich das zu beobachten:<br />
recursive(1) = 1 Call und 1 Schleifendurchlauf<br />
recursive(2) = 2 Calls und 3 Schleifendurchläufe<br />
recursive(3) = 3 Calls und 6 Schleifendurchläufe<br />
recursive(4) = 4 Calls und 10 Schleifendurchläufe</p>
<p>Was auf ƒ(n) = n(n + 1) / 2 folgern sollte. (die Summe der Werte von 1 bis n)<br />
Folglich ƒ(n) = 1/2 * (n² + n). Nach O-Notation sollte das nun O(n² + n), dominierende Funktion daher O(n²). Oder? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Edit: Da ist mir schon jemand zuvor gekommen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1928778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1928778</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Mon, 19 Jul 2010 19:25:01 GMT</pubDate></item></channel></rss>