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.


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

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

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


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.


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


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.