Neden toplam fonksiyonlar numaralandırılamıyor?


29

Fonksiyon numaralandırma kavramını öğrendik. Uygulamada, programlama dillerine karşılık gelirler.

Geçen bir açıklamada, profesör tüm toplam fonksiyonların (yani her girdi için daima sonlanan fonksiyonlar) sınıfının numaralandırılabilir olmadığını belirtti . Bu, toplam fonksiyonların hepsini yazmamıza izin veren bir programlama dili tasarlayamayacağımız anlamına gelir; başkaları olmaz - ki bu güzel olurdu!

Peki, düzgün bir hesaplama gücü istiyorsak (görünüşte) sona ermeme potansiyelini nasıl kabul etmemiz gerekir?

Yanıtlar:


24

Köşegenleştirme yüzünden. Eğer 'deki tüm toplam hesaplanabilir fonksiyonların bir hesaplanabilir sayım olarak N ile N her şekilde, f , e toplam olarak, daha sonra gr ( i ) = f i ( i ) + 1 , aynı zamanda, toplam hesaplanabilir olur işlev, ancak numaralandırmada olmaz. Bu, dizilim hakkındaki varsayımlarla çelişir. Dolayısıyla, hiçbir hesaplanabilir fonksiyon numaralandırması, toplam hesaplanabilir fonksiyonlardan tam olarak oluşamaz.(fe:eN)NNfeg(i)=fi(i)+1

Biz evrensel hesaplanabilir fonksiyon düşünmek varsayalım "evrensel" anlamına gelir, h hesaplanabilir bir ikili işlevdir ve her toplam hesaplanabilir tekli fonksiyonu için f ( n ) bazı yoktur e öyle ki f ( i ) = h ( e , i ) herkes için i . Öyleyse , g ( n ) = h ( e , n ) gibi bazı e değerleri de olmalıdır.h(e,i)hf(n)ef(i)=h(e,i)ieg(n)=h(e,n)önceki paragraftan dolayı toplam bir işlev değildir. Aksi takdirde, , tüm toplam hesaplanabilir bilgisayar fonksiyonlarını içeren, hesaplanabilir bir toplam bilgisayar fonksiyonlarının numaralandırılmasını sağlar.h

Bu nedenle, her bir işlevin bir işlevler sistemi olması gerekliliği toplamdır, o sistemdeki evrensel bir işlevin varlığı ile bağdaşmaz. İlkel özyinelemeli fonksiyonlar gibi bazı zayıf sistemler için, her fonksiyon toplamdır fakat evrensel fonksiyonlar yoktur. Turing hesaplanabilirliği gibi evrensel fonksiyonlara sahip daha güçlü sistemler, evrensel fonksiyonun varlığını sağlamak için kısmi fonksiyonlara sahip olmalıdır.


Sadece birisinin köşegenleşmede bir boşluk olarak göründüğünü bulduğunu eklemek istedim. Program için yazılı bir açıklama kullanıyorsanız, yazım sistemini köşegenleştirmeye izin vermemek ve toplam bir kendi kendine tercüman oluşturmak için kullanabilirsiniz. Ayrıntılar için bkz . Normalizasyon Engelini Aşmak: F-omega İçin Kendi Kendine Tercüman .
hatch22

Elbette, Sistem F bir Turing komple sistemi değildir. Bağladığınız kağıt ilginç; Turing-olmayan bütünlüğünden ilginç bir şekilde yararlanmayı başardıkları görülüyor.
Carl Mummert

Neden "sonra de toplam hesaplanabilir bir işlev olacağını " anlamıyorum . Eğer g , daha sonrada toplam hesaplanabilir fonksiyonudur k , f k = gr , daha sonra değerlendirmek g ( k ) değerlendirmek gerektirir g ( k ) = f k ( k ) + 1 = gr ( k ) + 1g(i)=fi(i)+1gk,fk=gg(k)g(k)=fk(k)+1=g(k)+1: çelişki. Toplam hesaplanabilir fonksiyonlar bir numaralandırma varsa, biz bile inşa gibi görünüyor Yani , bu yüzden ilk hipotezi çürütmek için bir çelişki ulaşamaz ki (Biz bir çelişki ulaşabilir, ama sadece çürütür g toplam hesaplanabilir olmak üzere). gg
agemO

