Soit soit un graphe acyclique orienté , et soit λ est une fonction de marquage en correspondance chaque sommet v ∈ V à une étiquette λ ( v ) dans un alphabet fini L . Écriture n : = | V | , une sorte topologique de G est une bijection σ de { 1 , … , n } à V (c'est-à-dire un ordre de dans une séquence) telle que chaque fois que ( v , v ′ ) ∈ E alors σ - 1 ( v ) < σ - 1 ( v ′ ) (c'est-à-dire, s'il y a un bord de v à v ′ alors v se produit avant v ′ dans la séquence). L'étiquettede σ est le mot σ ( 1 ) ⋯ σ ( n ) dans L .
Étant donné , je voudrais énumérer efficacement les étiquettes des sortes topologiques de G. Quelle est la complexité de l'énumération des étiquettes de types topologiques? Bien sûr, comme il peut y en avoir de manière exponentielle, je veux étudier la complexité en fonction de la taille de la sortie, ou en termes de retard. En particulier, l'énumération peut-elle être effectuée avec un retard polynomial? (ou même un retard constant?)
Dans le cas où tous les sommets de portent des étiquettes distinctes (ou, de manière équivalente, les sommets sont { 1 , … , n } étiquetés par eux-mêmes), je sais que les étiquettes peuvent être énumérées en temps amorti constant, par ce résultat sur l'énumération des extensions linéaires de posets (ce qui revient à énumérer les types topologiques d'un DAG). Cependant, lorsque les sommets sont étiquetés de manière arbitraire, il peut arriver qu'un très grand nombre de tris topologiques aient la même étiquette, vous ne pouvez donc pas simplement énumérer les sortes topologiques de G et calculer leurs étiquettes pour obtenir un moyen efficace d'énumérer les étiquettes . Dans la terminologie des posets, le DAG étiqueté ( G , peut être considéré comme unposetétiqueté, et je n'ai pas pu trouver de résultats d'énumération à ce sujet.
Je connais déjà la dureté de certains problèmes connexes grâce aux réponses à mes autres questions ici. En particulier, je sais que trouver l'étiquette lexicographiquement minimale est difficile à NP . Je sais également que décider si une étiquette donnée peut être obtenue par un tri topologique est NP-difficile (à cause de la dureté de ce problème : étant donné une séquence d'étiquettes candidate , demandez une sorte topologique de G où chaque sommet doit se produire à une position où la bonne étiquette apparaît en s). Cependant, je ne pense pas que cela implique une dureté pour l'énumération, comme vous pouvez l'énumérer dans n'importe quel ordre (pas nécessairement lexicographique), et un algorithme d'énumération ne peut pas être utilisé pour décider efficacement si une étiquette est réalisable, même avec un retard constant (car il peut y avoir de façon exponentielle de nombreuses séquences à énumérer en premier).
Notez que, il est évidemment facile d'énumérer une première étiquette (il suffit de prendre n'importe quel tri topologique). Pour énumérer une autre étiquette que s , vous pouvez procéder en imposant qu'un élément v de V soit énuméré à une position i ∈ { 1 , … , n } où s i ≠ λ ( v ) : essayez tous les v et i , et vérifiez si G a un tri topologique où v est à la position i, ce qui peut clairement être fait dans PTIME. Mais comme vous produisez de plus en plus d'étiquettes, je ne sais pas comment généraliser cette approche.