Ich stoße bei stackexchange immer wieder auf Verweise auf feste Punkte in Fragen und Antworten, und ich schaue im Web nach, was es bedeutet, Verweise auf Websites wie Wikipedia zu finden. Keine der Referenzen beantwortet jedoch wirklich meine Frage, was ein Fixpunkt ist und was er in der Welt der Informatik bedeutet.
terminology
Guy Coder
quelle
quelle
Antworten:
In der Informatik ist die wohl bekannteste Verwendung von Fixpunkten in der Gittertheorie ¹. Ein Gitter ist eine teilweise geordnete Menge mit der zusätzlichen Eigenschaft, dass bei zwei beliebigen Elementen die Menge sowohl ein Supremum als auch ein Infimum (in ) hat.x , y ∈ S { x , y } S(S,≤) x,y∈S {x,y} S
Nun betrachten Sie oft monotone Funktionen auf diesem Gitter, die "konvergieren", dh für einige x ∈ S haben Sie f ( x ) = x . Wichtige Ergebnisse in diesem Bereich sind Kleenes Fixpunktsatz und der Knaster-Tarski-Satz .f x∈S f(x)=x
Ein prominentes Beispiel ist das Gitter für A some set und f, das durch eine induktive Definition induziert wird. Zum Beispiel sei A = { a , b } ∗ und wir definieren eine Sprache L ∈ 2 { a , b } ∗ durch(2A,⊆) A f A={a,b}∗ L∈2{a,b}∗
Diese induktive Definition entspricht der monotonen Funktion
Durch Knaster-Tarski Satz, wissen wir einen kleinsten Fixpunkt hat , welches ein Supremum aller kleineren „Zwischenergebnisse“ (die entsprechen endlich oft die Konstrukteure der induktiven Definition Anwendung), und die kleinsten ist Fixpoint in der Tat L .f L
Übrigens hat der größte Fixpunkt auch Verwendungen; siehe hier für ein Beispiel.
In der Rekursionstheorie gibt es einen weiteren Fixpunktsatz, der ebenfalls auf Kleene zurückzuführen ist. Es heißt ²,
Tatsächlich gibt es sogar unendlich viele solcher ; Wenn es nur endlich viele gäbe, könnten wir r (durch Tabellensuche) patchen, um keine Fixpunkte zu haben, was dem Theorem widerspricht.i r
quelle
Lassen Sie mich ein wenig auf die Antwort von meisterluk eingehen: Stellen Sie sich vor, wir versuchen, die Fakultätsfunktion zu definieren: Erinnern Sie sich an die Definition der Fakultätsfunktion:
In einigen PL-Frameworks (nämlich dem Kalkülλ ) ist es nicht sofort offensichtlich, wie eine solche Funktion definiert wird. Es kann jedoch leicht sein, die folgende Funktion höherer Ordnung zu definieren, die sogenannte, weil sie eine andere Funktion und eine natürliche Zahl als Eingabe nimmt
In dieser Funktionsdefinition wird keine Rekursion verwendet. Aber wenn es eine Möglichkeit , das zu finden , Fix-Punkt vonϕ
Fact
, das heißt, eine Funktion , so dass Fact φ n = φ n für jeden n , dann ist es einfach zu überprüfen, ob φ ist in der Tat eine Implementierung der Fakultäts - Funktion.Nun kann man in Frameworks wie dem Kalkül zeigen, dass alle Fixpunkte dieser Art tatsächlich existieren, was deutlich macht, dass Sie es als allgemeine Programmiersprache verwenden können.λ
Es gibt viele andere Verwendungszwecke für den Begriff der Fixpunkte in der Informatik, aber die meisten beschränken sich auf den oben gezeigten, dh beweisen, dass bestimmte Fixpunkte existieren, um zu zeigen, dass bestimmte Funktionen oder Konstrukte in gut definiert sind Ihr Framework (hier haben wir gezeigt, dass die Fakultätsfunktion existiert).
quelle
Abhängig von der mathematischen Struktur, mit der Sie sich beschäftigen, gibt es sehr viele verschiedene Gründe, sich für Fixpunkte zu interessieren. Wenn Sie beispielsweise ein dynamisches System betrachten, das den Zustand der Welt betrachtet und ihn ändert (wie ein Thermostat), entspricht ein fester Punkt einer stabilen Konfiguration. Wenn Sie an Spiele im mathematischen Sinne der Spieltheorie denken, entsprechen Fixpunkte Gleichgewichten. Wenn Sie an das Verhalten einer Optimierungsroutine denken, die ihre Lösung iterativ verbessert, entspricht ein Fixpunkt einer optimalen Lösung. Der mathematische Begriff eines Fixpunkts hat also viele Anwendungen in vielen verschiedenen Kontexten.
Eine sehr verbreitete und grundlegende Anwendung von Fixpunkten in der Informatik ist die mathematische Modellierung von Schleifen und rekursiven Programmen. Wenn wir versuchen, ein Programm als mathematische Funktion zu modellieren, sind sowohl Schleifen als auch Rekursion nicht offensichtlich zu modellieren. Dies liegt daran, dass der Körper einer Schleife ein Programm ist und als mathematische Funktion dargestellt werden kann. Wie leiten wir die Funktion ab, die das Verhalten der Schleife darstellt? Dies entspricht dem wiederholten Anlegen des Schleifenkörpers in Verbindung mit dem Schleifenschutz, bis keine Änderung mehr möglich ist. Ebenso brauchen wir, wenn wir rekursive Programme mathematisch modellieren, eine mathematische Vorstellung davon, was es bedeutet, dass eine Funktion sich selbst anwendet. Diese Antwort wird durch feste Punkte geliefert.
quelle
Eine Funktion in der Mathematik ist eine Abbildung zwischen Eingabe- und Ausgabewerten. Fixpunkte sind Eingabewerte (für eine Funktion), die Ausgabewerten zugeordnet werden, die der Eingabe entsprechen.
In Bezug auf die Informatik sprechen wir viel über Teilfunktionen , aber dies ändert nichts an der Definition von Fixpunkten für uns.
Sie könnten auch verwirrt sein über ein ganz anderes Thema: Festkomma-Arithmetik ist ein Konzept, wie man reelle Zahlen im Speicher darstellt. Der Name "Fixpunkte" bezieht sich jedoch im Allgemeinen nicht auf dieses Thema (da es nur 1 Punkt gibt).
quelle
Die Spieltheorie ist ein wichtiger Teilbereich von CS und ein wichtiges Konzept ist das Nash-Gleichgewicht, das ein Fixpunktsatz ist. Es gibt ein Mittel, um optimale Spielstrategien zu identifizieren, vorausgesetzt, die anderen Spieler kennen die jeweils anderen Strategien. es kann über den Kakutani-Fixpunktsatz oder den Brower-Fixpunktsatz bewiesen werden . Für die Entwicklung dieser Theorie erhielt Nash unter anderem den Nobelpreis für Wirtschaftswissenschaften.
quelle