Punto fisso, cosa significa nel mondo dell'informatica


19

Continuo a trovare riferimenti a punti fissi in domande e risposte su stackexchange e cerco il significato sul web trovando ovviamente riferimenti in siti come Wikipedia. Tuttavia nessuno dei riferimenti risponde alla mia domanda su cosa sia un punto fisso e cosa significhi nel mondo dell'informatica.


1
Anche se la nozione di punto fisso di solito deriva da una coppia tale che f ( x ) = x , ci sono molti diversi framework in cui il termine viene usato con significati e conseguenze diversi. f,Xf(X)=X
Raffaello

Questo mi ha aiutato. Tipi ricorsivi gratis!
Guy Coder,

Risposte:


17

Nell'informatica, l'uso probabilmente più importante dei punti fissi è nella teoria reticolare ¹. Un reticolo è un insieme parzialmente ordinato con la proprietà aggiuntiva che ha dato due elementi qualsiasi x , y S , l'insieme { x , y } ha sia un supremum sia un infimum (in S ).(S,)X,yS{X,y}S

Ora spesso si considerano le funzioni monotone su questo reticolo che "convergono", ovvero per alcune x S si ha f ( x ) = x . Risultati importanti in quest'area sono il teorema del punto fisso di Kleene e il teorema di Knaster-Tarski .fxSf(x)=x

Un esempio importante è il reticolo per un qualche insieme, e f indotto da una definizione induttiva. Ad esempio, lascia A = { a , b } e definiamo una lingua L 2 { a , b } da(2A,)AfA={a,b}L2{a,b}

wLε,un'Lun'wLBun'wLBwLun'Bw,BBwL

Questa definizione induttiva corrisponde alla funzione monotona

f(UN)={ε,un'}UN{Bun'w|un'wL}{un'Bw,BBw|BwL}

Da Knaster-Tarski teorema, sappiamo ha un punto fisso più piccolo che è un estremo superiore di tutte le piccole "risultati intermedi" (che corrispondono a finito spesso applicando i costruttori della definizione induttiva), e che più piccolo è effettivamente fixpoint L .fL

A proposito, anche il più grande fixpoint ha usi; vedi qui per un esempio.


Nella teoria della ricorsione, c'è un altro teorema a virgola fissa, dovuto anche a Kleene. Si dice ²,

Sia una numerazione di Gödel ³ e r : NN una funzione calcolabile totale (intuizione: un compilatore). Quindi c'è i N tale che φ r ( i ) = φ i .φr:NNioNφr(i)=φi

In realtà, ci sono anche infiniti quali ; se là fosse solo finitamente molti, potremmo r patch (per la ricerca della tabella) per non avere punti fissi, contraddicendo il teorema.ir


  1. Tutti lo usano tutti i giorni, anche se non te ne rendi conto.
  2. Non mi piace quell'articolo di Wikipedia; probabilmente starai meglio controllando un libro di genere.
  3. Un tipo speciale di numerazione delle funzioni. Per intuizione, pensalo come un linguaggio di programmazione (completo di Turing).

13

Permettetemi di elaborare un po 'la risposta di meisterluk: Immagina che stiamo cercando di definire la funzione fattoriale: ricorda la definizione della funzione fattoriale:

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

Ora in alcuni framework PL (vale a dire il calcolo λ ), non è immediatamente ovvio come definire tale funzione. Tuttavia, può essere facile definire la seguente funzione di ordine superiore , la cosiddetta perché richiede come input un'altra funzione e un numero naturale

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

Non è possibile ricorrere alla ricorsione in questa definizione di funzione. Tuttavia, se ci fosse un modo di trovare il punto fisso di Fact, che è, una funzione tale che Fact φ n = φ n per ogni n , allora è facile verificare che φ è davvero un implementazione della funzione fattoriale.ϕ

Fact ϕ n = ϕ n
nϕ

Ora in framework come il calcolo , si può dimostrare che tutti i punti fissi di questa natura esistono, in effetti, il che rende chiaro che è possibile utilizzarlo come linguaggio di programmazione generale.λ

Ci sono molti altri usi della nozione di punti fissi nell'informatica, ma la maggior parte si riduce a quella che ho mostrato sopra, vale a dire dimostrare che esistono alcuni punti fissi per essere in grado di dimostrare che determinate funzioni o costrutti sono ben definiti in il tuo framework (qui abbiamo dimostrato che esiste la funzione fattoriale).


9

f:AAxf(x)xx201x3

Ora, a seconda della struttura matematica con cui hai a che fare, ci sono molte ragioni diverse per interessarti ai punti fissi. Ad esempio, se si considera un sistema dinamico che osserva lo stato del mondo e lo cambia (come un termostato), un punto fisso corrisponde a una configurazione stabile. Se si pensa ai giochi nel senso matematico della teoria dei giochi, i punti fissi corrispondono all'equillibria, se si pensa al comportamento di una routine di ottimizzazione che migliora iterativamente la sua soluzione, un punto fisso corrisponde a una soluzione ottimale. Quindi la nozione matematica di un punto fisso ha molte applicazioni in molti contesti diversi.

Un'applicazione molto comune e fondamentale dei punti fissi nell'informatica è quella di modellare matematicamente loop e programmi ricorsivi. Se proviamo a modellare un programma come una funzione matematica, sia i loop che la ricorsione non sono ovvi da modellare. Questo perché il corpo di un ciclo è un programma e può essere rappresentato come una funzione matematica. Come ricaviamo la funzione che rappresenta il comportamento del loop? Corrisponde all'applicazione ripetuta del corpo del circuito, in combinazione con la protezione del circuito, fino a quando non sono possibili ulteriori modifiche. Allo stesso modo, se modelliamo matematicamente programmi ricorsivi, abbiamo bisogno di una nozione matematica di cosa significhi per una funzione applicarsi. Questa risposta è fornita da punti fissi.


7

Una funzione in matematica è una mappa tra i valori di input e output. I punti fissi sono valori di input (per una funzione) che associano a valori di output che soddisfano l'uguaglianza con l'input.

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

Per quanto riguarda l'informatica, stiamo parlando molto di funzioni parziali , ma ciò non cambia la definizione di punti fissi per noi.

Potresti anche essere confuso su un argomento totalmente diverso: l' aritmetica a virgola fissa è un concetto su come rappresentare i numeri reali nella memoria. Ma il nome "punti fissi" non fa riferimento a questo argomento in generale (perché c'è solo 1 punto).


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.