Pojęcie, którego szukasz, nazywa się złożonością wyliczania , czyli badaniem złożoności obliczeniowej wyliczania (wymieniania) wszystkich rozwiązań problemu (lub członków języka / zestawu). Algorytmy wyliczania można modelować jako proces dwuetapowy: etap wstępnego obliczania i faza wyliczania z opóźnieniem . Oba te etapy mają swoją złożoność czasu i przestrzeni (być może również entropię). W ogólnym duchu złożoności często występują między nimi kompromisy.
Etap wstępnego obliczenia wykonuje pewną pracę, która jest konieczna przed wyliczeniem pierwszego rozwiązania. Może to obejmować znalezienie samego rozwiązania lub zainicjowanie jakiejś dużej struktury danych, która zmniejszy ogólne opóźnienie między poszczególnymi rozwiązaniami.
Opóźnienie to koszty związane z zasobami do obliczenia niezbędnego pomiędzy dowolnymi wyliczonych rozwiązań. Innymi słowy, opóźnienie jest miarą przestrzeni i czasu potrzebnego do wytworzenia rozwiązania po i t h . Mówi się, że problemy, których rozwiązania wymagające czasu O ( 1 ) dla każdego wyliczenia mają stałe opóźnienie. Wymóg O ( s O l a ( n ) ), czas mówi się, że wielomian opóźnienia.i + 1t godzjat godzO ( 1 )O ( p o l y( n ) )
W przypadku problemu z wyliczeniem, o którym konkretnie wspomniałeś w swoim pytaniu, powinieneś przyjrzeć się klasie i jej pokrewnemu rodzeństwu w sekcji 2.1 „Wyliczenia: algorytmy i złożoność” Johannesa Schmidta (Link na dole).miN.UM.N.P.
Dlaczego zależy nam na czasie i opóźnieniu wstępnego obliczenia?
Opóźnienie jest bardzo kluczowe dla zrozumienia prawdziwych zawiłości problemów z wyliczaniem. Wyliczenie elementów (do rozmiaru n ) i { → x : ϕ ( → x ) }, gdzie ϕ ( → x ) jest wzorem boolowskim (tj. SAT), zajmuje czas wykładniczy. Jednak wyliczanie przez Σ ∗Σ∗n{ x⃗ : ϕ ( x⃗ ) }ϕ ( x⃗ )Σ ∗wymaga tylko ciągłego opóźnienia, ponieważ możesz po prostu przejść przez elementy w określonej kolejności. Z tego, co wiemy, opóźnienie wyliczenia rozwiązań dla instancji 3SAT może być wykładnicze. Naszym zadaniem jako teoretyków złożoności jest uchwycenie, dlaczego ten drugi problem jest zasadniczo trudniejszy (bardziej złożony) niż poprzedni. Opóźnienie robi całkiem niezłą robotę, pokazując tę różnicę.
Podobnie musimy również wiedzieć, ile wykonano wstępnego obliczenia. Możemy zmniejszyć opóźnienie dowolnego problemu z wyliczaniem do stałego czasu i przestrzeni, wstępnie obliczając wszystkie rozwiązania i przechowując je na liście, która zostanie wyliczona w późniejszym czasie. Wyzwanie polega na znalezieniu najlepszej równowagi między tymi dwoma zasobami.
Kolejność wyliczania elementów może również wpływać na złożoność. Wymaganie zwrotu wyników w określonej kolejności sortowania może wymagać od nas wykonania dodatkowych obliczeń w obu etapach. Chociaż z pewnością badane są również sytuacje, w których wystarcza dowolna kolejność (o ile każdy wyliczony element jest unikalny).
O ile mi wiadomo, klasy te zwykle nie mają zwięzłych etykiet (podobnych do i N P ). Nie możemy oczekiwać, że będziemy w stanie to zrobić, ponieważ klasy złożoności wyliczeń żonglują wokół 3 lub więcej zasobów (obliczenia wstępne / całkowity czas, przestrzeń, opóźnienie i entropia). Po prostu jest zbyt wiele kombinacji granic zasobów, aby można było podać specjalne nazwy. Nie czyni to tych klas mniej interesującymi, a także nie powstrzymuje badaczy przed próbowaniem.P.N.P.
Zasoby
Ta ankieta (naprawdę próba sformalizowania) powinna pomóc Ci zacząć. Dowodzi to również pewnych podstawowych twierdzeń hierarchicznych.
Wyliczenie: algorytmy i złożoność
(Johannes Schmidt, 2009)
https://www.thi.uni-hannover.de/fileadmin/forschung/arbeiten/schmidt-da.pdf
Aby uzyskać wyliczenie wyników w złożoności wyliczenia, sprawdź tę kompilację, której kuratorem jest Kunihiro Wasa. Ponieważ jest on podzielony na kategorie według rodzaju problemu, można łatwo znaleźć wiele artykułów poświęconych wyliczaniu cykli graficznych. Powinna być łatwa modyfikacja algorytmów, aby uwzględniały tylko cykle z danym węzłem.
http://www-ikn.ist.hokudai.ac.jp/~wasa/enumeration_complexity.html