[DSAL] Was ist O(|E|)???

[Progra] Programmierung
[DSAL] Datenstrukturen und Algorithmen
[SWT] Softwaretechnik
[DB] Datenbanken und Informationssysteme

Was ist O(|E|)???

Beitragvon paganlord » 24.07.08 15:54

Hoi,

ich hab mal die Klausur von 02 durchgerechnet und Aufgabe 7.13 lautet:
"In zusammenhängenden Graphen gilt |V|=O(|E|) - [ja|nein]"

-> Was zum Geier ist die Komplexität/Komplexitätsklasse einer Kante? Operationen, Algorithmen haben eine Komplexität, aber eine Kante eines Graphen?
09F911029D74E35BD84156C5635688C0
paganlord
 
Beiträge: 162
Registriert: 16.09.06 12:42
Wohnort: TvK

Beitragvon HE » 24.07.08 15:59

|E| ist die Kardinalität der Kantenmenge, O(|E|) heißt also "Aufwand beschränkt durch ein konstantes Vielfaches der Anzahl der Kanten".
Benutzeravatar
HE
 
Beiträge: 453
Registriert: 09.03.07 12:20
Wohnort: Aachen
Studiert seit: WS 06/07
Anwendungsfach: Mathe

Beitragvon paganlord » 24.07.08 16:07

HE hat geschrieben:|E| ist die Kardinalität der Kantenmenge, O(|E|) heißt also "Aufwand beschränkt durch ein konstantes Vielfaches der Anzahl der Kanten".

Die Bedeutungen von |E| und O sind mir klar, aber O(|E|) habe ich trotzdem noch nicht verstanden.
Soll das jetzt heißen, dass der Aufwand etwas auf den Kanten eines zusammenhängenden Graphen zu machen so hoch ist wie die Anzahl der Knoten? Dann wärs mir vielleicht klar, weil man über die Knoten laufen muss wenn man Kanten passiert (z.B. Eulerkreis) und es keine losen Knoten gibt, die daran etwas ändern.
Aber toll finde ich diese Fragestellung überhaupt nicht, man könnte ja so fragen dass es jemand versteht... :roll:
09F911029D74E35BD84156C5635688C0
paganlord
 
Beiträge: 162
Registriert: 16.09.06 12:42
Wohnort: TvK

Beitragvon pulsar » 24.07.08 16:36

Dass HE den Begriff Aufwand eingebracht hat, war evtl. etwas unglücklich. Hier im Beispiel ist das so zu verstehen: Anzahl der Knoten ist beschränkt durch ein konstantes Vielfaches der Anzahl der Kanten.

Das lässt sich sicher auch aus der genauen Definition von O() ableiten, aber die hab ich nicht mehr im Kopf. :)
pulsar
 
Beiträge: 831
Registriert: 11.09.05 12:49
Wohnort: Aachen
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: Psycho

Beitragvon paganlord » 24.07.08 16:43

so ausgedrückt ja (endlich peile ich was die wollen), denn O(f) = {g:N->R+ : ex n0>0 ex c>0 fa n>n0: g(n) < c f(n)}.

Aber das ist trotzdem mal ganz, ganz, ganz fies, wie ich finde :-)
09F911029D74E35BD84156C5635688C0
paganlord
 
Beiträge: 162
Registriert: 16.09.06 12:42
Wohnort: TvK

Re: Was ist O(|E|)???

Beitragvon fw » 24.07.08 17:13

paganlord hat geschrieben:|V|=O(|E|)

Das ist eigentlich etwas hässlich ausgedrückt, aber leider unter Informatikern so üblich. Eigentlich meint man |V| \in O(|E|), das Gleichheitszeichen ist also nur "symbolisch" gemeint! Falls dich das irritiert hat...
Benutzeravatar
fw
 
Beiträge: 1356
Registriert: 17.05.06 19:37
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: Mathe

Beitragvon HE » 24.07.08 17:14

Insgesamt ist das aber Standard-Notation, die man *genau* so noch einige dutzend male sehen wird im Verlaufe eine Info-Studiums, also würde ich das nicht als "ganz, ganz, ganz fies" bezeichnen. Wenn man die Bedeutung der verschiedenen Symbole wirklich verstanden hat, ist das ziemlich trivial.
Benutzeravatar
HE
 
Beiträge: 453
Registriert: 09.03.07 12:20
Wohnort: Aachen
Studiert seit: WS 06/07
Anwendungsfach: Mathe

Re: Was ist O(|E|)???

Beitragvon paganlord » 24.07.08 17:28

Ich hab die Aufgabe trotzdem nicht kapiert, obwohl mir alles nötige von O-Notation (incl. =\leftrightarrow\in) und Graphentheorie bekannt ist, was eine gute Note in der BuK-Klausur und ein Schein+Proseminar in Graphentheorie bestätigen :-)

Naja, was solls. Jetzt weiß ich was die eigentlich meinen und mach mich auf andere Knüller dieser Art in der Klausur gefasst :-)
09F911029D74E35BD84156C5635688C0
paganlord
 
