Denemeler, eleman listelerinin verimli bir şekilde saklanmasını sağlar. Ön ekler paylaşılır, böylece alan etkili olur.
Ağaçları verimli bir şekilde depolamak için benzer bir yol arıyorum. Üyelik olup olmadığını kontrol etmek ve eleman eklemek, belirli bir ağacın saklanan bazı ağaçların bir alt ağacı olup olmadığını veya verilen ağacın bir alt ağacı olan depolanmış bir ağaç olup olmadığını bilmek de istenir.
Tipik olarak, 50'den az yükseklikte yaklaşık 500 dengesiz ikili ağacı depolarım.
DÜZENLE
Benim uygulama bir tür memoization kullanarak model denetleyicisi bir türüdür. Bir devlet var düşünün ve aşağıdaki formüller: ve ile olmanın karmaşık altformülü, ve ben ilk olmadığını bilmek istiyorum hayal içinde tutan . Olmadığını kontrol tutan ve uzun bir süreçten sonra ben böyle olduğunu elde ederiz. Şimdi, bilmek istiyorum içinde tutan . Ben gerçeği hatırlamak istiyoruz tutan ve bildirime o yüzden türetebilirsiniz o içinde neredeyse anında.f = ϕ g = ( ϕ ∨ ψ ) ϕ f s ϕ g s f g ⇒ f g s g t f t
Bunu kanıtladık Tersine, içinde tutmaz , o zaman ben şunu söylemek istiyorum içinde tutmaz neredeyse anında.
Bu formüller üzerinde kısmi bir düzen oluşturmak ve sahip olabilir IFF . Her devlet için , biz formüller iki set saklamak; , tutan maksimum formülleri ve tutmayan en düşük formülleri saklar. Şimdi durum verilen ve bir formül , ben görebilir durumunda, ya da durumda ben yapılır ve doğrudan tutup tutmadığını biliyorum .g ⇒ f s L ( s ) l ( s ) s g ∃ f ∈ L ( s ) , f ⇒ g ∃ f ∈ l ( s ) , g ⇒ f g s
Şu anda, ve liste olarak uygulanmaktadır ve bu açıkça optimal değildir, çünkü saklanan tüm formülleri tek tek yinelemem gerekir. Formüllerim sekanslarsa ve kısmi sıra "öneki ise" bir üçlü daha hızlı olabilirdi. Ne yazık ki formüllerim , modal operatör ve atomik önermelere dayanan bir ağaç yapısına sahip .l ¬ , ∧
@Raphael ve @Jack'in işaret ettiği gibi, ağaçları sıralı hale getirebilirim, ancak korkarım bunun sorunu çözmeyeceğinden korkuyorum çünkü ilgilendiğim kısmi düzen "önekidir".