Algoritmalar kümesinin temelliliği


15

Bir tartışmadaki biri, belirli bir soruna yaklaşmak için en azından sürekli stratejilerin olabileceğini düşünüyor. Özel sorun ticaret stratejileri (algoritmalar değil stratejiler) idi ama sorumun yanı sıra şu düşünüyorum.

Bu bana algoritma kümesinin temelliğini düşündürdü. Biraz araştırıyorum ama hiçbir şey bulamadım. Turing makinelerinin sınırlı bir alfabe seti ile çalıştığı ve kasetin endekslenebilir olması ve dolayısıyla sayılabilir olması gerektiğinden, sayılamayan sayıda algoritmaya sahip olmanın imkansız olduğunu düşünüyorum. Benim set teorim kuşkusuz paslanmış bu yüzden muhakeme geçerli olduğundan emin değilim ve muhtemelen bunu kanıtlamak mümkün olmaz, ama ilginç bir düşünce.

Algoritmalar kümesinin temel özelliği nedir?


1
Yuval Filmus'un belirttiği gibi, sayıca çok sayıda Turing makinesi var. Ancak, boolean değerli herhangi bir işlevi hesaplayabildikleri için, sürekli olmayan birçok boole devresi ailesi vardır. Ama muhtemelen "algoritma" ile kastettiğiniz bu değil.
Monica'yı

Yanıtlar:


28

Algoritma, gayri resmi olarak, bazı görevleri yerine getirmek için sınırlı bir yazılı talimat dizisi olarak tanımlanır. Daha resmi olarak, Turing makineleri olarak tanımlanırlar, ancak bunları bilgisayar programları olarak eşit derecede iyi tanımlayabilirsiniz.

Kullandığınız kesin biçimcilik çok önemli değil, ancak asıl nokta, her algoritmanın sonlu bir karakter dizisi olarak yazılabilmesidir, burada karakterler bazı sonlu kümelerden, örneğin roman harfleri, ASCII veya sıfırlar ve olanlar arasından seçilebilir. Basitlik için sıfırları ve varsayalım. Herhangi bir sıfır ve bir dizi sadece ikili olarak yazılmış doğal bir sayıdır. Bu, her algoritmanın doğal bir sayı olarak temsil edilebildiği için, en fazla algoritmaların sayılabilir bir sonsuzluğu olduğu anlamına gelir.

Tam kredi için, bazı doğal sayıların geçerli programları kodlayamayacağından endişelenmelisiniz, bu nedenle doğal sayılardan daha az algoritma olabilir. (İki farklı doğal sayılar aynı algoritmayı temsil ettiğini mümkünse Bonus kredi için, ayrıca merak ediyor olabilirsiniz.) Ancak, print 1, print 2, print 3ve benzeri tüm algoritmalar ve tüm farklıdır, dolayısıyla sayılabilir en azından sonsuz sayıda algoritma vardır.

Sonuç olarak, algoritma kümesinin sayıca sonsuz olduğu sonucuna varıyoruz.


Yorumlar uzun tartışmalar için değildir; bu görüşme sohbete taşındı .
Gilles 'SO- kötü olmayı kes

10

Algoritmalar kümesi sayıca sonsuzdur. Bunun nedeni, her bir algoritmanın Turing makinesi gibi sınırlı bir tanımlaması olmasıdır.

Bir algoritmanın sonlu bir açıklamaya sahip olması, bir algoritmayı diğerine girmemize izin verir ve bu hesaplanabilirlik teorisinin temelidir. Örneğin, durma problemini formüle etmemize izin verir.


7

Belirli bir probleme yaklaşmak için en az sürekli strateji sayısı

"Sürekli" nin büyük olasılıkla gerçek sayılar anlamına gelmesi gerekiyordu ... "en azından" kelimesini bu sözcükle birlikte kullanmak saçma bir şekilde üstündedir. Ağızda biraz dilde olmak: sayıca sonsuz oldukça büyük, ama sayılamayacak kadar sonsuz ... büyükten daha büyük. Çok daha fazlası. Unfathomably.

