จุดคงที่มันหมายถึงอะไรในโลกของวิทยาศาสตร์คอมพิวเตอร์


19

ฉันพบการอ้างอิงถึงจุดคงที่ในคำถามและคำตอบที่ stackexchange และค้นหาความหมายบนเว็บอย่างชัดเจนเพื่อค้นหาการอ้างอิงที่ไซต์เช่น Wikipedia อย่างไรก็ตามไม่มีการอ้างอิงใดตอบคำถามของฉันว่าอะไรคือจุดคงที่และความหมายในโลกของวิทยาศาสตร์คอมพิวเตอร์


1
แม้ว่าความคิดของจุดคงที่มักจะเกิดจากบางคู่เช่นที่f ( x ) = xมีกรอบมากมายที่แตกต่างกันซึ่งคำที่ใช้กับความหมายและผลที่แตกต่างกัน f,xf(x)=x
Raphael

สิ่งนี้ช่วยฉันได้ ประเภทเวียนเกิดฟรี!
Guy Coder

คำตอบ:


17

ในวิทยาการคอมพิวเตอร์การใช้คะแนนคงที่ที่โดดเด่นที่สุดในทฤษฎีขัดแตะ ¹ ขัดแตะเป็นชุดสั่งบางส่วนกับคุณสมบัติเพิ่มเติมที่ได้รับสององค์ประกอบx , y S , ชุด{ x , y }มีทั้ง supremum และต่ำสุด (ในS )(S,)x,yS{x,y}S

ตอนนี้คุณมักจะพิจารณาเดียวฟังก์ชั่นบนตาข่ายนี้ซึ่ง "บรรจบ" คือว่าสำหรับบางx SคุณมีF ( x ) = x ผลลัพธ์ที่สำคัญในพื้นที่นี้ทฤษฎีบทจุดคง Kleene ของและทฤษฎีบท Knaster-TarskifxSf(x)=x

เป็นตัวอย่างที่โดดเด่นเป็นตาข่ายสำหรับชุดบางส่วนและเกิดจากความหมายอุปนัย ตัวอย่างเช่นให้A = { a , b } และเรากำหนดภาษาL 2 { a , b } โดย(2A,)AfA={a,b}L2{a,b}

wLε,aLawLbawLbwLabw,bbwL

คำนิยามอุปนัยนี้สอดคล้องกับฟังก์ชั่นเสียงเดียว

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

โดย Knaster-Tarski ทฤษฎีบทเรารู้มี fixpoint ที่เล็กที่สุดซึ่งเป็น supremum ทุกขนาดเล็ก "ผลกลาง" (ซึ่งสอดคล้องกับขีดมักจะใช้การก่อสร้างของคำนิยามอุปนัย) และที่มีขนาดเล็กที่สุด fixpoint แน่นอนLfL

โดยวิธีการfixpoint ที่ใหญ่ที่สุดยังมีใช้ ดูที่นี่สำหรับตัวอย่าง


ในทฤษฎีการเรียกซ้ำมีทฤษฎีบทจุดคงที่อีกอันหนึ่งอันเนื่องมาจาก Kleene มันบอกว่า ²

ให้ a หมายเลข Gödel³และr : NNรวมฟังก์ชันที่คำนวณได้ (สัญชาตญาณ: คอมไพเลอร์) จากนั้นก็มีฉันNเช่นว่าφ R ( ฉัน) = φฉันφr:NNiNφr(i)=φi

ในความเป็นจริงมีจำนวนมากเช่นอย่างไม่มีที่สิ้นสุด; หากมีที่ที่มีเพียงจำนวน จำกัด เราสามารถแก้ไขr (โดยการค้นหาจากตาราง) เพื่อไม่ให้มีจุดคงที่และขัดแย้งกับทฤษฎีบทir


  1. ทุกคนใช้มันทุกวันแม้ว่าคุณจะไม่รู้ตัวก็ตาม
  2. ฉันไม่ชอบบทความ Wikipedia คุณน่าจะดีกว่าการตรวจสอบหนังสือประเภท
  3. การกำหนดหมายเลขฟังก์ชันพิเศษ สำหรับสัญชาตญาณคิดว่ามันเป็นภาษาโปรแกรม (ทัวริงสมบูรณ์)

13

ให้ฉันอธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับคำตอบของ meisterluk: ลองนึกภาพเรากำลังพยายามนิยามฟังก์ชัน factorial: จำนิยามของฟังก์ชัน factorial:

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

ขณะนี้อยู่ในกรอบ PL บางอัน (เช่น λ-calculus), it isn't immediately obvious how to define such a function. However, it may be easy to define the following higher-order function, so-called because it takes as input another function and a natural number

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

There is no use of recursion in this function definition. However, if there was some way of finding the fix-point of Fact, that is, a function ϕ such that

Fact ϕ n = ϕ n
for every n, then it is easy to check that ϕ is indeed an implementation of the factorial function.

Now in frameworks like the λ-calculus, one can show that all fixed-points of this nature do, in fact, exist, which makes it clear that you can use it as a general programing language.

There are many other uses to the notion of fixed-points in computer science, but most boil down to the one I showed above, i.e. prove that certain fixed-points exist to be able to show that certain functions or constructs are well-defined in your framework (here we have shown that the factorial function exists).


9

A fixed point of a function f:AA is an element x for which f(x) is equal to x. For example, the function x2 has two fixed points, which are the values 0 and 1, and the function x3 has three fixed points. Mathematically that is the definition.

Now, depending on the mathematical structure you are dealing with, there are very many different reasons to be interested in fixed points. For example, if you consider a dynamic system that looks at the state of the world and changes it (like a thermostat) then a fixed point corresponds to a stable configuration. If you think of games in the mathematical sense of game theory, fixed points correspond to equillibria, if you think of the the behaviour of an optimization routine that iteratively improves its solution, a fixed point corresponds to an optimal solution. So the mathematical notion of a fixed point has a lot of applications in a lot of different contexts.

A very common, and fundamental application of fixed points in computer science is to mathematically model loops and recursive programs. If we try to model a program as a mathematical function, both loops and recursion are not obvious to model. This is because the body of a loop is a program and can be represented as a mathematical function. How do we derive the function representing the loop's behaviour? It corresponds to applying the loop body repeatedly, in conjunction with the loop guard, until no further change is possible. Similarly, if we model recursive programs mathematically, we need a mathematical notion of what it means for a function to apply itself. This answer is provided by fixed points.


7

A function in mathematics is a map between input and output values. Fixed points are input values (for a function) which map to output values satisfying equality with the input.

For the equality function f(x)=x the set of input value equals to the set of fixed points of the function. For a function f(x)=x2 the set of fixed points is limited to {0,1}.

As far as computer science is concerned, we are talking a lot about partial functions, but this does not change the definition of fixed points for us.

You might also be confused about a totally different topic: Fixed-point arithmetic is a concept how to represent real numbers in the memory. But the name "fixed points" does not reference to this topic in general (because there is only 1 point).


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.