CodeBlanks Logo Icon CodeBlanks

NP-complete

NP-complete problemlerin özelliğini öğrenirsin.

NP-complete

Bir problem NP-complete ise hem NP'de hem de NP-hard'dır. Tüm NP problemleri bu probleme polinom zamanda azaltılabilir.

Eğer bir NP-complete problem polinom zamanda çözülürse, tüm NP polinom zamanda çözülür demektir; yani P=NP.

Brute force

Subset sum NP-complete bir problemdir. Basit çözüm, tüm 2^n alt kümeyi denemektir; bu O(2^n)'dir.

Küçük girdiler için brute force işe yarar. Büyük girdiler için yaklaşık algoritmalar gerekir.

Uygulama brute_force_subset fonksiyonu

brute_force_subset(arr, target) yaz. Tüm alt kümeleri dene, toplam target olan var mı döndür. print(brute_force_subset([3, 5, 7], 10)) ile True yazdır.

Başlangıç kodu

solution.py
def brute_force_subset(arr, target):
    # Tüm alt kümeleri dene

Örnek çözüm

solution.py
def brute_force_subset(arr, target):
    # Tüm alt kümeleri dene
    n = len(arr)
    for mask in range(1 << n):
        s = 0
        for i in range(n):
            if mask & (1 << i):
                s += arr[i]
        if s == target:
            return True
    return False
print(brute_force_subset([3, 5, 7], 10))

Beklenen çıktı

True

Soru ve cevaplar

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

1 alt küme toplam

Soru
subset_sum([3, 5, ____], 10) → True
Cevap
subset_sum([3, 5, 7], 10) → True

Açıklama: 7 doğru.

2 Subset sum hangi sınıftadır?

  • P
  • Logaritmik
  • NP-complete Doğru cevap
  • Sabit zaman

Açıklama: Subset sum NP-complete'tir.

3 NP-complete: kavramları eşleştir

Kavram Anlamı
NP-complete Zor
brute force 2^n
subset sum Örnek
P=NP Açık

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