Here is the implementation for BidirectionalGraph :
```
public IEnumerable<TEdge> OutEdges(TVertex v)
{
IEnumerable<TEdge> result;
if (this.TryGetInEdges(v, out result))
return result;
else
return Enumerable.Empty<TEdge>();
}
```
I think it should not use the method "TryGetInEdges".
A symptom of this problem is that the algoritms have a weird behaviour. For exemple, is i have the following graph:
```
v1->v2
^ |
| v
v4<-v3
```
and if I use the StronglyConnectedComponents algorithm on this graph, the algorithm will output that there is 4 components (we should have only one component). I think, this is because the StronglyConnectedComponents algorithm use the OutEdges method, and since it is wrong, the algorithm actually see the following graph:
```
|-------| |-------| |-------| |-------|
v1<---| v2<---| v3<---| v4<---|
```
(each vertex has a self-loop, and there is no other edge excepts these loops)
```
public IEnumerable<TEdge> OutEdges(TVertex v)
{
IEnumerable<TEdge> result;
if (this.TryGetInEdges(v, out result))
return result;
else
return Enumerable.Empty<TEdge>();
}
```
I think it should not use the method "TryGetInEdges".
A symptom of this problem is that the algoritms have a weird behaviour. For exemple, is i have the following graph:
```
v1->v2
^ |
| v
v4<-v3
```
and if I use the StronglyConnectedComponents algorithm on this graph, the algorithm will output that there is 4 components (we should have only one component). I think, this is because the StronglyConnectedComponents algorithm use the OutEdges method, and since it is wrong, the algorithm actually see the following graph:
```
|-------| |-------| |-------| |-------|
v1<---| v2<---| v3<---| v4<---|
```
(each vertex has a self-loop, and there is no other edge excepts these loops)