Hi, I’m new to graph. Suppose I have an acyclic directed mixed graph like the following code.

```
g <- graph.formula(x -+ w1, x -+ y1, w1 -+ w2, w2 -+ y2,
w1 -+ y1, y1 -+ w1, w1 -+ w2, w2 -+ w1, w1 -+ y2, y2 -+ w1, w2 -+ x, x -+ w2, simplify = FALSE)
g <- set.edge.attribute(graph = g, name = "description", index = 5:12, value = "U")
```

Say I’m interested in the path from x to y2 (x → w1 → w2 → y2). Is there a function/way to output the directed edges between them? The output is a set like this: x -+ w1, w1 -+ w2, w2 -+ y2.

Thanks in advance for any help or insights!

`shortest_paths()`

will find a shortest path between two vertices. The `output`

parameter controls whether to output the vertices along the path, the edges along the path, or both. See Shortest (directed or undirected) paths between vertices — distance_table • igraph

Example:

```
> shortest_paths(g, 'x', 'y2', output='epath')$epath
[[1]]
+ 2/12 edges from 3bcf07b (vertex names):
[1] x ->w1 w1->y2
```

This graph is not acyclic. There are reciprocal edges like y1 ↔ w1. That’s a 2-cycle. x → w1 → w2 → x is a 3-cycle.

“mixed graph” normally refers to a graph that contains both directed and undirected edges. igraph does not support mixed graphs. Did you mean multigraph?