java 伪随机函数时间复杂度分析

lokaqttq  于 2023-02-15  发布在  Java
关注(0)|答案(1)|浏览(98)

我只是挣扎,因为我不能做一个时间复杂度分析的最后一个周期,我随便添加的边缘与伪随机函数,这里是代码:

SplittableRandom rnd = new SplittableRandom();

ArrayList<ArrayList<Integer>> adjlist =  new ArrayList<ArrayList<Integer>>();

for (int j=0;j<n;j++){
    adjlist.add(new ArrayList<Integer>());
}
    
Nodo[]nodi=new Nodo[n];
    
for(int i = 0;i<n;i++){
    nodi[i]=new Nodo(i);
}
    
for (int i = 0;i<n-2;i++){//O(n)//
    int j = rnd.nextInt(i,nodi.length);
    Nodo tmp = nodi[j];
    nodi[j]=nodi[i];
    nodi[i]=tmp;
}
    
for (int k =0 ;k<n-1;k++){//O(n)//
    int i = nodi[k].info;
    int j = nodi[k+1].info;
    adjlist.get(i).add(j);
    adjlist.get(j).add(i);
}
    
int mrim = m-n+1;
    
for (int k=0;k<mrim;k++){
    int i = rnd.nextInt(0,n);
    ArrayList<Integer> a = adjlist.get(i);
        
    while(a.size()==n-1){
        i = rnd.nextInt(0,n);
        a = adjlist.get(i);
    }

    int j = rnd.nextInt(0,n);
        
    while (i==j || a.contains(j)){
        j = rnd.nextInt(0,n);
    }
    adjlist.get(i).add(j);
    adjlist.get(j).add(i);
}

请任何人帮助我做这个分析吗?这个代码在邻接列表中的一个图形represented节点之间创建一个随机路径后随意添加边。
4.我想我已经对图的结构作了一些假设(是稠密还是稀疏),但我陷入了僵局

ct2axkht

ct2axkht1#

不要循环,直到你得到一个合适的随机数。
相反,生成一个范围内所有可能数字的列表,删除不允许的数字,然后打乱列表并使用第一个元素。

相关问题