2

David Silver beschreibt eine Eigenschaft von Markov-Ketten wie:Sind Functional Programming & Markov Chains irgendwie verwandt?

Die Zukunft ist unabhängig von der die gegenwärtigen

https://www.youtube.com/watch?v=lfHX2hHRMVQ (4 Minuten in Video)

Dieser einen Akkord gegeben Vergangenheit schlug mit ich, weil ich gerade über funktionelle Programmierung (FP) lerne.

In FP können Sie auch die Vergangenheit ignorieren, da Ihre Funktionen nur den aktuellen Status benötigen, um eine Aktion auszuführen und einen neuen Status auszugeben. Dies ist bei objektorientierten Objekten nicht unbedingt der Fall, da Ihre Ausgabe von mehreren Zuständen an verschiedenen Orten abhängen kann.

Gibt es eine tiefere Verbindung zwischen FP- und Markov-Ketten, die mir nicht bekannt ist?

Ist es richtig zu sagen, dass zum Beispiel in FP geschriebene Funktionen deterministische Markov-Ketten sind?

+1

Sie denken vielleicht einfach über Zustandsautomaten (AKA-Automaten) nach. –

+2

"verschiedene Orte"! = "Die Vergangenheit". Auch in OOP hängt der zukünftige Zustand nur vom aktuellen Zustand ab, nicht von vorherigen Aktionen. Es ist eine fundamentale Eigenschaft der Zeit, die Markov Chains für die Modellierung geeignet macht. Es hat nichts mit FP zu tun, außer dass beide eng mit Mathe verwandt sind. – Bergi

+0

Seit Markov 1922 gestorben ist, würde ich sagen, dass seine Gedanken über Markov-Ketten keine funktionale Programmierung beinhalteten. – duffymo

Antwort

4

Es gibt tatsächlich eine Verbindung zwischen einer Markov-Kette und der funktionalen Programmierung. Eine Markov-Kette ist ein Typ einer nicht-deterministischen Finite-State Machine (FSM), wohingegen eine Verkettung von reinen Funktionen eine deterministische FSM erzeugen würde. Der Nachteil hier ist, dass in der realen Welt (z. B. Web-Anwendungen) oft auch Funktionen benötigt werden, die nicht rein sind (z. B. eine externe Datenbank modifizieren oder abfragen).

Ich fand es sehr nützlich, Programmstatus als eine Finite-State Machine (FSM) zu modellieren, sowohl als Metapher als auch als eine konkrete Möglichkeit, Zustände und Übergänge zu modellieren. Zum Beispiel stellt ein FSM bei der Implementierung von (Web-) Benutzerschnittstellen schön which actions are allowed at which state dar.

+0

Hervorragend - Ich mag die Idee, rein funktionale Programme als deterministische FSM anzusehen. Und ich finde es sehr cool, dass das bloße Hinzufügen einer Stochastizität zu einer FSM eine Markov-Kette ergibt, die zunächst völlig unabhängig von der funktionalen Programmierung ist. – COOLBEANS