Hesaplanabilir işlevler neden özyinelemeli işlevler olarak da adlandırılır?


23

Hesaplanabilirlik teorisinde, hesaplanabilir fonksiyonlara özyinelemeli fonksiyonlar da denir. En azından ilk bakışta, günlük programlamada "özyinelemeli" dediğiniz şeyle ortak hiçbir şeyleri yok (yani, kendilerini tanımlayan işlevler).

Hesaplanabilirlik bağlamında özyinelemenin asıl anlamı nedir? Neden bu işlevler “özyinelemeli” olarak adlandırılıyor?

Başka bir deyişle, “özyinelemenin” iki anlamı arasındaki bağlantı nedir?



3
Hile yapıyorlar, çünkü operatörü içeriyorlar . Bu bir küçültme operatörüdür, fakat elbette küçültmenin özyineleme ile ilgisi çok azdır. Bu yüzden biri (Kleene) "özyinelemeli" nin kulağa hoş geleceğini düşündüğü için görünüyor, bu yüzden bu ismi kullanmak için bir bahane yarattı. Çok geçmeden, Robert Soare "hesaplanabilir" in daha iyi geleceğini ve "özyinelemeli" nin ilk günlerde bir pazarlama numarası olduğunu ve herkesin kabul ettiğini açıkladı.
Thomas Klimpel,

