Die Mathe-Redaktion - 20.04.2019 02:30 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
Listenpunkt2 im Schwätz / Top 15
ListenpunktWerde Mathe-Millionär!
ListenpunktAnmeldung MPCT Sept.
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 263 Gäste und 8 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matroid
Informatik » Algorithmen / Datenstrukturen » Komplexität von verschachtelten Schleifen
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule Komplexität von verschachtelten Schleifen
Tommi123
Neu Letzter Besuch: im letzten Monat
Dabei seit: 22.03.2019
Mitteilungen: 2
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2019-03-22


Ich komme bei dieser Aufgabe einfach nicht weiter:

Welche Komplexität haben folgende verschachtelte Schleifen...?

1)
for(int i = 1; i < n; i*=2){
     for(int j = i; j < n; j*=2){
          // do something
     }
}


Meine Antwort wäre:
\(log(n) + log(n) - 1 + log(n) - 2 ... =  \frac{log(n) * (log(n) + 1)}{2}\)
Ist das korrekt?

2)
C
for(int i = 1; i < n; i*=2){
     for(int j = i; j < n; j++){
          // do something
     }
}

Meine Antwort wäre:
\(N-2^0 + N-2^1 + N-2^2 + N-2^3 + ... + N-2^{log(n)} = n*log(n) - \sum \limits_{1}^{log(n)} 2^{i}\)
Stimmt das, und wenn ja, kann man das vereinfachen?

3)
C
for(int i = 1; i < n; i++){
     for(int j = i; j < n; j*=2){
          // do something
     }
}


Mein Antwort wäre:
\(log(n) + (log(n) - 1) * 2 + (log(n) - 2) * 4 + (log(n) - 3) * 8 ... + 1 * n/2 = \sum \limits_{1}^{log(n)} (log(n) - i) * 2^{i}\)
Stimmt das, und wenn ja, kann man das vereinfachen?

Wäre wirklich froh, wenn mir jemand weiterhelfen könnte :)



  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 4853
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2019-03-22


Hallo Tommi123,

willkommen auf dem Matheplaneten!

2019-03-22 20:36 - Tommi123 im Themenstart schreibt:
for(int i = 1; i < n; i*2){
     for(int j = i; j < n; j*2){
          // do something
     }
}

Meinst du das?
C
for(int i = 1; i < n; i*=2){
     for(int j = i; j < n; j*=2){
          // do something
     }
}



  Profil  Quote  Link auf diesen Beitrag Link
Tommi123
Neu Letzter Besuch: im letzten Monat
Dabei seit: 22.03.2019
Mitteilungen: 2
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2019-03-22


Hallo StrgAltEntf,

Danke für den Hinweis, habs geändert.




  Profil  Quote  Link auf diesen Beitrag Link
Folgende Antworten hat der Fragesteller vermutlich noch nicht gesehen.
Er/sie war noch nicht wieder auf dem Matheplaneten
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 2506
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2019-03-22


---


-----------------
⊗ ⊗ ⊗



  Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2009
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2019-03-22


Die Lösung bei der 1) müsste hinkommen, wobei ich bei so einer Frage wohl die Konstanten weglassen würde.

Die anderen zwei Lösungen sind entweder falsch oder es fehlen diverse Vereinfachungen.


1) $O(\log^2(n))$
2) $O(n \log(n))$
3) $O(n \log(n))$



Edit: Bei der 2) hatte ich mich verlesen.
Da kommt deine Lösung hin.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



  Profil  Quote  Link auf diesen Beitrag Link
Nichtaristoteles
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 20.01.2018
Mitteilungen: 198
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2019-03-22


Ich habe die Beiträge in diesem Thread nicht so genau gelesen, aber vielleicht ist stackoverflow.com/a/4852666/7280899 relevant oder hilfreich.



  Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 4853
Aus: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, eingetragen 2019-03-23 12:42


Suchst du exakte Formeln, oder lediglich qualititative?

Falls du exakte Formeln suchst: Beachte, dass log n im Allgemeinen keine ganze Zahl ist. (Gemeint ist hier der Logarithmus zur Basis 2.) Bei 1 ist das Ergebnis m. E. \((\lceil\log n\rceil-1)\cdot\lceil\log n\rceil/2\), wobei \(\lceil x\rceil\) die Aufrundungsfunktion ist. Du kannst das natürlich ganz einfach anhand von einigen Beispielen überprüfen, indem du den C-Code wie folgt compilierst:
C
int count = 0, n;
// einlesen von n
for(int i = 1; i < n; i*=2){
     for(int j = i; j < n; j*=2){
          count++;
     }
}
printf("n = %d  count = %d\n", n, count);

Bei 2 kannst du den Term mit den Formeln für die geometrische Reihe vereinfachen.



  Profil  Quote  Link auf diesen Beitrag Link
Tommi123 wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2019 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]