Öyleyse bunu pencereden dışarı atalım. Ne tür bir sonsuzlukla uğraştığımızı görmek çok basit (ve arkadaşınız hiç bir teorik bilgisayar bilimi duymamış olsa bile) sezgisel:

  • Herhangi bir algoritma herhangi bir turing-complete diliyle uygulanabilir; Bunu biraz gizlemek için en sevdiğiniz gerçek dünya dillerini (Java, C, ...) seçin. Bunların hepsi, herkesin ortaya koyabileceği teorik algoritmalarla eşdeğerdir. Her algoritmanın kendi içinde sınırlı olduğunu, yani yazmak için sonsuz sayıda sembol alacak algoritma olmadığını unutmayın.
  • Karmaşık Turing Makineleri hakkında düşünmeyin. Seçim diliniz kaynak kodunu saklamak için basit dosyalar kullanır. Her dosya küçük sayıların bir toplamıdır (diğer bir deyişle, bayt). Önemli olan, bu sayıların sürekli değil, kesinlikle tamsayı olmasıdır. (Eğer saf biriyseniz ve teorik rejimde kalmak istiyorsanız, "bayt" kelimesini "sembolü" ile değiştirin, hiçbir şeyi değiştirmez.) Birden fazla dosya (ve kütüphane arasında dağıtılan büyük programlardan korkuyorsanız , ve diğer şeyler), sonra bunları tek bir sıkıştırılmış arşive (yani, tek bir dosya) sıkıştırın.
  • Şimdi, her dosyaya iki yönlü olarak tek bir tamsayı atayabilirsiniz . Sadece dosyanın bitlerini / baytlarını birbiri ardına yazıyoruz ve ikili olarak ifade edilen çok büyük bir sayı ile sonuçlanıyoruz. Uzak geçmişte insanlar bunu yaptılar: derlenmiş ikili programları, dergilerde onaltılık sayıların uzun listesi olarak yazdırdılar; bunları yazarsınız, ancak asla sayılardan başka bir şey olarak görmezsiniz (yazmayı kolaylaştırmak için genellikle 8- veya 16 basamaklı kümelerde rahatça gruplandırılır).
  • Yani: her program, keyfi olarak büyük olsa da, bir tam sayı ile temsil edilebilir. Diğer yol da işe yarıyor - her tamsayı hemen ve önemsiz bir şekilde bir dosyaya aktarılabilir ve bir derleyiciye atılabilir (açıkçası, bunların sadece küçük bir kısmı geçerli programlar olacaktır, ancak bu bizim için önemli değil).
  • Sonunda, programlar ve dolayısıyla algoritmalar, tamsayıların bir alt kümesidir; dolayısıyla sadece sayıca çok kişi var olabilir.
  • Dikkat: Tek bir algoritmanın birçok farklı uygulamasının olması bizim lehimize, yani bu tamsayıların birçoğu aynı algoritmaya yoğunlaşıyor (farklı temsiller). Dolayısıyla sayılabilir sonsuzluk en küçük sonsuzluk türü olmasaydı, algoritma sayısının daha da küçük, ama kesinlikle daha büyük olmadığı konusunda endişelenmeliyiz (yani sayılamaz).

Özel sorun ticaret stratejileriydi (algoritmalar değil stratejiler)

Arkadaşınızın "strateji" ile ne anlama geldiğini bilmiyorum; Sanırım bir tür algoritma gibi bir şey demek, ama bir bilgisayara hacklemek için yeterince ayrıntılı bir şekilde formüle edilmemiş? Ya da hangisi infaz sırasında insanın "sezgisine" bağlıdır? Eğer öyleyse, bunlar sadece alakasız detaylardır. İnsanlık, CS'de kullandığımız anlamda henüz "algoritmalardan" daha güçlü veya daha büyük süreçlerin herhangi bir tanımını bulamamıştır.


3
Re: "'Continuum' muhtemelen gerçek sayılar anlamına gelecektir ... 'en azından' bu kelime ile birlikte kullanmak saçma bir şekilde üstte": "saçma" bir şekilde, "saçma" . Gerçek sayılardan daha fazla gerçek sayı kümesi vardır, bu yüzden süreklilikten daha büyük kümeler hakkında konuşmak normaldir.
ruakh

6

Bkz. Gödel Numaralandırma , algoritmaların sayılabildiği gibi, özyinelemeli olarak numaralandırılabilir kümeler gibi temel bir gerçektir.

Algoritmalar sayılabilir olduğundan, resmi bir sistemdeki her seti doğrulamak için bir algoritmanın olmadığını göstermek kolaydır (bir soruna bir doğruluk değeri atayın). Bu, sorun kümesini boole değerleriyle eşleyen her işleve bir algoritma atanmasına eşdeğer olacaktır. Bununla birlikte, bu işlevlerin kümesi sayılamaz (önemsiz bir şekilde problemler kümesinin güç seti ile aynı kardinaliteye sahiptir, bu nedenle sayılamaz).

Umarım bu, algoritmaların neden herhangi bir işlevden daha az güçlü olması gerektiğine dair sezgi verir, bu nedenle sayılabilir (burada süreklilik hipotezini görmezden gelelim).


2

Bir stratejinin bir algoritma ile uygulanabilir olması gerekliliği ile başlamazsa ve gerçek hayattaki ayrıklaştırma etkilerini yoksayarsa, örneğin aşağıdakileri parametreli bir ticaret stratejisi olarak kabul edebilir:

