Muster in einer Zahlenfolge erkennen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Benutzername314
User
Beiträge: 1
Registriert: Samstag 9. Dezember 2017, 19:08

Samstag 9. Dezember 2017, 19:10

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?
__deets__
User
Beiträge: 3110
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 9. Dezember 2017, 19:43

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.
Benutzeravatar
pixewakb
User
Beiträge: 1028
Registriert: Sonntag 24. April 2011, 19:43

Samstag 9. Dezember 2017, 21:44

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.
Benutzeravatar
noisefloor
User
Beiträge: 2423
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Sonntag 10. Dezember 2017, 09:42

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
Antworten