Punkt stały, co to znaczy w świecie informatyki

19

Ciągle natrafiam na odniesienia do stałego punktu w pytaniach i odpowiedziach na stackexchange i szukam znaczenia w Internecie, oczywiście znajdując odnośniki na stronach takich jak Wikipedia. Jednak żadne z odniesień tak naprawdę nie odpowiada na moje pytanie, co jest stałym punktem i co to znaczy w świecie informatyki.

Guy Coder
źródło
1
Nawet jeśli pojęcie punktu stałego zwykle wywodzi się z pewnej pary takiej, że , istnieje wiele różnych ram, w których termin ten ma różne znaczenia i konsekwencje. f ( x ) = xfa,xfa(x)=x
Raphael
To mi pomogło. Rodzaje rekurencyjne za darmo!
Guy Coder,

Odpowiedzi:

17

W informatyce najbardziej widocznym zastosowaniem punktów stałych jest teoria sieci ¹. Sieć to częściowo uporządkowany zbiór z dodatkową właściwością, która dała dowolne dwa elementy x , y S , zbiór { x , y } ma zarówno supremum, jak i infimum (w S ).(S.,)x,yS.{x,y}S.

Teraz często rozważasz funkcje monotoniczne na tej sieci, które „zbiegają się”, to znaczy dla niektórych x S masz f ( x ) = x . Ważnymi wynikami w tej dziedzinie są twierdzenie Kleene'a o stałym punkcie oraz twierdzenie Knastera-Tarskiego .faxS.fa(x)=x

Znakomity przykład jest krata dla A, część zestawu i f indukowane przez określenie indukcyjnego. Na przykład, pozwólmy A = { a , b } ∗, a my zdefiniujemy język L 2 { a , b } przez(2)ZA,)ZAfaA={a,b}L2{a,b}

wLε,aLawLbawLbwLabw,bbwL

Ta definicja indukcyjna odpowiada funkcji monotonicznej

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

Przez Knaster-Tarskiego twierdzenia wiemy, ma najmniejszą fixpoint który jest Supremum wszystkich mniejszych „wyniki pośrednie” (co odpowiada skończenie często stosowania konstruktory definicji indukcyjne), a najmniejszą fixpoint jest rzeczywiście l .fL

Nawiasem mówiąc, największy punkt stały ma również zastosowania; patrz tutaj na przykład.


W teorii rekurencji istnieje inne twierdzenie o punkcie stałym, również z powodu Kleene'a. To mówi ²,

Niech się numerację Godeł ³ i R : NN TOTAL, funkcja obliczeniowy (intuicji kompilator). Potem jest i N takie, że φ r ( i ) = φ i .φr:NNiNφr(i)=φi

W rzeczywistości istnieje nawet nieskończenie wiele takich ; gdyby tam było tylko skończonych wielu, moglibyśmy załatać r (przez przeglądanie tabeli), aby nie mieć stałych punktów, co jest sprzeczne z twierdzeniem.ir


  1. Każdy używa go codziennie, nawet jeśli nie zdajesz sobie z tego sprawy.
  2. Nie podoba mi się ten artykuł z Wikipedii; prawdopodobnie lepiej jest sprawdzić książkę gatunku.
  3. Specjalny rodzaj numeracji funkcji. Dla intuicji pomyśl o tym jako o języku programowania (kompletnym Turinga).
Raphael
źródło
13

Pozwól mi rozwinąć nieco odpowiedź Meisterluka: Wyobraź sobie, że próbujemy zdefiniować funkcję silniową: pamiętaj definicję funkcji silniowej:

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

Teraz w niektórych frameworkach PL (a mianowicie calculusλ ) nie jest od razu oczywiste, jak zdefiniować taką funkcję. Jednak może być łatwo zdefiniować następującą funkcję wyższego rzędu , tak zwaną, ponieważ przyjmuje ona jako wejście inną funkcję i liczbę naturalną

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

W tej definicji funkcji nie ma zastosowania rekurencji. Jednakże, jeśli istnieje jakiś sposób znalezienia FIX-punkt z Fact, czyli funkcja takie, że Fakt φ n = φ n dla każdego n , to łatwo sprawdzić, że φ jest rzeczywiście realizacja funkcji silni.ϕ

Fakt ϕ n = ϕ n
nϕ

Teraz w ramach, takich jak calculus, można pokazać, że faktycznie istnieją wszystkie stałe punkty tego rodzaju, co wyjaśnia, że ​​można go używać jako ogólnego języka programowania.λ

Pojęcie punktów stałych w informatyce ma wiele innych zastosowań, ale większość sprowadza się do tego, który pokazałem powyżej, tj. Udowadnia, że ​​istnieją pewne punkty stałe, aby móc wykazać, że pewne funkcje lub konstrukcje są dobrze zdefiniowane w twój framework (tutaj pokazaliśmy, że funkcja silnia istnieje).

cody
źródło
9

fa:ZAZAxfa(x)xx2)01x3)

Teraz, w zależności od struktury matematycznej, z którą mamy do czynienia, istnieje bardzo wiele różnych powodów, aby interesować się stałymi punktami. Na przykład, jeśli weźmiesz pod uwagę dynamiczny system, który patrzy na stan świata i zmienia go (jak termostat), wówczas punkt stały odpowiada stabilnej konfiguracji. Jeśli myślisz o grach w matematycznym sensie teorii gier, punkty stałe odpowiadają równowagom, jeśli myślisz o zachowaniu procedury optymalizacji, która iteracyjnie poprawia swoje rozwiązanie, punkt stały odpowiada rozwiązaniu optymalnemu. Tak więc matematyczne pojęcie punktu stałego ma wiele zastosowań w wielu różnych kontekstach.

Bardzo powszechnym i podstawowym zastosowaniem stałych punktów w informatyce jest matematyczne modelowanie pętli i programów rekurencyjnych. Jeśli spróbujemy modelować program jako funkcję matematyczną, zarówno pętle, jak i rekurencja nie są oczywiste do modelowania. Wynika to z faktu, że ciało pętli jest programem i może być reprezentowane jako funkcja matematyczna. Jak uzyskać funkcję reprezentującą zachowanie pętli? Odpowiada to wielokrotnemu nakładaniu korpusu pętli, w połączeniu z osłoną pętli, aż dalsza zmiana nie jest możliwa. Podobnie, jeśli modelujemy programy rekurencyjne matematycznie, potrzebujemy matematycznego pojęcia, co to znaczy, że funkcja może się zastosować. Odpowiedzi udzielają stałe punkty.

Vijay D.
źródło
7

Funkcja w matematyce jest mapą między wartościami wejściowymi i wyjściowymi. Punkty stałe to wartości wejściowe (dla funkcji), które odwzorowują na wartości wyjściowe odpowiadające równości z danymi wejściowymi.

fa(x)=xfa(x)=x2){0,1}

Jeśli chodzi o informatykę, dużo mówimy o funkcjach cząstkowych , ale nie zmienia to dla nas definicji punktów stałych.

Być może mylisz się co do zupełnie innego tematu: arytmetyka stałoprzecinkowa to koncepcja reprezentowania liczb rzeczywistych w pamięci. Ale nazwa „punkty stałe” nie odnosi się ogólnie do tego tematu (ponieważ jest tylko 1 punkt).

meisterluk
źródło