CodeBlanks Logo Icon CodeBlanks

Azaltma

Bir problemi başka bir probleme azaltmayı öğrenirsin.

Azaltma

Azaltma (reduction), bir problemi başka bir probleme dönüştürmektir. Eğer A, B'ye polinom zamanda azaltılırsa ve B çözülürse A da çözülür.

Bu teknik, NP-complete problemleri kanıtlamak için kullanılır. Yeni bir problemin NP-complete olduğunu göstermek için bilinen bir NP-complete problemi ona azaltılır.

Çözüm doğrulama

Bir alt kümenin toplamı hedefe eşit mi diye doğrulama O(n)'dir. Bu, subset sum'in NP'de olduğunu gösterir.

Doğrulama polinom zamanda yapılır; bu yüzden subset sum NP'dedir. Ama çözümü bulmak NP-complete'tir.

Uygulama verify_subset fonksiyonu

verify_subset(arr, subset, target) yaz. subset'in toplamı target'a eşit mi döndür. print(verify_subset([3, 5, 7], [3, 7], 10)) ile True yazdır.

Başlangıç kodu

solution.py
def verify_subset(arr, subset, target):
    # Alt kümenin toplamı hedefe eşit mi

Örnek çözüm

solution.py
def verify_subset(arr, subset, target):
    # Alt kümenin toplamı hedefe eşit mi
    return sum(subset) == target
print(verify_subset([3, 5, 7], [3, 7], 10))

Beklenen çıktı

True

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Azaltma: kavramları eşleştir

Kavram Anlamı
A → B Azaltma
polinom Hızlı
B çözülür A çözülür
NP-complete Hedef

2 Subset sum'in doğrulaması ne kadar sürede?

  • O(1)
  • O(2^n)
  • O(n²)
  • O(n) Doğru cevap

Açıklama: Doğrulama O(n)'dir; sadece alt kümenin toplamı hesaplanır.

3 toplam hesabı

Soru
return sum(____) == target
Cevap
return sum(subset) == target

Açıklama: subset doğru.

Uzman seviye bölümündeki tüm dersler