Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Berechenbarkeits- und Komplexitätstheorie » Suche in unendlicher Menge » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Suche in unendlicher Menge
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
riemansson
Grünschnabel


Dabei seit: 04.11.2013
Beiträge: 3

Suche in unendlicher Menge Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo zusammen,

mich beschäftig gerade folgende Frage: Wie schnell kann man in einer unendliche Menge suchen? Ich würde sagen O(n), indem ich alle Möglichkeiten durchprobiere.
Mal ein Beispiel: ich will eine geheime Zahl aus den natürlichen Zahlen erraten. Ich bekomme nur die Antwort ob ich drunter bin oder ob ich richtig bin.
Ich würde jetzt mit 1 anfangen dann 2 usw....(ziemlich einfach aber ich finde nix was wirklich besser wär).
Auch wenn ich irgendwie anders testen würde (bspw. in 2er Schritten oder verdoppeln würde), dann gibt es doch immer worstcases, in denen ich ewig Zeit brauche.

Hat vllt. jemand einen Ansatz?
17.11.2014 20:04 riemansson ist offline Beiträge von riemansson suchen Nehmen Sie riemansson in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das Optimum ist O(log(n)).
Du prüfst immer die Mitte des Intervalls auf größer/kleiner, damit halberst du die Menge in jedem Schritt.
Wenn du so einen Eintrag in einer Liste finden willst, muss die Liste sortiert sein.
Stichwort für weitere Recherche: binäre Suche.

__________________
Syntax Highlighting fürs Board (Link)
18.11.2014 07:16 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich glaube die Frage lässt sich nicht wirklich beantworten.
Um die Komplexität einer Berechnung anzugeben, braucht man eine Eingabe und eine Ausgabe.
Was ist in deinem Fall die Eingabe? Eine Liste aller möglichen natürlichen Zahlen? Die Zahl die du suchst?

Ich fürchte deine Problemstellung ist nicht klar definiert und/oder lässt sich mit klassischer Komplexitätstheorie nicht beantworten.

Gruß,
ED
13.01.2015 00:17 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hey @ed, schön dich mal wieder hier zu sehen! Wink

ich tippe mal euler hat recht. Diskussionsgrundlage: Man nehme eine beliebige gesuchte Zahl (die Eingabegröße), welche in einer abzählbar unendlichen menge Enthalten ist (für überabzählbare Mengen ist das Problem nicht Lösbar). Ich verdopple so lange meine Probezahl, bis sie größer ist, als die gesuchte. Nennen wir die Probezahl x. Danach habe ich ein Intervall von x/2 bis x in dem ich nach der gesuchten Zahl suchen muss. Mit binärer Suche habe ich ich dann eine Komplexität von O(log(n)). Über den Daumen ist die Laufzeit, bis ich die gesuchte Zahl gefunden habe auch O(log(n)). Somit habe ich eine Gesamtkomplexität von O(2log(n)) = O(log(n))...

Habe ich etwas übersehen?

Gruß,

Karlito
13.01.2015 01:02 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Wink

Wink

Zitat:

Habe ich etwas übersehen?


Allerdings Augenzwinkern
Die Eingabegröße n entspricht nicht dem Wert der Eingabe, sonderer der Länge der eingabe.
Wenn wir also die Zahl k suchen ist n = log k.
Anstelle von O(n) = log n erhältst du O (log k) = log k oder O (n) = n
Sehen wir die Eingabe als bitstream der mit einem blank terminiert ist, ist die implementation deines Algorithmus als Turingmaschine übrigens trivial:

t(q0, 0) = (q0, 0, R)
t(q0, 1) = (q0, 1, R)
t(q0, B) = (HALT)

Oder mit anderen Worten du gibst deine Eingabe aus. Immerhin ist die Aufgabe nichts anderes als f(k) = k zu berechnen.

Ich bleib dabei: Die Aufgabe irgendetwas in den natürlichen Zahlen zu finden ist nicht wirklich klar definiert. Schließlich ist eine natürliche Zahl nichts was einem so einfach abhanden kommt.

Gruß,
ED
18.01.2015 16:24 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Berechenbarkeits- und Komplexitätstheorie » Suche in unendlicher Menge