Soyut yorumlama çok genel bir kavramdır ve kime sorduğunuza bağlı olarak farklı açıklamalar alacaksınız çünkü çok yönlü kavramlar çoklu bakış açılarını kabul etmektedir. Bu cevaptaki görüş benim ve genel olduğunu varsaymazdım.
Bir motivasyon olarak hesaplama sertliği
Çözümleri şöyle bir yapıya sahip olan karar problemleri ile başlayalım:
Prosedürde genellikle NP-sert bir alt sınır vardır. Programların anlamsal özelliklerini kontrol etmek bile kararsızdır. Ne yapabiliriz?
İki gözlem yapalım. İlk olarak, genel sorunu çözemesek bile bazen belirli sorun örneklerini çözebiliriz. İkincisi, derleyici optimizasyonu gibi uygulamalar, verimsizliğin tüm kaynaklarını olmasa da bazılarını ortadan kaldıran bir derleyicinin yararlı olması açısından yaklaşımı tolere eder. Bu sezgiyi kesinleştirmek için cevap vermeliyiz:
- Tüm sorunlu örnekleri değil bazılarını çözmek resmi olarak ne anlama geliyor?
- Bir karar sorununa yaklaşık bir çözüm nedir?
Özet Yorumlama Fikri 1: Sorun İfadesini Değiştir
Bana göre, soyut yorumlamanın önemli bir kavrayışı, problem formülasyonunu Evet / Hayır cevabı istemek yerine Evet / Hayır / Belki cevabı istemektir .
Sonuç olarak, her sorunun önemsiz, sabit bir zaman çözümü vardır ( Belki çıktı ). Şimdi dikkatimizi her zaman Belki üretmeyen bir prosedür türetebiliriz . Yukarıdaki sorulara geri dönmek için, bazı sorun örnekleri için çalışan bir çözüm, belki çözemediği sorunlara geri dönen çözümdür . Dahası, belki bir tahmindir Evet ve Hayır biz cevabın ne olduğunu belli değildir çünkü.
Bu fikir sadece karar problemleriyle sınırlı değildir. Programlarla ilgili bu sorunları düşünün.
- Programdaki hangi kod satırları öldü (asla yürütülmeyecek)?
- Programdaki hangi değişkenlerin sabit değerleri vardır?
- Programdaki hangi iddialar ihlal edildi?
Tüm bu durumlarda, belirsizliği olan çözümleri düşünerek kesin bir çözümden yaklaşık bir çözüme geçebiliriz.
- Set nedir ölü satır kod?
- Set nedirProgramdaki sabit değerlere sahip değişkenler ?
- Programda ihlal edilmeyen bir dizi iddia nedir ?
Üretilen setlerin en büyüğü olması gerekmez. Bu fikir son derece geneldir ve program analizi ile ilgisi olmayan problemler için geçerlidir.
- Eklemek yerine m ve n, bir aralık isteyebiliriz [a,b] toplamın yattığı yer.
- Çarpmak yerine m tarafından n isteyebiliriz k sonucun bitleri (özel, yaygın örnekler işaret veya eşlik bitidir).
- Bir formülün tatmin edici ödevlerini istemek yerine, tatmin edici ödevleri içeren bir dizi isteyebiliriz.
Sorunu sadece değiştirmedik, aynı zamanda kesinlikle genelleştirdiğimizi unutmayın, çünkü orijinal soruna bir çözüm hala değiştirilmiş soruna bir çözümdür. Şimdi cevaplanmamış büyük soru: Yaklaşık bir çözümü nasıl bulabiliriz?
Özet Yorumlama Fikri 2: Orijinal Çözümlerin Sabit Nokta Karakterizasyonu
İkinci büyük fikir, çözüm kümesinin pek çok sorunun aday çözümleri kafeste sabit nokta olarak bir karakterizasyonu sahiptir. Örnek olarak, bir grafiğiniz olduğunu ve bir tepe noktası olup olmadığını bilmek istediğinizi varsayalımt bir tepe noktasından ulaşılabilir s. Bunu seti bulmaya ayırabilirizReach(s) tüm köşe noktalarından s ve sonra tbu sette. Bunu daha da gözlemleyebilirizR e a c h (s) denklemi için en az çözümdür:
X= { s } ∪ { w | v , X cinsindendir ve ( v , w ) bir kenardır }
Sabit nokta karakterizasyonunun değeri, kesin çözümün bir dizi yaklaşımın limiti olarak görülebilmesidir. Bu örnekte,n-serinin öğesinde ulaşılabilecek grafik köşeleri kümesi n adım s ve yaklaştırma bu köşelerin bir alt kümesidir.
Sabit nokta karakterizasyonu bir tasarım kararıdır. Bir dizi çözümün birçok farklı özelliği vardır. Her birinin farklı avantajları olabilir. Programlama dilleri söz konusu olduğunda, bir grafikle uğraşmaktan daha fazla yapıya sahibiz. Önem verdiğimiz sabit nokta denklemleri yapı üzerinde indüksiyon ile tanımlanabilir , giriş programının . Bu fikir programlara özgü değildir. Dilbilgisi, mantıksal formül, program, aritmetik ifade, vb.
Bu sabit nokta karakterizasyonunu vererek, belirli bir hesaplama çözümleri yolunu taahhüt ediyoruz. Aslında bu sabit noktayı hesaplamayacağız çünkü en azından orijinal problemi çözmek kadar zor, bu da bizi bir sonraki adıma getiriyor.
Özet Yorumlama Fikri 3: Sabit Nokta Yaklaşımı
Bir fonksiyonun sabit bir noktasını hesaplamak yerine F kafes içinde L, başka bir fonksiyonun sabit bir noktasını hesaplayabiliriz G, kafes içinde M. Şu koşulların karşılanması koşuluyla,M için L, hesaplanan bir çözüm M çözümün yaklaşık olarak L. Bu, genellikle sabit nokta aktarım teoremi olarak adlandırılan soyut yorumun temel sonuçlarından biridir . Sağlamlık durumu ya Galois bağlantıları ya da soyutlama ya da somutlaştırma işlevlerini ya da sağlamlık ilişkilerini içeren daha zayıf ayarlarla verilir.
Sabit nokta aktarım teoremi, yaklaşık bir analiz tasarladığınızda her zaman bir ses yaklaşımı hesapladığınızı kanıtlamanız gerekmediğini garanti eder. Sadece kafeslerinL (orijinal çözümler içerir) ve M (yaklaşık değerleri içeren) ve fonksiyonlar F ve G,belirli kısıtlamaları karşılamak. Bir analizin tasarımcısıysanız ve sağlamlığı önemsiyorsanız bu büyük bir kazançtır.
Sabit nokta aktarımının ardındaki sezgiyi anlaşılır bulabilirsiniz. Sabit bir noktayı (muhtemelen sonsuz) bir eleman zincirinin sınırı olarak düşünebiliriz. Yaklaşık çözümlerin hesaplanması, zincirin elemanlarına yaklaşarak yapabileceğimiz bu limite yaklaşmak demektir.
Yaklaşıklık kavramı uygulamaya bağlıdır. Bir seyahat planlamak için grafik erişilebilirlik kullanıyorsanız, aralarında yol olmadığını belirten bir yaklaşımı kabul edebilirsiniz.s ve t bir yol olsa bile, algoritma bir yol olduğunu söylüyorsa mutlu olmayacaksınız. s için t hiçbir yolun olmadığı yerde.
Özet Yorumlama Fikri 4: Sabit Nokta Yaklaşım Algoritmaları
Şimdiye kadar görülen her şey matematiksel bir varlık sonucu oldu. Son adım yaklaşımı hesaplamaktır. Yaklaştırma kafesi sonlu olduğunda (veya artan / azalan zincir koşulu karşılandığında), basit bir yinelemeli prosedür kullanabiliriz. Kafes sonsuz ise, tekrarlanan bir prosedür yeterli olmayabilir, ancak sabit bir noktanın hesaplanması hala karar verilebilir. Bu durumda, çözeltiyi daha fazla tahmin etmek veya saf bir yineleme algoritmasından daha hızlı bir şekilde tam bir çözeltiye atlamak için birçok teknik kullanılır. Bir çözümü hesaplama bağlamında, genişletme , daraltma , strateji yineleme , hızlanma vb.
özet
Bence soyut yorumlama, matematiksel mantığın muhakeme için matematiksel bir temel sağladığı gibi soyutlama kavramına da matematiksel bir temel sağlar. Önem verdiğimiz birçok sorunun çözümü sabit noktalar olarak nitelendiriliyor. Bu gözlem, dil problemlerini programlama ve hatta bilgisayar bilimi ile sınırlı değildir. Yaklaşık çözümler, sabit noktaların yaklaşıkları olarak karakterize edilebilir ve özel algoritmalar ile hesaplanır. Bu karakterizasyonlar ve algoritmalar problem örneğinin yapısından faydalanacaktır. Programlar söz konusu olduğunda, bu yapı dilin sözdizimi ile verilir.
Doğal bir metriğe sahip olmayan sorunlara yaklaşımları hesaplamak, uygulayıcılar tarafından sürekli olarak geliştirilmiş ve rafine edilmiş bir sanattır. Soyut yorum, bu sanatın arkasındaki bilim için bir matematik teorisidir.
Kaynaklar
Özet yorumlama hakkında okuyabileceğiniz birkaç iyi öğretici vardır.
- Özet Yorum'a sıradan bir giriş , Patrick Cousot (Radhia Cousot ile ortak çalışma), Sistem Biyolojisi ve Formaller Yöntemleri Çalıştayı (SBFM'12)
- Soyut yorumlarla bilgisayar sistemlerinin resmi doğrulamasına nazik bir giriş , Patrick ve Radhia Cousot, Marktoberdorf Yaz Okulu 2010.
- Ders 13: Soyutlama Bölüm I , Patrick Cousot, Soyut yorumlama, MIT Kursu.
- Soyut Yorumlamaya Giriş , Samson Abramsky ve Chris Hankin, Deklaratif Dillerin Soyut Yorumlanması, 1987.
- Özet yorumlama ve mantık programlarına uygulama , Patrick ve Radhia Cousot, 1992. İlk iki bölüm birkaç örnekle genel, üst düzey bir genel bakışa sahiptir.