Çünkü gerçekten pratik sorunların çoğu kılık değiştirmenin durmasıdır. Onlara bir çözüm durma problemini çözer.
Belirli bir program için mümkün olan en hızlı makine kodunu bulan bir derleyici mi istiyorsunuz? Aslında durma problemi.
Bazı değişkenler yüksek güvenlik düzeylerinde ve bazıları düşük güvenlik düzeylerinde olan bir JavaScript'iniz var. Bir saldırganın yüksek güvenlik bilgilerine ulaşamadığından emin olmak istiyorsunuz. Bu aynı zamanda sadece durma problemidir.
Programlama diliniz için bir ayrıştırıcınız var. Bunu değiştirirsiniz, ancak alıştığı tüm programları ayrıştırdığından emin olmak istersiniz. Aslında durma problemi.
Bir antivirüs programınız var ve kötü niyetli bir talimatı yerine getirip getirmediğini görmek istiyorsunuz. Aslında sadece durma problemi.
Wikipedia örneğine gelince, evet, modern bir bilgisayarı sonlu durumlu bir makine olarak modelleyebilirsiniz. Ancak bununla ilgili iki sorun var.
Her bilgisayar, RAM bitinin tam sayısına bağlı olarak, farklı bir otomat olacaktır. Dolayısıyla, bu, belirli bir kod parçasını incelemek için kullanışlı değildir, çünkü otomat, çalışabileceği makineye bağlıdır.
N bit RAM varsa, duruma ihtiyacınız olacak. Bu yüzden modern 8 GB'lık bilgisayarınız için . Bu, o kadar büyük bir sayı ki, wolfram alpha, nasıl yorumlanacağını bile bilmiyor. yaptığımda ondalık basamak olduğunu söylüyor . Bu, normal bir bilgisayarda depolamak için kesinlikle çok büyük.2 32000000000 2 10 9 3000000002n2320000000002109300000000
Durma problemi bize algoritmaların göreceli zorluğu hakkında sebep verir. Var olan bazı algoritmalar olduğunu bize bildirir, bazen yapabileceğimiz tek şey bir problem olduğunu tahmin etmek ve bunu çözüp çözemeyeceğimizi asla bilememek.
Durma problemimiz olmasaydı, Hilbert'in teoremleri girip doğru olup olmadıklarını veren sihirli algoritmasını aramaya devam edecektik. Artık bakmayı durdurabileceğimizi biliyoruz ve bu sorunları çözmek için sezgisel ve ikinci en iyi yöntemleri bulma çabalarımızı harcayabiliriz.
GÜNCELLEME: Sadece yorumlarda dile getirilen birkaç konuyu ele almak.
@Tyler Fleming Cloutier: "Saçma sapan" problemi, durma probleminin tespit edilemez olduğunun ispatıyla ortaya çıkar, fakat kararsızlığın çekirdeğinde olan şey gerçekten sonsuz bir arama alanına sahip olmasıdır. Belirli bir özelliği olan bir nesneyi arıyorsunuz ve biri yoksa, ne zaman yapıldığını bilmenin yolu yoktur.
Bir problemin zorluğu, sahip olduğu niceleyici sayısı ile ilgili olabilir. Keyfi özelliğe sahip bir nesne olduğunu ( ) göstermeye çalışıyorsanız, bir tane bulana kadar aramanız gerekir. Hiçbiri mevcut değilse, bunu bilmenin yolu yoktur (genel olarak). Tüm nesnelerin ( ) bir özelliğe sahip olduğunu kanıtlamak zordur, ancak bunu için bir özelliği olmayan bir nesneyi arayabilirsiniz. Forall ve varolma arasındaki varyasyon ne kadar fazla olursa, sorun o kadar zordur.∀∃∀
Bununla ilgili daha fazla bilgi için, Aritmetik Hiyerarşisine bakın . üstündeki herhangi bir şey kararsızdır, ancak seviye 1 yarı kararsızdır.Σ00= Π00
Halting problemi veya Yalancılar paradoksu gibi saçma sapan bir paradoks kullanmadan, tespit edilemeyen problemlerin olduğunu göstermek de mümkündür. Bir Turing Makinesi, bir dizi bit, yani bir tamsayı kullanılarak kodlanabilir. Ancak bir problem bir dil, yani tamsayıların bir alt kümesi olarak kodlanabilir. Tamsayılar kümesiyle tamsayıların tüm altkümeleri kümesi arasında hiçbir itiraz olmadığı bilinmektedir. Bu nedenle, ilişkili bir Turing makinesine (algoritmasına) sahip olmayan bazı problemler (diller) olmalıdır.
@Brent: evet, bu modern bilgisayarlar için karar verilebileceğini itiraf ediyor. Ancak belirli bir makine için karar verilebilir. Disk alanı olan veya bir ağda ya da başka bir şeyde saklayabilme olanağına sahip bir USB sürücü eklerseniz, makine değişti ve sonuç hala geçerli değil.
Ayrıca, algoritmanın "bu kod duracak" dediği yerde kodun birçok kez olacağı, çünkü kodun başarısız olacağını ve hafızasının tükeneceğini ve ayrıca fazladan bir miktar bellek eklemenin kodun bozulmasına neden olacağı söylenmelidir. başarılı ve farklı bir sonuç verin.
Mesele şu ki, Turing makineleri sonsuz miktarda hafızaya sahip değil. Kasete sonsuz miktarda sembolün yazıldığı bir zaman yoktur. Bunun yerine, bir Turing makinesi "sınırlandırılmamış" belleğe sahiptir, yani ihtiyaç duyduğunuzda daha fazla bellek kaynağı almaya devam edersiniz. Bilgisayarlar böyle. RAM veya USB çubukları veya sabit sürücüler veya ağ depolama ekleyebilirsiniz. Evet, evrendeki atomların bittiği zaman hafızanız tükenir. Ancak sınırsız belleğe sahip olmak çok daha kullanışlı bir model.