Hallo!
Ich suche eine Möglichkeit in Python ein Muster in einer Zahlenfolge zu erkennen. Das sollte dann ungefähr so aussehen:
>>> pattern([1,2,3,4])
n+1
>>> pattern([1,3,7,15,31,63,127])
2**n - 1
Gibt es sowas?
Muster in einer Zahlenfolge erkennen
ich behaupte mal nein. Man kann maschinenelle Lernverfahren einsetzen, um Sequence-Prediction zu machen - aber die liefern dir bestenfalls eine passende naechste Zahl, doch keine solche kompakte Darstellung. Ganz allgemein gesprochen kann die Erzeugungsvorschrift ja beliebig kompliziert sein. Also muesste eine solche Funktion einen beliebigen Algorithmus erraten, aus einer kleinen Folge von Zahlen. So etwas gibt's nicht.
Du kennst oesis.org ?
http://oeis.org/?language=german
Du könntest selbst ein Tool schreiben, das dort Zahlenfolgen abfragt und so Rückmeldungen gibt. Problem könnte sein, dass die Zahlenfolgen nicht unendlich lang sind (vermute ich) und d. h. du hast nur Treffer, wenn den Anfang deiner Zahlenfolge kennst.
http://oeis.org/?language=german
Du könntest selbst ein Tool schreiben, das dort Zahlenfolgen abfragt und so Rückmeldungen gibt. Problem könnte sein, dass die Zahlenfolgen nicht unendlich lang sind (vermute ich) und d. h. du hast nur Treffer, wenn den Anfang deiner Zahlenfolge kennst.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
vor ein paar Ausgaben hatte Mike Schilli im Linux-Magazin so eine Aufgabe mit Python und maschinellem Lernen gelöst. Das Ergebnis war aber, selbst für einfache Folgen, eher "ernüchternd" (=nicht genau). Und wie __deets__ schon sagt: der Computer gibt nur die nächsten Zahlen, keine Funktion.
Theoretisch könntest du natürlich probieren, im 2. Schritt die Zahlenfolge mit einer Gleichung zu fitten - da du aber vorher nicht weißt, ob die Gleichung linear, exponentiell, ... ist, ist das dann nur Trial&Error und bringt ziemlich sicher nicht das gewünschte (exakte) Ergebnis.
Gruß, noisefloor
vor ein paar Ausgaben hatte Mike Schilli im Linux-Magazin so eine Aufgabe mit Python und maschinellem Lernen gelöst. Das Ergebnis war aber, selbst für einfache Folgen, eher "ernüchternd" (=nicht genau). Und wie __deets__ schon sagt: der Computer gibt nur die nächsten Zahlen, keine Funktion.
Theoretisch könntest du natürlich probieren, im 2. Schritt die Zahlenfolge mit einer Gleichung zu fitten - da du aber vorher nicht weißt, ob die Gleichung linear, exponentiell, ... ist, ist das dann nur Trial&Error und bringt ziemlich sicher nicht das gewünschte (exakte) Ergebnis.
Gruß, noisefloor