Beiträge: 162
Registriert: 16.09.06 12:42
Wohnort: TvK

Re: Was ist O(|E|)???

Beitragvon O.D. » 25.07.08 03:07

paganlord hat geschrieben:Knüller

Also eigentlich ist das nun wirklich keine besonders schwierige Angelegenheit. Gilt |V|<=k*|E| für fast alle (also, endlich viele Beispiele ausgenommen) Kardinalitäten von E?
I can hear deaf people!
Benutzeravatar
O.D.
 
Beiträge: 745
Registriert: 05.08.06 19:31
Wohnort: Aachen & Minden
Studiengang: Informatik (M.Sc.)
Anwendungsfach: Physik

Beitragvon Coolcat » 25.07.08 10:28

Nein. Nimm den Graphen ohne Kanten mit n Knoten.

Edit: Oh, oben in der Ausgangsfrage steht was von zusammenhängend...Du brauchst mindestens n-1 Kanten um n Knoten zu verbinden. Daher kann man wohl k=2 setzen, dann gilt es für alle n >= 2.
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon O.D. » 25.07.08 12:35

Das Fragezeichen am Ende des Satzes sollte eigentlich aussagen, dass ich die Antwort nicht verraten wollte. ;)
I can hear deaf people!
Benutzeravatar
O.D.
 
Beiträge: 745
Registriert: 05.08.06 19:31
Wohnort: Aachen & Minden
Studiengang: Informatik (M.Sc.)
Anwendungsfach: Physik

Beitragvon aRo » 29.07.08 20:38

hi!

War grad auch etwas verwirrt. Also die Frage ist, ob die Anzahl der Knoten durch ein Vielfaches der Kanten beschränkt ist, nicht wahr?

Das muss aber nicht für alle Graphen gelten, oder? Denn laut Definition muss es nur ab einem bestimmten n0 gelten. (kann ich hier n als Anzahl Knoten wählen?)

D.h.:
Für zusammenhängende Graphen ist das richtig, für unzusammenhängende falsch, weil es unendlich viele Graphen gibt, die mehr Knoten als Kanten haben, egal welche Konstante man nimmt (einfach |E|=0 wählen).

Hab ich das soweit richtig zusammengefasst?
aRo
 
Beiträge: 311
Registriert: 23.10.07 01:28
Anwendungsfach: Medizin

Beitragvon TheStranger » 29.07.08 21:06

Naja, es gibt eine Ausnahme, nämlich der Graph, welcher nur aus einem Knoten besteht und keine Kanten besitzt. Er ist zusammenhängend, doch die Kantenanzahl ist null.

Ansonsten sollte es stimmen, da du für jeden Knoten, der dem Graphen hinzugefügt wird, mindestens eine Kante brauchst, damit dieser mit dem Restgraphen zusammenhängt. Dieses kann man sich gut vorstellen, wenn man den minimalen Spannbaum vor Augen hat. Dann brauch man nämlich immer genau |V|-1 Kanten für diesen.
Benutzeravatar
TheStranger
 
Beiträge: 114
Registriert: 10.08.07 16:11
Studiengang: Informatik (M.Sc.)
Studiert seit: WS 06/07
Anwendungsfach: E-Technik

Beitragvon aRo » 29.07.08 21:57

okay, das ist eine Ausnahme. Die dürfte doch aber nichts daran ändern, dass die Aussage stimmt oder?
Es muss schließlich nur ab einem bestimmten n stimmen (vgl Definition auf Folie) und ich nehme an, man kann hier n=Knotenzahl setzen?
aRo
 
Beiträge: 311
Registriert: 23.10.07 01:28
Anwendungsfach: Medizin

Re: Was ist O(|E|)???

Beitragvon TheStranger » 29.07.08 22:01

paganlord hat geschrieben:
ich hab mal die Klausur von 02 durchgerechnet und Aufgabe 7.13 lautet:
"In zusammenhängenden Graphen gilt |V|=O(|E|) - [ja|nein]"



Da ich die Folien nicht habe, habe ich mich nur auf diese Frage bezogen. Laut Aussage soll dies für jeden Graphen gelten, d.h. |V| kann beliebig sein.

Und wenn ich ein Bsp finde, wo die Aussage dann nicht gilt, nämlich |V| = 1, dann ist die Aussage falsch. Falls irgendwo steht, das |V| > 1, dann ist sie richtig ;)

EDIT:
Muss mich hier ein wenig korrigieren. In der O-Notation geht man eigentlich immer von großen Werten aus. Siehe f(x) \in O(g(x)) mit \lim\limits_{x \rightarrow \infty} \frac{f(x)}{g(x)} < \infty. Denke deshalb ist der eine Fall mit |V| = 1 doch zu vernachlässigen.
Benutzeravatar
TheStranger
 
Beiträge: 114
Registriert: 10.08.07 16:11
Studiengang: Informatik (M.Sc.)
Studiert seit: WS 06/07
Anwendungsfach: E-Technik

Nächste

Zurück zu Praktische Informatik