Java 有向图上的转置

Java 有向图上的转置,java,Java,我被分配了以下问题,但我在解决它时遇到了问题。我知道我想完成什么,但是考虑到他为我们概述的基本代码,我不确定从哪里开始…我画了一张图片来说明我想完成什么(我想…) 这就是我需要做的: 考虑一个有向图G(V;a)。G写的GT(V;AT)的转置只不过是 G其中所有弧都已转置,即弧的原点成为端点和端点 成为原点。在某种意义上,GT是G的“向后”版本。对于这个问题,您必须 实现一个算法,该算法给定一个有向图,生成其转置 算法由以下接口给出: public interface Transpose<

我被分配了以下问题,但我在解决它时遇到了问题。我知道我想完成什么,但是考虑到他为我们概述的基本代码,我不确定从哪里开始…我画了一张图片来说明我想完成什么(我想…)

这就是我需要做的:

考虑一个有向图G(V;a)。G写的GT(V;AT)的转置只不过是 G其中所有弧都已转置,即弧的原点成为端点和端点 成为原点。在某种意义上,GT是G的“向后”版本。对于这个问题,您必须 实现一个算法,该算法给定一个有向图,生成其转置 算法由以下接口给出:

public interface Transpose<VT,AT> {
public DIGraph<VT,AT> doIt(DIGraph<VT,AT> src);
}
公共接口转置{
公共有向图doIt(有向图src);
}
实现上面给出的转置算法 它必须对表示为邻接列表的图形进行操作,并且不能修改原始图形 用大O符号和brie报告(在评论中)空间和时间的复杂性 Y 证明。(例如,将一个图形与n进行转置需要多长时间以及使用多少空间。) 顶点和m弧)

如果你能帮我开始,那就太好了

谢谢!

伪语言代码:

create new empty set of edges E
for I in all edges:
    (X,Y) = vertices of edge I ;
    insert edge (Y,X) to E;
result is in E.
空间复杂性:无要求


时间复杂度:O(边数)

公平地假设这是家庭作业?你已经有一个类来表示有向图了吗?如果没有,你将如何设计一个有向图?有向图中的“东西”是什么?@Phatmanac:是的,这是一个家庭作业。我已经做了很多阅读来完成它,但它不起作用……我不允许问hw问题吗?@Tony:我已经完成了已经编写了一个类(MyDiGraph)对于有向图…它使用了我写过的另外两个类:MyArc和MyVertex…MyDiGraph有一系列方法来检查邻接、insertArc和insertVertex…我还没有完成传出和传入的方法,但是…@Growler,绘图非常好,尤其是arrowsCan,请在回答后展开?你能详细介绍一下你的答案吗?我一直在考虑转置:我已经为MyDirectedGraph类(转置类将其用作构造函数)编写了以下方法:反向(顶点,圆弧);结束顶点(圆弧);区域邻接(顶点1,顶点2);更新MyVertex和MyArc(用于更新它们的数据);插入顶点和圆弧;可用于传入和传出顶点的iterable方法。因此…我是否应该获取圆弧的起始顶点…调用AreaNejacent方法…如果是,则调用endVertices~确定哪个是原点..然后将其与另一个顶点交换?