Durma problemi çok belirsiz ise, bu şekilde düşünün.
Tüm pozitif tamsayıların n için doğru olduğuna inanılan , ancak her n için doğru olduğu kanıtlanmayan bir matematik problemi alın . Buna iyi bir örnek, Goldbach'ın ikiden büyük herhangi bir pozitif tamsayının iki asalın toplamı ile temsil edilebileceği iddiasıdır. Sonra (uygun bir bigint kütüphanesi ile) bu programı çalıştırın (pseudocode aşağıdaki gibidir):
for (BigInt n = 4; ; n+=2) {
if (!isGoldbachsConjectureTrueFor(n)) {
print("Conjecture is false for at least one value of n\n");
exit(0);
}
}
Uygulanması isGoldbachsConjectureTrueFor()
, okuyucu için bir alıştırma olarak bırakılmıştır, ancak bu amaçla,n
Şimdi, mantıksal olarak yukarıdakilerin ikisine de eşit olması gerekir:
for (; ;) {
}
(yani sonsuz bir döngü) veya
print("Conjecture is false for at least one value of n\n");
çünkü Goldbach'ın varsayımı ya doğru ya da doğru olmamalıdır. Bir derleyici her zaman ölü kodu ortadan kaldırabilseydi, her iki durumda da ortadan kaldırmak için kesinlikle ölü kod olurdu. Ancak bunu yaparken en azından derleyicinizin keyfi olarak zor sorunları çözmesi gerekir. Biz sorunları sağlayabilir kanıtlanabilir sert kodun biraz ortadan kaldırmak için hangi belirlemek için (örneğin NP-tam problemleri) çözmek zorunda kalacağını. Örneğin bu programı alırsak:
String target = "f3c5ac5a63d50099f3b5147cabbbd81e89211513a92e3dcd2565d8c7d302ba9c";
for (BigInt n = 0; n < 2**2048; n++) {
String s = n.toString();
if (sha256(s).equals(target)) {
print("Found SHA value\n");
exit(0);
}
}
print("Not found SHA value\n");
programın "Bulunan SHA değeri" veya "Bulunmayan SHA değeri" (hangisinin doğru olduğunu söyleyebilirseniz bonus puanları) yazdıracağını biliyoruz. Ancak, bir derleyicinin 2 ^ 2048 yineleme sırasını alacak şekilde makul bir şekilde optimize edebilmesi için. Aslında, yukarıdaki programın herhangi bir optimizasyon olmadan herhangi bir şey basmak yerine evrenin ısı ölümüne kadar çalışacağını (ya da çalışabileceğini) tahmin ettiğim için büyük bir optimizasyon olurdu.