Fixed point, apa artinya di dunia ilmu komputer

19

Saya terus menemukan referensi ke titik tetap dalam pertanyaan dan jawaban di stackexchange dan saya mencari artinya di web jelas menemukan referensi di situs-situs seperti Wikipedia. Namun tidak ada referensi yang benar-benar menjawab pertanyaan saya tentang apa itu titik tetap dan apa artinya dalam dunia ilmu komputer.

Guy Coder
sumber
1
Bahkan jika gagasan titik tetap biasanya berasal dari beberapa pasangan sedemikian rupa sehingga f ( x ) = x , ada banyak kerangka kerja yang berbeda di mana istilah tersebut digunakan dengan makna dan konsekuensi yang berbeda. f,xf(x)=x
Raphael
Ini membantu saya. Jenis rekursif gratis!
Guy Coder

Jawaban:

17

Dalam ilmu komputer, penggunaan fixed-point yang paling menonjol dalam teori kisi adalah ¹. Kisi adalah himpunan sebagian yang dipesan dengan properti tambahan yang diberikan dua elemen x , y S , himpunan { x , y } memiliki supremum dan infimum (dalam S ).(S,)x,yS{x,y}S

Sekarang Anda sering mempertimbangkan fungsi monoton pada kisi ini yang "menyatu", yaitu untuk beberapa x S Anda memiliki f ( x ) = x . Hasil penting dalam bidang ini adalah teorema titik tetap Kleene dan teorema Knaster-Tarski .fxSf(x)=x

Contoh yang menonjol adalah kisi untuk A set, dan f yang diinduksi oleh definisi induktif. Misalnya, misalkan A = { a , b } dan kami mendefinisikan bahasa L 2 { a , b } oleh(2A,)AfA={a,b}L2{a,b}

wLε,aLawLbawLbwLabw,bbwL

Definisi induktif ini sesuai dengan fungsi monoton

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

Dengan Knaster-Tarski teorema, kita tahu memiliki fixpoint terkecil yang merupakan supremum dari semua kecil "hasil antara" (yang sesuai dengan finitely sering menerapkan konstruktor dari definisi induktif), dan yang terkecil fixpoint memang L .fL

Omong-omong, fixpoint terbesar juga memiliki kegunaan; lihat di sini untuk contoh.


Dalam teori rekursi, ada teorema titik tetap lainnya, juga karena Kleene. Ini kata ²,

Mari sebuah Gödel penomoran ³ dan r : NN total, fungsi komputasi (intuisi: kompilator). Lalu ada i N sedemikian rupa sehingga φ r ( i ) = φ i .φr:NNiNφr(i)=φi

Bahkan, ada banyak seperti itu ; jika ada di mana hanya sedikit, kita bisa menambal r (berdasarkan tabel-lookup) untuk tidak memiliki poin tetap, bertentangan dengan teorema.ir


  1. Semua orang menggunakannya setiap hari, bahkan jika Anda tidak menyadarinya.
  2. Saya tidak suka artikel Wikipedia itu; Anda mungkin lebih baik memeriksa buku bergenre.
  3. Jenis khusus penomoran fungsi. Untuk intuisi, anggap itu sebagai bahasa pemrograman (Turing-lengkap).
Raphael
sumber
13

Biarkan saya menguraikan sedikit tentang jawaban meisterluk: Bayangkan kita mencoba mendefinisikan fungsi faktorial: ingat definisi fungsi faktorial:

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

Sekarang dalam beberapa kerangka kerja PL (yaitu -calculusλ ), tidak segera jelas bagaimana mendefinisikan fungsi tersebut. Namun, mungkin mudah untuk mendefinisikan fungsi tingkat tinggi berikut , yang disebut karena dibutuhkan sebagai input fungsi lain dan bilangan alami

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

Tidak ada penggunaan rekursi dalam definisi fungsi ini. Namun, jika ada beberapa cara untuk menemukan memperbaiki-titik dari Fact, yaitu, fungsi sehingga Fakta φ n = φ n untuk setiap n , maka mudah untuk memeriksa bahwa φ memang merupakan implementasi dari fungsi faktorial.ϕ

Fakta ϕ n = ϕ n
nϕ

Sekarang dalam kerangka kerja seperti -kalkus, orang dapat menunjukkan bahwa semua titik-tetap dari sifat ini memang ada, yang ada, yang membuatnya jelas bahwa Anda dapat menggunakannya sebagai bahasa pemrograman umum.λ

Ada banyak kegunaan lain untuk gagasan titik tetap dalam ilmu komputer, tetapi sebagian besar bermuara pada yang saya tunjukkan di atas, yaitu membuktikan bahwa titik tetap tertentu ada untuk dapat menunjukkan bahwa fungsi atau konstruksi tertentu didefinisikan dengan baik dalam kerangka kerja Anda (di sini kami telah menunjukkan bahwa fungsi faktorial ada).

cody
sumber
9

f:SEBUAHSEBUAHxf(x)xx201x3

Sekarang, tergantung pada struktur matematika yang Anda hadapi, ada banyak alasan berbeda untuk tertarik pada poin tetap. Misalnya, jika Anda mempertimbangkan sistem dinamis yang melihat keadaan dunia dan mengubahnya (seperti termostat) maka titik tetap berhubungan dengan konfigurasi yang stabil. Jika Anda memikirkan game dalam arti matematika teori permainan, titik tetap sesuai dengan ekuilibria, jika Anda memikirkan perilaku rutin optimalisasi yang secara iteratif meningkatkan solusinya, titik tetap berhubungan dengan solusi optimal. Jadi pengertian matematis dari titik tetap memiliki banyak aplikasi dalam banyak konteks yang berbeda.

Aplikasi titik tetap yang sangat umum dan mendasar dalam ilmu komputer adalah memodelkan loop dan program rekursif secara matematis. Jika kita mencoba memodelkan program sebagai fungsi matematika, baik loop dan rekursi tidak jelas untuk dimodelkan. Ini karena tubuh loop adalah program dan dapat direpresentasikan sebagai fungsi matematika. Bagaimana kita memperoleh fungsi yang merepresentasikan perilaku loop? Ini sesuai dengan menerapkan loop body berulang kali, bersamaan dengan loop guard, sampai tidak ada perubahan lebih lanjut yang mungkin. Demikian pula, jika kita memodelkan program rekursif secara matematis, kita memerlukan gagasan matematika tentang apa artinya bagi suatu fungsi untuk menerapkannya sendiri. Jawaban ini disediakan oleh poin-poin tertentu.

Vijay D
sumber
7

Fungsi dalam matematika adalah peta antara nilai input dan output. Poin tetap adalah nilai input (untuk suatu fungsi) yang dipetakan ke nilai output yang memuaskan kesetaraan dengan input.

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

Sejauh menyangkut ilmu komputer, kita berbicara banyak tentang fungsi parsial , tetapi ini tidak mengubah definisi titik tetap bagi kita.

Anda mungkin juga bingung tentang topik yang sama sekali berbeda: Aritmatika titik tetap adalah konsep cara merepresentasikan bilangan real dalam memori. Tetapi nama "titik tetap" tidak merujuk ke topik ini secara umum (karena hanya ada 1 titik).

meisterluk
sumber