Ve bu sorunu önlemek için kaydırılmış bir köşegen kullanmak bile çelişkilere yol açıyor gibi görünmektedir.
agemO

10

Sadece açık olmak gerekirse, matematiksel işlevleri ayırt etmemiz gerekir (onları işlevler olarak adlandıracağım ve çoğu kez sayılamayan bir şey vardır, bu yüzden bunların hiçbiri numaralandırılamaz) ve yazabildiğiniz işlevler: Onlara programlar ya da hesaplanabilir işlevler diyeceğim .

Bir alt sayılabilir seti ait E denir hesaplanabilir bir unsur göz önüne alındığında, bu bir program varsa x ait E "evet" ise yanıt x S ve "hayır" ise x S . (Ve her zaman bir şeye cevap vermesi gerekir.) Programın "hayır" demek yerine cevap vermemeye yetkili olması durumunda kümeye tekrar tekrar numaralandırılabilir . (Programın S'nin tüm öğelerini herhangi bir sırayla yazdırması gerekmesi şarttır)SExExSxSS

Bir toplam tüm programların kümesi sonlu kümesi ise enumerable sadece sonlu kümesi ve iade "evet" onlar eğer tüm sonlandırır tüm unsurları programı çalıştırmanızı bir tercüman yazabilir çünkü. (Ama onlardan herhangi birinin yapıp yapmadığını göremiyorum)

Profesörünüz sonsuz bir sette toplam olan tüm programların sayısının sayılabilir olmadığını , çünkü programınızı sonsuz sayıda öğe üzerinde çalıştıramayacağınızı söyledi.

Ancak bu, bunun kötü olduğu anlamına gelmez:

  1. Örneğin, toplam olarak kanıtlanabilir tüm programların numaralandırılabilir olması durumunda set , çünkü tüm kanıtları sıralayabilir ve programınızın toplam olup olmadığını mekanik olarak kontrol edebilirsiniz.

  2. Numaralandırılabilir bir set bile pratik olmaz, çünkü prosedürün bir gün sonlandırılıp sonlandırılmayacağından emin olmadan sonsuza kadar beklemeniz gerekebilir. Tüm fonksiyonların numaralandırıldığı programları nasıl kullanacağımı bilmiyorum.

Yazdığınız her şeyin sadece statik yazarak sonlandırılmasının garanti edildiği bazı programlama dilleri vardır! Polinomun sınırını garantileyen bazıları bile var. Onlar şu an için çoğunlukla akademik, bunlara yazı yazmak sizi muhtemelen Python'da yazmaktan ziyade kısıtlamaları hissettirecek, fakat bunun üzerinde çalışan birçok araştırmacı var.

Sorunuzu cevaplamak için: bir anlamda, evet. Turing-tamamlanmış olmak için potansiyel bir fesih gerekmemektedir (şu an için en yüksek hesaplama gücü). Ancak bunu, toplam fonksiyonların numaralandırılabilir olup olmadığı ile doğrudan ilgili bulmuyorum. Tüm toplam programları hala yazabilirsiniz!


2
"Sadece elementlerin sonsuz sayıda programınızı çalıştıramaz çünkü" - Bu ben olmayabilir gibi zayıf bir argümandır ihtiyaç Ben programın kendisinden gereken tüm bilgileri kurtarabileceğimize eğer bunu yapmak. Muhakeme tehlikenizi gösteren bir soru için buraya bakınız .
Raphael

Aslında. Bunun bir kanıt olduğunu iddia etmedim (her zaman olduğu gibi, çapraz bir argüman oluşturmak zorundasınız) ve belki de "çünkü" kelimesini kullanmamalıydım. Profesörünüzün ifadesinin bir kanıtı ile ilgili olmayan (düşündüğüm) sorunuzu yanıtlamaya çalışıyordum, ancak fesihin neden hesaplama gücü ile çakıştığıyla ilgili.
jmad
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.