Quelles limites peut-on imposer au comptage des nœuds accessibles dans un dag?


23

Donné est un poignard. Vous souhaitez étiqueter chaque nœud en fonction du nombre de nœuds accessibles depuis celui-ci. est une borne supérieure triviale; Ω ( V + E ) est une borne inférieure (je pense). Existe-t-il un meilleur algorithme? Y a-t-il des raisons de croire que la borne inférieure peut être améliorée (lié: que sait-on exactement des bornes inférieures pour la fermeture transitive)?O(V(V+E))Ω(V+E)

Motivation: j'ai dû le faire plusieurs fois tout en représentant les formules fol comme des dags.

Edit: Veuillez noter que simplement faire compte les chemins , pas les nœuds accessibles . (J'ai ajouté cela car apparemment, beaucoup de gens pensaient que cette solution simple fonctionnerait par les votes que j'ai vus sur une réponse maintenant supprimée.) En fait, ce problème apparaît précisément lorsque vous voulez faire quelque chose d'intéressant avec des parties `` partagées '', des nœuds accessibles par plus d'un chemin. De plus, je dis dag, car s'ils sont résolus, la résolution des digraphes est facile.cX=1+Xycy


Cela semble être un cas spécial (en fixant tous les poids à un) de cstheory.stackexchange.com/questions/736/…
Suresh Venkat

@Suresh: Que les poids arbitraires rendent le problème plus difficile me semble être une autre question intéressante.
Radu GRIGore

Réponses:


10

mnO(mn)O(n2+mn/bûchen)O(n2+mnbûche(n2/m)/bûche2n)


4
Consultez également l'article d'Edith Cohen "Cadre d'estimation de la taille avec des applications à la fermeture et l'accessibilité transitive". Il donne un algorithme randomisé qui estime efficacement le nombre de descendants.
virgi

Notez que ces résultats s'appliquent à tous les graphiques dirigés, pas seulement aux DAG.
tonfa

Oui. Le résultat s'applique également à la version pondérée mentionnée dans cstheory.stackexchange.com/questions/736/…
virgi

7

nω


Merci, c'est intéressant! Je dois ajouter que les dags représentant des formules symboliques ont tendance à être rares, donc je suis un peu plus intéressé par ce cas.
Radu GRIGore

1

Peut-être pas utile dans votre contexte, mais vous pouvez obtenir une approximation en utilisant Synopsis Diffusion (http://www.cs.cmu.edu/~sknath/sd.htm). Je pense que cela en fait O (V + E). La simulation de la diffusion du synopsis sur un monoprocesseur me semble être O (V + E), (vous devez d'abord faire un tri topologique, qui est aussi O (V + E)).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.