Chemin simple sur dag avec bords arrière

10

Quelle est la complexité du problème suivant ( P? NP-hard?):

Entrée: un graphe acyclique dirigé , un ensemble d'arêtes arrières , et deux nœuds distincts et .E V × V s tD=(V,E)EV×Vst

Question: Soit le graphe formé en ajoutant à les bords de . Existe-t-il un chemin simple de à dans qui utilise au moins un bord arrière?D E s t GG=(V,EE)DEstG

Remarque: 0) Un chemin simple est un chemin dans lequel aucun sommet n'est répété, Un bord arrière est un bord qui contredit l'ordre partiel impliqué par le DAG. 1) le problème est facile si nous demandons au chemin simple d'utiliser exactement un bord arrière (ou un nombre constant) par réduction triviale au problème de chemin disjoint, qui admet une solution PTime simple dans les DAG ( Perl et Shiloach, JACM'78 ) 2) le problème du chemin disjoint est NP-complet dans les graphiques généraux ( Fortune et al., TCS'80 ).

Joseph Stack
la source
1
Ce n'est sûrement pas optimal, mais il suffit de montrer que votre problème est en P (sauf si j'ai mal compris quelque chose): soit les bords de ; appliquer un algorithme de chemin le plus court de à au graphique pour . En d'autres termes, continuez à ajouter une arête choisie de au graphique jusqu'à ce que vous trouviez un chemin de à . e de t G i = ( V , E 'i j = 1 { e j } ) i = 1 , 2 , . . . , m E G = ( V , E ) s te1,...,emEstGi=(V,Ej=1i{ej})i=1,2,...,mEG=(V,E)st
Marzio De Biasi
1
Marzio: mais que se passe-t-il si le chemin que vous trouvez utilise uniquement des arêtes en et aucune en ? Il peut encore exister un chemin différent qui comprend également un bord de . E E EEE
David Eppstein
Ce qui est très ennuyeux à propos de votre problème, c'est que le problème connexe suivant est facilement considéré comme NP-difficile: étant donné un graphique et deux paires de sommets (s, t), (s ', t'), pour déterminer s'il existe des vertex disjoints les chemins de s à t et de s 'à t', même lorsque t = s ', et même sur des graphes qui sont l'union de deux DAG. Pourtant, cela ne semble pas aider pour la question que vous posez.
a3nm
1
Le problème des chemins disjoints est W [1] -difficile même sur les DAG, et c'est un devoir de montrer qu'il est NP-Difficile dans les DAG. L'algorithme Shiloach concerne deux problèmes de chemins disjoints et fonctionne de manière assez similaire pour le problème des k chemins disjoints dans les DAG, mais cela prend du temps n ^ k. Mais admet au moins un algorithme XP pour votre problème.
Saeed