Aradığınız konsepte , bir soruna (veya bir dilin / setin üyelerine) yönelik tüm çözümleri numaralandırmanın (listelemenin) hesaplama karmaşıklığının araştırılması olan numaralandırma karmaşıklığı denir . Numaralandırma algoritmaları iki aşamalı bir süreç olarak modellenebilir: bir ön hesaplama adımı ve gecikmeli bir numaralandırma aşaması . Bu adımların her ikisinin de kendi zaman ve mekan karmaşıklıkları vardır (belki de entropi de). Genel karmaşıklık ruhunda, bunlar arasında genellikle dikkate alınması gereken ödünleşmeler vardır.
Ön hesaplama adımı , ilk çözüm numaralandırılmadan önce gerekli bazı işleri yapar. Bu, çözümün kendisini bulmayı veya her çözüm arasındaki toplam gecikmeyi azaltacak bazı büyük veri yapısının başlatılmasını içerebilir.
Gecikme rasgele numaralandırılmış çözümler arasında gerekli hesaplama ile ilişkili kaynak maliyetidir. Başka bir deyişle, gecikme, i t h'den sonra çözeltisinin üretilmesi için gereken alan ve sürenin bir ölçüsüdür . Her numaralandırma için O ( 1 ) zaman alan çözümlerin sürekli gecikmesi olduğu söylenir. O ( p o l y ( n ) ) süresi gereksiniminin polinom gecikmesi olduğu söylenir.i+1thithO(1)O(poly(n))
Eğer özel olarak Soruda belirtilen numaralandırma sorunu için, sınıfa bakmak gerekir (altta Bağlantılı) Johannes Schmidt tarafından: "Algoritmalar ve Karmaşıklık Sayım" bölümünde 2.1'de ve ilgili kardeşler.ENUMNP
Ön hesaplama zamanı ve gecikmesini neden önemsiyoruz?
Gecikme, sayım problemlerinin gerçek karmaşıklıklarını anlamak için çok önemlidir. Elemanlarını numaralandırma (boyutuna kadar n ) ve { → x : cp ( → x ) } burada φ ( → x ) bir Boole formül (örneğin SAT) her iki üstel zaman olduğu. Ancak, Σ ∗ ile numaralandırmaΣ∗n{x⃗ :ϕ(x⃗ )}ϕ(x⃗ )Σ∗sadece belirli bir gecikme gerektirir, çünkü öğeleri bir sırayla geçebilirsiniz. Tüm bildiğimiz için, bir 3SAT örneğine çözümlerin numaralandırılmasının gecikmesi üssel olabilir. Karmaşıklık teorisyenleri olarak görevimiz, ikinci sorunun neden bir öncekinden daha zor (daha karmaşık) olduğunu yakalamaktır. Gecikme, bu farkı ortaya koymada oldukça iyi bir iş çıkarır.
Aynı şekilde, ne kadar ön hesaplama yapıldığını da bilmemiz gerekir. Tüm çözümleri önceden hesaplayıp daha sonra numaralandırılacak bir listede saklayarak, herhangi bir numaralandırma sorununun zaman ve mekana olan gecikmesini azaltabiliriz. Zor olan, iki kaynak arasındaki en iyi dengeyi bulmaktır.
Öğeleri numaralandırma sırası karmaşıklığı da etkileyebilir. Sonuçların belirli bir sıralama düzeninde döndürülmesini istemek, her iki adımda da ek hesaplama yapmamızı gerektirebilir. Her hangi bir düzenin yeterli olduğu durumlar da (her numaralandırılmış eleman benzersiz olduğu sürece) kesinlikle incelenir.
Bildiğim kadarıyla, bu sınıfların tipik olarak özlü etiketleri yoktur ( ve N P'ye benzer ). Numaralandırma karmaşıklığı sınıfları yaklaşık 3 veya daha fazla kaynağa (ön hesaplama / toplam süre, boşluk, gecikme ve entropi) dönüştüğü için bunu yapmayı beklemiyoruz. Özel adları dağıtmak için çok fazla kaynak sınırı kombinasyonu vardır. Bu, bu sınıfları daha az ilginç kılmaz ve aynı zamanda araştırmacıların yine de denemelerini engellemez.PNP
kaynaklar
Bu anket (gerçekten resmileştirme girişimi) başlamanıza yardımcı olacaktır. Aynı zamanda bazı temel hiyerarşi teoremlerini kanıtlar.
Sayım: Algoritmalar ve Karmaşıklık
(Johannes Schmidt, 2009)
https://www.thi.uni-hannover.de/fileadmin/forschung/arbeiten/schmidt-da.pdf
Numaralandırma karmaşıklığında sonuçların numaralandırılması için, Kunihiro Wasa tarafından küratörlüğünde bu derlemeye göz atın. Sorun türüne göre kategorize edildiğinden, grafik döngülerini numaralandırmaya adanmış bir dizi kağıdı kolayca bulabilirsiniz. Yalnızca belirli bir düğüme sahip döngüleri dikkate almak için ilgili algoritmaları değiştirmek basit olmalıdır.
http://www-ikn.ist.hokudai.ac.jp/~wasa/enumeration_complexity.html