Fixpunkt, was bedeutet das in der Welt der Informatik?


19

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.


1
Auch wenn der Begriff des Fixpunkts normalerweise von einem Paar so dass , gibt es viele verschiedene Rahmenbedingungen, in denen der Begriff mit unterschiedlichen Bedeutungen und Konsequenzen verwendet wird. f,xf(x)=x
Raphael

Das hat mir geholfen. Rekursive Typen kostenlos!
Guy Coder

Antworten:


17

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,yS{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 .fxSf(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,)AfA={a,b}L2{a,b}

wLε,aLawLbawLbwLabw,bbwL

Diese induktive Definition entspricht der monotonen Funktion

f(A)={ε,a}A{bawawL}{abw,bbwbwL}

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 .fL

Ü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 ²,

Sei eine Gödel-Nummerierung ³ und r : NN eine gesamt berechenbare Funktion (Intuition: ein Compiler). Dann ist i N, so dass φ r ( i ) = φ i ist .φr:NNiNφr(i)=φi

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.ir


  1. Jeder benutzt es jeden Tag, auch wenn man es nicht merkt.
  2. Ich mag diesen Wikipedia-Artikel nicht. Sie sind wahrscheinlich besser dran, ein Genre-Buch zu lesen.
  3. Eine besondere Art der Funktionsnummerierung. Stellen Sie sich dies für die Intuition als eine (Turing-vollständige) Programmiersprache vor.

13

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:

fact 0     = 1
fact (n+1) = n*(fact n)

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

Fact f 0     = 1
Fact f (n+1) = n * (f n)

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.ϕ

Fact ϕ n = ϕ n
nϕ

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).


9

f:AAxf(x)xx201x3

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.


7

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.

f(x)=xf(x)=x2{0,1}

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).


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.