Kararsızlıkla başa çıkmak için belirttiğiniz motivasyon, karar verilebilir ama zor problemler için de geçerlidir. NP-zor veya PSPACE-zor bir probleminiz varsa, bir çözüm bulmak için genellikle bir çeşit yaklaşım (terimin geniş anlamıyla) kullanmamız gerekir.
Farklı yaklaşım kavramlarını ayırt etmek yararlıdır.
- Sayısal yaklaşım: çözüm boşluğu üzerinde bir metriğiniz olduğunda uygulanır ve çözümden uzaklığı ölçebilirsiniz. Çözümleri saydığınız ve çözümün içinde bir değer döndüren bir yaklaşım algoritması tasarlayabileceğiniz #SAT gibi sorunlar için durum budur .ε
- Olasılıksal yaklaşım: Rastgele bir algoritma kullandığınızda, algoritmayı her çalıştırdığınızda elde edeceğiniz çözümde kesinlikten vazgeçebilirsiniz. Çözümler üzerindeki olasılık dağılımını göz önünde bulundurarak algoritmadaki rasgele ve çözüm boşluğundaki rasgele arasında hareket edebilirsiniz. O zaman buradaki yaklaşım daha büyük bir olasılıkla doğru bir çözüm elde edeceğinizdir.δ
Orada Yukarıdaki iki bakış açısını birleştirmek ALLSAT gibi sorunlar için -algorithms. Kararsız sorunlar veya belirgin bir metrik olmayan ve rastgele bir algoritma kullanmak istemediğimiz sorunlar söz konusu olduğunda, hangi yaklaşım kavramının kullanılacağı sorusu vardır. Bu sorun özellikle derleyicileri optimize etme ve program doğrulama programlarının analizinde ortaya çıkar. Programların karmaşık özelliklerinin belirlenmesi ya kararsızdır ya da hesaplama açısından pahalıdır, bu nedenle bir çeşit yaklaşım gereklidir.(ε,δ)
İşte farklı bir yaklaşım kavramına bir örnek. İki büyük sayıyı çarpmak gibi bir hesaplama yaptığınızı ve çarpımın doğru olup olmadığını kontrol etmek istediğinizi varsayalım. Pratikte, hesaplamayı tekrar etmeden doğruluğu kontrol etmek için kullanılan birçok sezgisel teknik vardır. Doğru işareti elde etmek için işaretlerin çarpıldığını kontrol edebilirsiniz. Sayıların doğru pariteye (çift / tek sayı özellikleri) sahip olup olmadığını kontrol edebilirsiniz. Dokuzları dışarı atmak gibi daha karmaşık bir çek kullanabilirsiniz. Tüm bu tekniklerin, bir hata yaptıysanız size söyleyebilecekleri ortak bir özelliği vardır, ancak doğru cevabı alıp almadığınızı garanti edemezler. Bu özellik mantıksal bir yaklaşım olarak görüntülenebilir, çünkü orijinal hesaplamanın yanlış olduğunu kanıtlayabilirsiniz, ancak doğru olduğunu kanıtlayamayabilirsiniz.
Yukarıda bahsettiğim tüm kontroller, soyut yorumlama adı verilen bir tekniğin örnekleridir. Soyut yorum, sayısal ve olasılıklı yaklaşımlardan farklı bir mantıksal yaklaşım kavramını tamamen titiz hale getirir. Tek bir hesaplamanın analizi ile tanımladığım sorun, bir programın daha karmaşık analiz durumuna uzanır. Soyut yorumlama literatürü, programlar hakkında ve son zamanlarda mantıklar hakkında yaklaşık, mantıksal akıl yürütme için teknikler ve çerçeveler geliştirmiştir. Aşağıdaki referanslar faydalı olabilir.
- Özetle , Patrick Cousot tarafından özetlenen bir yorum.
- Kursunun bir parçası olarak Patrick Cousot'un Soyutlamaya Genel Bakış . Bir boquet çiçek özelliklerini belirlemek için soyutlamanın çok güzel bir örneği var. Buket benzetmesi sabit noktalar içerir ve tamamen matematiksel olarak hassas hale getirilebilir.
- Tüm derinlik ve detayları istiyorsanız, Patrick Cousot tarafından Soyut Yorumlama Kursu .
- Özet yorumlama ve mantık programlarına uygulama , Patrick Cousot ve Radhia Cousot, 1992. İsteğinize göre mantık programlarına uygulanır. İlk bölüm aynı zamanda döküm dokuz prosedürünü soyut bir yorum olarak resmileştirir.
Bütün bunlar tipik olarak bilgisayar programları hakkındaki akıllara uygulanmıştır. Soyut yorumdan fikirleri mantık için karar prosedürlerini incelemek için uygulamak konusunda oldukça yeni çalışmalar yapılmıştır. Odak noktası mantıksal mantık değil, önermeli mantık ve niceleyici içermeyen birinci dereceden teorilerde tatmin edilebilirlik olmuştur. (Bu alanda çalıştığım için aşağıdaki kağıtlardan biri benimdir)
- Staalmarck'ın yönteminin Aditya Thakur ve Thomas Reps tarafından genelleştirilmesi, 2012. Staalmarck'ın yönteminin program analizindeki sorunlara genel bir bakış verir.
- Soyut alanların azaltılmış ürünü ve karar prosedürlerinin kombinasyonu , Patrick Cousot, Radhia Cousot ve Laurent Mauborgne, 2011. Bu makale, karar prosedürlerini birleştirmek için Nelson-Oppen tekniğini inceleyerek eksik kombinasyonlar için de kullanılabileceğini göstermektedir. kararsız problemleriniz varsa özellikle ilginçtir.
- Memnuniyet Çözücüleri Statik Analizörler , Leopold Haller ve Daniel Kroening ile birlikte çalıştığım makaleler, 2012. Mevcut çözümleyicileri karakterize etmek için kafes tabanlı yaklaşım görünümünü uygular. Bunun yerine konudaki slaytlarıma da bakabilirsiniz .
Şimdi yukarıdaki makalelerin hiçbiri, karar verilemez olan tatmin edici sorunlara saldırmakla ilgili özel sorunuza cevap vermiyor. Bu makalelerin yaptığı şey, sayısal veya olasılıksal olmayan mantıksal sorunların yaklaşık odaklı bir bakışını ele almaktır. Bu görüş, programlar hakkındaki akla kapsamlı bir şekilde uygulanmıştır ve bence tam olarak sorduğunuz soruya hitap etmektedir.
Bunu modal mantığa uygulamak için bir başlangıç noktası olan Jonsson ve Tarski'nin cebirsel semantiği veya daha sonraki Lemmon ve Scott semantiği kullanmaktır. Çünkü soyut yorum, kafesler ve monoton işlevler açısından formüle edilmiştir, bu nedenle operatörlerle Boole cebirleri çalışmak için uygun bir anlamsaldır. Kripke çerçeveleri ile başlamak istiyorsanız, Jonsson ve Tarski'nin (bazıları Stone dualitesi diyebilir) dualite teoremini uygulayabilir ve cebirsel temsili türetebilirsiniz. Daha sonra, mantıksal yaklaşım için soyut yorumlama teoremlerini uygulayabilirsiniz.