La complexité de ce problème de chemin est-elle connue?

9

Instance: un graphe non orienté G avec deux sommets distingués et un entier .k 0stk0

Question: Est -ce qu'il existe un chemin dans , de telle sorte que le chemin croise au plus triangles? (Pour ce problème, un chemin est censé couper un triangle si le chemin contient au moins une arête du triangle.)G kstGk

Andras Farago
la source
3
Est-ce mal? Nous attribuons du poids à chaque bord, puis nous trouvons le chemin le plus court. Le poids de chaque arête est le nombre de triangles qui incluent cette arête. Le poids de ce chemin n'est pas égal au nombre de triangles qu'il rencontre mais c'est un chemin st avec un nombre minimum de triangles. (Le problème possible est que nous pouvons compter un ou plusieurs triangles deux fois parce que nous visitons deux bords de ce triangle, mais la raison pour laquelle nous les choisissons est qu'ils sont plus petits que de passer par l'autre bord du triangle et que nous avons également des moyens de chemin simples deux bords d'un triangle sont côte à côte).
Saeed
3
@Saeed Je ne comprends pas: quel est l'argument selon lequel le comptage excessif ne vous fait pas choisir un chemin sous-optimal? Votre algorithme est certainement une approximation 2. Peut-être qu'une solution consiste à ajouter une arête (u,w) pour chaque chemin uvw avec un poids égal au nombre de triangles contenant à la fois (u,v) et (v,w)
Sasho Nikolov
2
Bon, on peut passer de u à v puis on choisit x (un autre noeud pas dans le triangle uvw) puis on va vers w qui est faux (mon erreur était que j'ai raté entre des sommets qui ne sont pas dans le triangle uvw) , mais avec votre correction, c'est correct car pour chaque chemin st avec triangles α dans le graphique d'origine, il y a un chemin de poids α dans le graphique auxiliaire. De plus, le poids du chemin dans le nouveau graphique est toujours au moins égal au nombre de triangles dans le chemin correspondant dans le graphique d'origine. αα
Saeed
1
J'y réfléchis un peu plus, même après correction, cela ne fonctionne pas. Désolé Andras si j'ai apporté un mauvais espoir. Pour voir pourquoi la correction est incorrecte, considérons les sommets dans un chemin P et nous avons un triangle u , v , w et v , w , x et supposons que les arêtes v x et u w sont également incidentes de nombreux triangles. Si nous utilisons une nouvelle arête artificielle qui relie u - > w, alors nous comptons le triangle vu>v>w>xPu,v,wv,w,xvxuwu>w deux fois. PS: Mon raisonnement était à nouveau faux parce que je pensais que nous remplacions simplement u - > v et v - > w par un nouveau bord (multi) u - > w . Si nous ajoutons ces bords artificiels pour chaque chemin, cela fonctionnera trivialement. Il semble que ce soit un PNJ. v,w,xu>vv>wu>w
Saeed
1
Mon idée ne fonctionnera pas - j'aurais besoin de maintenir plusieurs ensembles, et je pense qu'il y en aura trop.
reinierpost

Réponses:

1

On suppose qu'il n'y a pas d' auto-bords dans .G

Pour chaque front entre le nœud et v j dans G , soit E [ i , j ] = 1 et E [ i ] , ce qui donne le nombre de chemins à deux sauts entre chaque paire de nœuds v i et v j . Puis pour l'arête entre v ivjevjgE[je,j]=1 s'il n'y a pas d'arête. Calculer n × n matrice C [ i , j ] = n k = 1 E [ i , k ] E [ k , jE[je,j]=0n×nC[je,j]=k=1nE[je,k]E[k,j]vjevjvje et dans G, calculer D [ i , j ] = E [ i , j ] C [ i , j ] sinon définir D [ i , j ] = vjg[je,j]=E[je,j]C[je,j][je,j]=, qui donne le nombre de triangles dont le bord fait partie (ou l'infini s'il n'y a pas de bord). La multiplication matricielle nécessaire pour calculer coûte O ( n 3 ) (pourrait être calculée plus rapidement en fonction de la rareté de G ).CO(n3)g

Calculez maintenant matrice A , telle que A [ i , j ] = min (n×nUNE . A est tous les chemins les plus courts en DUNE[je,j]=min([je,j],mink([je,k]+[k,j]-E[je,j]))UNE de longueur jusqu'à deux augmentée pour tenir compte des chemins qui longent les deux bords d'un triangle.

Maintenant, calculez simplement le chemin le plus court entre et v j dans G sur un nouveau graphique dont A est la matrice d'adjacence (pondérée) en utilisant Dijkstra (puisque tous les poids de bord sont positifs) c'est-à-dire et déterminez si A [ i , j ] k , où A est la fermeture sur le semi-cercle tropical (qui donne la matrice de distance).vjevjgUNEUNE[je,j]kUNE

Edgar
la source