abab

ab


0

Algoritmaları ikili * ile yazılmış bilgisayar programları olarak algılarsak, algoritma sayısı (tamsayı) ikili sayıların sayısıdır. Dolayısıyla algoritmaların temel özelliği tamsayıların temel özelliğidir.

* Turing makinelerinin tüm algoritmaları çalıştırabildiğinin ve bilgisayarların herhangi bir program turing makinesini çalıştırabildiğinin kanıtı, bu cevabı gereksiz yere uzun sürebilir. Birincisi bir algoritmanın tanımına bağlı olabilir, ancak hesapsız ticaret stratejileri kullandığınızı sanmıyorum.


1
Bu mevcut cevaplara ne katıyor?
David Richerby

"Turing makinelerinin tüm algoritmaları çalıştırabileceğinin bir kanıtı ... bu cevabı gereksiz yere uzun sürebilir". Cevabı imkansız hale getirecektir, çünkü Kilise Turing Tezini
John Coleman

@DavidRicherby Kısalık katıyor.
user558317

1
@JohnColeman Bir kanıtın imkansızlığını kanıt olmadan mı iddia ediyorsunuz? Demek istediğim, a) OP muhtemelen umursamazdı, çünkü b) bu ​​bir tanım meselesi. Soru şu varsayımı içeriyor gibi görünüyor: "Turing makineleri sonlu bir alfabe seti ile çalıştığı ve kasetin endekslenebilir olması gerektiğinden, sayılamayan sayıda algoritmaya sahip olmak imkansızdır."
user558317

0

Diğer cevaplar, standart hesaplama modelinde (Turing makineleri, lambda hesabı, vb.) Algoritma kümesinin sayıca sonsuz olduğunu açıklamıştı.

Bununla birlikte, algoritma kümesinin sayılamayacak kadar sonsuz olduğu başka teorik hesaplama modelleri de vardır. Örneğin, Blum – Shub – Smale makineleri sayılamayan sonsuz bir komut kümesi 1'e sahiptir , bu nedenle algoritma kümeleri de sayılamayacak kadar sınırsızdır.


1 Kesin olarak, komut kümesinin kendisi sonludur, ancak sayılamayan sonsuz bir küme (rasyonel işlevler) kullanılarak parametrelendirilir.


Rasyonel işlevler sayılamaz mı?
Ben Millwood

@BenMillwood kısaca Can eskiz Bu durum olabilir neden bir kanıtı?
Mark C

x0R,f:xx0

Ah, sabitlerin de rasyonel olması gerektiğini düşünüyordum. Boş ver o zaman.
Ben Millwood

-1

çünkü turing makineleri sınırlı bir alfabe seti ile çalışmaktadır ve bant endekslenebilir olmalıdır, bu nedenle sayılabilir olmalıdır

Belirli bir boyut göz önüne alındığında, son derece çok Turing makinesi vardır ve sayıca çok boyut vardır. Sayılabilir sayılar kümesi, sonlu olduğu sürece sayılabilir. Alfabenin boyutu Turing makinelerinin sayısında bir faktördür, ancak bandın boyutu değildir. Alfabenin sayıca çok karaktere sahip olmasına izin verildiyse, sayılamayacak kadar çok makine olurdu (her gerçek sayı bir sembol dizisi olarak kodlanabilir).

.5.5


Burada ne yapmaya çalıştığınızı anlamıyorum. Soru, algoritma sayısı ile ilgilidir ve algoritma, giriş değil Turing makinesidir. Başlangıçta bantta sonsuz sayıda boş olmayan karaktere izin vermek, algoritma sayısını etkilemez ve her durumda, herhangi bir sonlandırma çalışması yalnızca girişin sonlu önekini okuyabilir. Bu arada, ikinci paragrafınız algoritmaları matematiksel işlevlerle karıştırıyor. Bildiğim kadarıyla birçok gerçek için, size söyleyebilecek hiçbir algoritma yoknondalık genişleme.
David Richerby

Yine de sayılamayacak kadar çok algoritmaya sahip olmak ne anlama gelir? Sadece sayıca çok sayıda yazabilirsiniz. Hangi anlamda bir algoritma yazamıyorsunuz?
David Richerby

@DavidRicherby Evet, karışık birkaç şeyim var. Ancak genel anlamda "algoritma" bir dizi seçime atıfta bulunabilir. Ve bu anlamda, girdiye dayalı bir rakam seçmek, hesaplanabilir olmasa da, bir "algoritma" dır.
Birikim

Bilgisayar biliminde, "algoritma" ve "hesaplanabilir" aynı şeydir. Algoritma bir Turing makinesidir.
David Richerby
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.