Bir boolean devre Verilen üzerinde (sadece DEĞİL kullanan, AND ve OR kapıları) değişkenler, devre tarafından temsil edilen boolean formülü ayıklamak için en etkili yolu nedir? Bu sorun için bir çoklu zaman algoritması var mı?n
Bir boolean devre Verilen üzerinde (sadece DEĞİL kullanan, AND ve OR kapıları) değişkenler, devre tarafından temsil edilen boolean formülü ayıklamak için en etkili yolu nedir? Bu sorun için bir çoklu zaman algoritması var mı?n
Yanıtlar:
Sorunuzu doğru bir şekilde anlarsam, CIRCUIT-SAT'dan SAT'a standart azaltmayı kullanabileceğinizi söyleyebilirim: Her kapıyı yeni bir değişken olarak temsil edin ve ardından tüm devreyi CNF formunda temsil edin, her bir cümle ; burada yeni değişkendir ve giriş formülü , diğer kapıların girişleri temsil eden değişkenleri kullanarak tarafından verilir . Bu basit bir geçişle yapılabilir (doğrusal bir zamanda, açıkça optimaldir).v ϕ
Örneğin, hade eğer üç giriş, , ve , AND bağlayan kapılar ve sıra sıra ve , ve eğer gates- temsil etmek üç değişkeni sokabilmekteydi onların çıkışlarını birbirine bağlayan bir OR kapısı , ve , sırasıyla, ve aşağıdaki formüle yenidenÇıktı değişkeninin açıkça dahil edildiğine dikkat edin.x 2 x 3 x 1 x 2 x 2 x 3 v 1 v 2 v 3 ( v 1 ↔ ( x 1 ∧ x 2 ) ) ∧ ( v 2 ↔ ( x 2 ∧ x 3 ) ) ∧ ( v 3 ↔ ( v 1 ∨ v 2 ) ) ∧ v 3
Algoritmalara Giriş Cormen ve ark. NP-Tamlık bölümünde bunu ayrıntılı olarak açıklar.