Sırt Çantası Problemi (Knapsack): "Hangi Eşyaları Alayım?" Sorusunun NP-Zor Matematiği
Bir hırsız bir kasaya girdi. Sırtında 50 kg taşıyabileceği bir çanta var. Sandıkta farklı ağırlıkta ve farklı değerde eşyalar. Hangi eşyaları alırsa toplam değeri maksimum olur? Görünüşte sade ama matematik olarak şaşırtıcı zorlukta bir problem.

Bir hırsız geceyarısı bir mücevher mağazasına girdi. Yanında bir sırt çantası var; en fazla 50 kg taşıyabilir. Mağazada farklı ağırlıkta ve farklı değerde eşyalar var:
| Eşya | Ağırlık (kg) | Değer (₺) |
|---|---|---|
| Altın külçe | 30 | 50.000 |
| Gümüş kase | 20 | 25.000 |
| Yakut yüzük | 5 | 30.000 |
| Antika saat | 15 | 40.000 |
| Madeni para | 10 | 18.000 |
Hangi eşyaları alırsa toplam değeri maksimum olur?
Bu, klasik sırt çantası problemi (knapsack problem). Görünüşte sade — sadece bir kombinasyon seçimi — ama matematiksel olarak çok zengin. Modern bilgisayar biliminin en sevilen örneklerinden biri; dinamik programlama, NP-zorluk, yaklaşık algoritmalar gibi kavramların öğretiminde kullanılır.
Sıra dışı zorluk
İlk bakışta: "en değerliyi al, taşıyabildiğim kadar" diyebilirsiniz. Ama bu strateji yanlış sonuçlara götürebilir.
Yukarıdaki örneği bu açgözlü stratejiyle çözelim. En yüksek değer/ağırlık oranlı eşyayı önce alalım:
- Yakut yüzük: 30000/5 = 6000 ₺/kg
- Antika saat: 40000/15 = 2667 ₺/kg
- Altın külçe: 50000/30 = 1667 ₺/kg
- Madeni para: 18000/10 = 1800 ₺/kg
- Gümüş kase: 25000/20 = 1250 ₺/kg
Açgözlü sıra: Yakut (5kg) → Madeni para (10kg) → Antika saat (15kg) → Altın külçe... ama 30+15+10+5 = 60kg, sınırı aşıyor. Saat'ten önce duruyoruz; veya saat yerine başka şey deniyoruz...
Görüyorsunuz, doğru kombinasyonu bulmak için kombinasyon denemek gerekiyor. eşya için olası kombinasyon. 5 eşya için 32 kombinasyon — elle çözülebilir. Ama 30 eşya için kombinasyon — modern bir bilgisayar bile saatler harcar. 100 eşya için — evrenin yaşına yetmez.
Dinamik programlama çözümü
Bu kombinatorik patlama yerine, dinamik programlama (DP) tekniği çok daha verimli bir çözüm sunar.
Fikir: bir tablo oluştur. Satırlar eşyaları, sütunlar kapasite değerlerini (0'dan W'ye) temsil eder. Her hücre , "ilk eşyadan kapasiteli sırt çantasına sığacak maksimum değer" sorusuna cevap verir.
Yineleme:
Yani her eşya için iki seçenek var: almak ya da almamak. İki seçeneğin daha iyisini al.
Bu algoritma zamanda çalışır — eşya sayısı, kapasite. 100 eşya ve 1000 kapasite için işlem — anlık.
"Sözde polinom zaman"
Burada ilginç bir matematik incelik var. Dinamik programlama çözümü olduğu için, "polinom zamanlı" gibi görünür. Ama dikkat: , kapasitenin kendisidir; bit sayısı değil. Eğer ise, "polinom zaman" işlem demektir.
Modern karmaşıklık teorisinde, "polinom zaman" girdi büyüklüğüne göre tanımlanır — yani 'nin bit sayısı 'ye göre. Bu açıdan, knapsack çözümü = , ama açısından üsteldir. Yani knapsack, sözde polinom (pseudo-polynomial) zaman algoritmaya sahip ama gerçek anlamda polinom değil.
Bu hassas matematik farkı, knapsack'in NP-zor olarak sınıflandırılmasının sebebi. Modern bilgisayar biliminin teorik temellerinden biri.
NP-zor doğası
Sırt çantası problemi, karar problemi olarak ifade edildiğinde NP-tam sınıfındadır:
"Ağırlık toplamı ve değer toplamı olan bir eşya altkümesi var mı?"
Bu, Karp'ın 1972'deki 21 klasik NP-tam problemleri listesinde yer alır. NP-tam olmak demek: eğer polinom zamanlı bir tam çözüm bulunsa, olur (bilgisayar bilimi tarihinin en büyük açık problemini çözer).
Hiç kimse böyle bir algoritma bulamadığı için, modern uygulamalar yaklaşık algoritmalar ve heuristik yöntemler kullanır.
Yaklaşık algoritmalar
Knapsack için pratik yaklaşık çözümler:
FPTAS (Fully Polynomial-Time Approximation Scheme)
İstediğiniz hassasiyet için, polinom zamanda oranlı çözüm garantili. Yani gerçek optimumdan en fazla %5 sapma ile çözüm bulmak için polinom zamanda algoritma var. Bu çok güçlü bir teorik sonuçtur ve knapsack'i NP-zor problemler içinde "daha nazik" yapan özelliktir.
Genetik algoritmalar
Doğal seleksiyon prensiplerini taklit eden algoritmalar; büyük knapsack örnekleri için yaygın kullanılır.
Tavlama benzetimi (Simulated annealing)
Termodinamiğin enerji minimizasyonundan esinlenen heuristik. Büyük endüstriyel knapsack problemleri için pratik.
Modern uygulamalar
Sırt çantası problemi, modern dünyada şaşırtıcı kadar çok yerde:
1. Kaynak tahsisi (resource allocation)
Bir şirketin sınırlı bütçesi var; farklı projelere yatırım yapmak istiyor. Her projenin maliyeti ve beklenen getirisi var. Hangi projeleri seçer? — Sırt çantası problemi.
2. Yatırım portföyü
Sınırlı sermaye, farklı hisse senetleri, her birinin maliyet ve beklenen getirisi. Hangi hisseler? — Sırt çantası varyantı.
3. Veri merkezleri (cloud computing)
Bir sunucunun sınırlı CPU/RAM kapasitesi var; farklı görevler ya da müşteriler arasında nasıl dağıtılır? — Çok boyutlu knapsack.
4. Yük taşımacılığı
Bir kamyon ya da gemi sınırlı kapasitede; hangi paketler taşınır? — Knapsack.
5. Reklamcılık
Sınırlı ekran alanı (mobil, web), farklı reklamlar farklı değer ve boyutta. Hangi reklamlar gösterilir? — Online knapsack varyantları.
6. Kriptografi (tarihsel)
1978'de Ralph Merkle ve Martin Hellman, knapsack tabanlı bir açık anahtarlı şifreleme sistemi önerdi (Merkle-Hellman knapsack cryptosystem). Birkaç yıl sonra Adi Shamir tarafından kırıldı — ama hâlâ bir tarihsel önemli denemedir.
7. Bilgisayar oyunları
Envanter yönetimi, beceri ağaçları, kaynak optimizasyonu — pek çok strateji oyununda gizli knapsack hesabı var.
8. Genetik dizilim
Bazı bioinformatik problemler (örneğin restriksiyon enzim yerleri seçmek) knapsack benzeri formülasyonlara dönüşür.
Knapsack'in matematiksel zenginliği
Klasik sırt çantasının pek çok varyantı vardır:
- 0/1 Knapsack: Her eşya ya alınır ya alınmaz (klasik form).
- Fractional (sürekli) knapsack: Eşyalar parçalı alınabilir. Bu polinom zamanda çözülür (greedy strateji çalışır).
- Bounded knapsack: Her eşyadan en fazla belirli sayıda alınabilir.
- Unbounded knapsack: Her eşyadan istediğin kadar alabilirsin.
- Multi-dimensional knapsack: Birden fazla kısıt (ağırlık + hacim).
- Multiple choice knapsack: Eşyalar gruplara ayrılmış; her gruptan sadece bir eşya seçilebilir.
- Quadratic knapsack: Eşyaların değerleri etkileşimli (bazı çiftler bonus verir).
Her varyantın kendine özgü matematiksel zorlukları ve çözüm yöntemleri vardır. Modern operasyon araştırması, bu varyantların yüzlerce makalesini içerir.
Tarihsel arka plan
Sırt çantası probleminin formal matematiksel formülasyonu George Dantzig'in 1957'deki çalışmalarına dayanır. Dantzig, lineer programlamanın da öncüsü (Simpleks algoritması). Knapsack'in NP-zor olduğu, 1972'de Richard Karp tarafından "Reducibility Among Combinatorial Problems" makalesinde kanıtlandı.
İsim "sırt çantası" 1897'deki bir matematik problem koleksiyonundan gelir (Tobias Dantzig'in babası Vasily Dantzig, kısmen aile bağlantısı).
Bir hayat dersi
Sırt çantası problemi, "sade görünen sorular matematiksel olarak şaşırtıcı zorlukta olabilir" gerçeğinin güzel bir örneğidir. Bir hırsızın ne çalacağına karar vermesi — modern operasyon araştırması, bulut bilgi işlem, finansal portföy yönetimi, hatta evrim biyolojisinin matematik temelidir.
Daha geniş bir hayat dersi: kombinasyonel karar problemleri, hayatın her yerinde. Hangi projeyi başlatacaksın, hangi öğrenciyi alacaksın, hangi yatırımı yapacaksın — her birinin altında bir tür sırt çantası matematiği yatar. Bu matematik genelde "bir tam çözüm yok" der; ama "iyi yaklaşık çözüm" verir.
Bir sonraki sefer bir tatil çantanızı toplarken — "bu kıyafet mi, kitap mı?" diye düşünürken — modern matematik tarihinde bu basit problemin trilyon dolarlık endüstrilerin matematik temeli olduğunu hatırlayabilirsiniz. Knapsack, hayatın günlük kararlarıyla modern teorik bilgisayar bilimi arasındaki gizli köprü.
Etiketler
Kendinizi Test Edin
Cevaplarınız profilinizde istatistik olarak saklanır.
1. Klasik 0/1 sırt çantası probleminde amaç nedir?
2. Sırt çantası probleminin "açgözlü" çözüm stratejisi (en yüksek değer/ağırlık oranını önce al) neden yanlış olabilir?
3. Dinamik programlama ile sırt çantası probleminin çalışma süresi nedir?
4. Sırt çantası problemi karmaşıklık teorisinde hangi sınıftadır?
5. Sırt çantası problemi modern dünyada DOĞRUDAN hangi alanlarda kullanılır?
İlgili Yazılar
Sekreter Problemi: Hayatın En İyi Seçimini Yapmak için "%37 Kuralı"
Bir işe alma görüşmesi, bir ev arama süreci, hatta hayat arkadaşı seçimi… Hepsinin altında aynı klasik matematik problemi yatar. Cevap şaşırtıcı biçimde tek bir sayıya bağlıdır: %37.
MatematikPisagor Teoremi ve Saklı Bir Sır: İrrasyonel Sayılar Nasıl Keşfedildi?
Dik üçgenlerle ilgili o ünlü kural, aynı zamanda matematik tarihinin en sarsıcı keşfine yol açtı: kesir olarak yazılamayan sayılar. Üstelik bu keşif, bir bilim topluluğunu temellerinden sarstı.
MatematikFibonacci Dizisi ve Altın Oran: Tavşanlardan Ayçiçeklerine Uzanan Örüntü
Bir tavşan üretme bilmecesiyle başlayan basit bir sayı dizisi, ayçiçeği tohumlarından çam kozalaklarına, deniz kabuklarından galaksilere kadar doğanın her yerinde nasıl karşımıza çıkıyor?