3
İlkel özyinelemeli fonksiyonlar hakkında Waht? Kopyalanır Ara bunlar gibi tanımlanmıştır ve . Bu kendini çağıran bir işlevdir. h ( S ( y ) , x 1 , , x k ) = g ( y , h ( y , x 1 , , X k ) , x 1 , ,h(0,x1,,xk)=f(x1,,xk)h(S(y),x1,,xk)=g(y,h(y,x1,,xk),x1,,xk)
Hendrik Jan

3
@GoloRoden 'Hesaplanabilirlik' etiketinin açıklamasının (bu soru için kullandınız) yazdığına dikkat edin: "hesaplanabilirlik teorisi aka özyineleme teorisi". Gödel özyinelemeli fonksiyonlar olarak adlandırılır , ancak hesaplanabilir olarak gelişti . Muhtemelen seninki gibi kafa karışıklıklarından kaçınmak için. Hesaplanabilirlik teorisini inceleyen insanlar (yoğun bir şekilde) özyineleme teorisi terimini köklerine saygı duymak için kullanma eğilimindedir.
Auberon

1
tekrarlı bir şekilde tanımlandıkları için, yani " daha önce tanımlanmış, daha basit fonksiyonlar açısından daha karmaşık fonksiyonlar tanımlanmıştır "
Nikos M.

Yanıtlar:


13

Bazı temel fonksiyonları tanımlayın:

  • sıfır işlevi

    zero:NN:x0
  • halefi işlevi

    succ:NN:xx+1
  • izdüşüm işlevi

pin:NnN:(x1,x2,,xn)xi

Bundan sonra belirtmek için kullanacağım (x1,x2,,xn)xn¯(x1,x2,,xn)

Bir kompozisyon tanımlayın:

Verilen fonksiyonlar

  • N kNg1,g2,,gm her birinin imzası vardırNkN
  • f:NmN

Aşağıdaki işlevi oluşturun:

h:NkN:xk¯h(xk¯)=f(g1(xk¯),g2(xk¯),,gm(xk¯))

İlkel özyinelemeyi tanımlayın:

Verilen fonksiyonlar

  • f:NkN
  • g:Nk+2N

Aşağıdaki (parça parça) işlevi oluşturun:

h:Nk+1N:(xk¯,y+1){f(xk¯),y+1=0g(xk¯,y,h(xk¯,y)),y+1>0

Kullanılarak yapılabilir tüm fonksiyonlar bileşimleri ve ilkel özyinelemeye ilgili temel fonksiyonları , adlandırılır ilkel yinelemeli . Tanım olarak bu şekilde denir. Kendini çağıran işlevlere sahip bir bağlantı mevcut olsa da, bunları birbirleriyle bağlamaya çalışmanıza gerek yoktur. Özyineleme bir homonymayı düşünebilirsiniz.

Yukarıdaki bu tanım ve yapı, hesaplanabilir tüm işlevleri yakalama girişimi için Gödel (birkaç kişi daha dahil edildi) tarafından oluşturuldu, yani bu işlev için bir Turing Makinesi var. Bir Turing Makinesi konseptinin henüz açıklanmadığını veya en azından çok belirsiz olduğunu unutmayın.

(Un) Neyse ki, Ackermann adında biri geldi ve şu işlevi tanımladı:

  • birck:N-2N-
  • birck(0,y)=y+1
  • birck(x+1,0)=birck(x,1)
  • birck(x+1,y+1)=birck(x,birck(x+1,y))

Bu işlev hesaplanabilir, ancak yalnızca yukarıdaki yapıları kullanarak oluşturma yolu yoktur! (örneğin ilkel özyinelemeli değildir) Bu, Gödel ve postasının inşaatlarındaki tüm hesaplanabilir işlevleri alamadığı anlamına gelir!birck

Gödel fonksiyon sınıfını genişletmek zorundaydı, böylece inşa edilebilirdi. Bunu aşağıdakileri tanımlayarak yaptı:birck

Sınırsız küçültme

  • g:N-kN-
  • IF SONRA ELSE tanımlanmadı. gr ( ¯ x k ) = y g ( ¯ x k )[f(xk¯,y)=0 VE f(xk¯,z) tanımlanmış z<y VE f(xk¯,z)0]

    g(xk¯)=y

    g(xk¯)

Bu sonuncusu kavramak zor olabilir, ancak temel olarak demektir en küçük köküdür (bir kök varsa).fg((x1,x2,...,xk))f


Yukarıda tanımlanan tüm yapılarla oluşturulabilen tüm işlevlere özyinelemeli denir . Yine, özyinelemeli ismi sadece tanım gereğidir ve mutlaka kendilerini çağıran işlevlerle korelasyonu yoktur. Gerçekten, bir homonym olarak düşünün.

Özyinelemeli işlevler kısmi özyinelemeli işlevler veya toplam özyinelemeli işlevler olabilir . Tüm kısmi özyinelemeli fonksiyonlar toplam özyinelemeli fonksiyonlardır. Tüm ilkel özyinelemeli fonksiyonlar toplamıdır. Toplam olmayan kısmi özyinelemeli bir işleve örnek olarak, halefi işlevinin en aza indirilmesini düşünün. Halefi işlevinin kökleri yoktur, bu nedenle simge durumuna küçültme tanımlanmaz. Toplam özyinelemeli bir fonksiyon örneği (minimizasyonu kullanan) .birck

Şimdi Gödel, genişletilmiş işlev sınıfı ile birlikte işlevini de yapmayı başardı. Nitekim, bir Turing makinesi tarafından hesaplanabilen her işlev, yukarıdaki yapılar kullanılarak gösterilebilir ve bunun tersi de, her yapı bir Turing makinesi tarafından temsil edilebilir.birck

Eğer merak ediyorsanız, Gödel'in sınıfını büyütmeyi deneyebilirsiniz. Sınırsız küçültmenin 'karşıtını' tanımlamayı deneyebilirsiniz. Yani, sınırsız maksimizasyon yani en büyük kökü bulan işlev. Ancak, bu işlevi hesaplamanın zor olduğunu (imkansız) bulabilirsiniz. Sen içine okuyabilir Meşgul Beaver Problem , çalışır sınırsız maksimizasyonu uygulamak.


4
Verilen tanımların soruyu gerçekten cevaplamadığını biliyorum, ancak cevabım özyineleme / hesaplanabilirlik teorisinin evrimini anlatıyor. Bir okumaya değer olabilir.
Auberon


h((x1,x2,...,xk),0)=f((x1,x2,...,xk))h((x1,x2,...,xk,0)). Ayrıca, bir sonraki madde işaret noktasının başkaca maddesinden önce bir madde yoktur.
Eric Towers

2
μ

1
Cevabınızda epeyce yanlış ifadeler var. Bir cevap için tarih yazmamalısın.
Kaveh

17

Hesaplanabilirlik teorisinin kurucuları matematikçilerdi. Bilgisayarlar olmadan, şimdi hesaplanabilirlik teorisi denilen şeyi kurdular. Matematikçilerin hesaplanabilecek işlevleri tanımlama şekli neydi? Özyinelemeli tanımlarıyla!

Bu yüzden Turing makineleri veya lambda matematiği veya register makineleri gibi başka bir hesaplama modeli olmadan önce özyinelemeli işlev vardı. Böylece insanlar bu fonksiyona özyinelemeli fonksiyonlar denir. Turing makinelerinin ve diğer modellerin hesaplayabildiği gibi oldukları gerçeği daha sonraki bir olaydır (çoğunlukla Kleene tarafından kanıtlanmıştır).

μ

Özyineleme teorisinde kullanılan alanın adı. Bununla birlikte, son yıllarda, özyineleme teorisinden daha bilgisayar bilimlerine (matematiğe karşı) daha çekici bir şey adını değiştirmek için başarılı bir baskı olmuştur. Sonuç olarak, alan şimdi hesaplanabilirlik teorisi olarak adlandırılmaktadır. Ancak on yılların başlarında kitaplara, makalelere, konferanslara vb. Bakarsanız, özyineleme teorisi denir ve hesaplanabilirlik teorisi değil. Soare'nin kendi 1987 kitabının adı (bile olsa da, hesaplanabilirlik teorisinin ismini değiştirmenin arkasındaki asıl kişi) “Recursively Enumerable Sets and Derrees” dır.

Tarih hakkında daha fazla bilgi edinmek istiyorsanız, okumak için eğlenceli ve iyi bir yer, Odifreddi'nin Klasik Özyineleme Teorisinin ilk bölümü.


7

Robert Soare bu konuda bir makale yazdı . Ona göre, (genel) özyinelemeli işlevler terimi, bir tür karşılıklı özyineleme kullanarak onları tanımlayan Gödel tarafından yazılmıştır. Adı sıkışmış, ancak daha sonra başka eşdeğer tanımlarda bulundu.

Daha fazla bilgi için Soare'nin makalesini tavsiye ediyorum.


0

uzun bir yorum koymak yerine bir cevap eklemeye karar verdim:

Özyinelemeli olarak tanımlandıklarından , yani " daha önce tanımlanmış, daha basit fonksiyonlar açısından daha karmaşık fonksiyonlar tanımlanmıştır "

Bu tür yinelemeli veya artımlı yordam iyi tanımlanmış işlevler oluşturur (matematiksel anlamda)

Matematiksel bakışta özyinelemenin anlamı budur . Bunun programlama bölümlerinde özyinelemeyle nasıl ilişkili olduğuna bakınız.

Bu prosedürü, matematikte özyinelemenin bir örneği olan (matematiksel) indüksiyon gibi teknikler ve yöntemlerle karşılaştırın .

Programlamanın matematiksel bir damarı ve aynı zamanda bir mühendislik damarı var.

Bu (olağan yapıcı) prosedürü, İşletim Sistemleri parlance olarak " önyükleme " olarak da adlandırılır .

Ancak bir çalışma zamanı özyineleme aynı işlevin (yani caling kendisi çalışma zamanı sırasında ), (hmm olmalı) zaten hesaplanmış değerlerin (veya argümanlar) üzerinde gerçekleşmesi o olmalı, çünkü ya da başka bir deyişle, içinde sonuç kümesinin parçası zaten bilgisayarlı , aynı zamanda yukarıdaki anlamda da özyinelemelidir; yani " önceden tanımlanmış fonksiyonlar (ve değerleri) "

Başka tanımlanmamış ve Yığın Taşması gibi şeylere yol açıyor :))))

İşletim Sistemlerinden başka bir örnek vermek gerekirse, belirli bir güncellemeden (örneğin çekirdek güncelleme) sonra yeniden başlatılan bir işletim sisteminin benzeri olarak bir çalışma zamanı özyinelemesi (kendisini çağıran) alınabilir . Birçok işletim sistemi aşağıdaki prosedürü uygular:

  1. düşük seviyeli rutinleri yüklemek için bir başlangıç ​​önyüklemesi (örneğin, G / Ç)
  2. Gerekli güncellemeleri yapın (düşük seviyeli rutinleri kullanarak)
  3. yeniden önyükleme yapın (etkin, kendisini yeniden arama), ancak bu sefer daha karmaşık yordamlar (hatta tüm sistem) yükleniyor

Auberon'un güzel cevabı, bu tür bir prosedürü daha ayrıntılı olarak göstermektedir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.