Java 有没有更快的算法来构造这个图的邻接列表?

Java 有没有更快的算法来构造这个图的邻接列表?,java,algorithm,graph,complexity-theory,Java,Algorithm,Graph,Complexity Theory,我的问题是找到一个更好的算法来填充邻接列表 规格: G = (V , E ) //the graph V ={w} //vertex in this case each vertex is an array E={⟨u,v⟩| u,v ∈V ∧ u>v} // edge only if u > v u > v only if foreach i u̸=v ∧ u[i]≥v[i]. // (u>v and v>w => u>w) 我的简单代码

我的问题是找到一个更好的算法来填充邻接列表

规格:

G = (V , E ) //the graph
V ={w} //vertex in this case each vertex is an array     
E={⟨u,v⟩| u,v ∈V ∧ u>v} // edge only if u > v
u > v only if  foreach i u̸=v ∧ u[i]≥v[i]. // (u>v and v>w => u>w)
我的简单代码,复杂度O((v+1)*v/2)≈ O(n^2)

private void riempiAdj() {
    for(int i=0;i<nodi.length;i++)
        for(int j=i+1;j<nodi.length;j++)
            if(nodi[i].eMaggiore(nodi[j]))
                nodi[i].adj.inserisci(nodi[j]);     
}
private void riempiAdj(){

对于(int i=0;i在最坏的情况下,您试图构建的图中有Θ(|V|2)条边(边的总数为0+1+2+…+|V|-1=|V|(|V|-1)/2),因此任何显式构建图的邻接列表的算法都必须执行Ω(|V|2)在最坏的情况下工作只是因为需要添加许多边


因为这里的边有一个很好的模式,你可以想象创建某种惰性评估的邻接列表,只在需要时创建边,尽管这是一个单独的问题。

我认为Θ(| V|2)edges不正确,因为数组中的**evrey元素**必须大于或等于另一个数组的相同索引元素,因此对于ezample,如果我有n个数组:a1:1,0,0,0,0,0…,0 a2:0,1,0,0,0…,0 a3:0,0,0,1,0,0 an:,0,0,0,0…,1我有0个边答案是正确的,在最坏的情况下,每个节点都连接到其他节点R