亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? network.java

?? MASON代表多主體鄰里或網絡仿真(Multi-Agent Simulator of Neighborhoods or Networks)。它是喬治梅森大學用Java開發的離散事件多主體仿真核心庫
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
        /** Synonym for clear(), here only for backward-compatibility.        Removes all nodes, deleting all edges from the Field as well.  Returns the nodes as a Bag, which you        are free to modify as it's no longer used internally by the Network. */    public Bag removeAllNodes()        {        return clear();        }    /** Returns all the objects in the Sparse Field.  Do NOT modify the bag that you receive out this method -- it        is used internally.  If you wish in modify the Bag you receive, make a copy of the Bag first,         using something like <b>new Bag(<i>foo</i>.getallNodes())</b>. */    public Bag getAllNodes()        {        return allNodes;        }        /** Iterates over all objects.          NOT fail-fast, and remove() not supported.  Use this method only if you're        woozy about accessing allObject.numObjs and allObject.objs directly.                 For the fastest scan, you can do:        <p><tt>                for(int x=0;x&lt;field.allNodes.numObjs;x++) ... field.allNodes.objs[x] ... </tt>                <p>... but do NOT modify the allNodes.objs array.    */    public Iterator iterator() { return allNodes.iterator(); }    /** The structure stored in the indexOutInHash hash table.  Holds the index of        a node in the allNodes bag, a Bag containing the node's outgoing edges,        and a Bag containing the node's incoming edges.  */    public static class IndexOutIn implements java.io.Serializable        {        /** Index of the node in the allNodes bag */        public int index;        /** Bag containing outgoing edges of (leaving) the node */        public Bag out;        /** Bag containing incoming edges of (entering) the node */        public Bag in;                       public IndexOutIn(final int index, final Bag out, final Bag in)            {            this.index = index;            this.out = out;            this.in = in;            }        // static inner classes don't need serialVersionUIDs        }    /*      Returns the index of a node.    */    public int getNodeIndex( final Object node )        {        IndexOutIn ioi = (IndexOutIn)(indexOutInHash.get(node));        if( ioi == null )            throw new RuntimeException( "Object parameter is not a node in the network." );        return ioi.index;        }    /**     * This reverse the direction of all edges in the graph.     * It is more expensive to clone the graph than to reverse the edges in place.     * It is more than twice as fast to reverse the edges than to      * create the dual graph. As a matter of fact getDualNetwork() took 240 time units     * while  two reverseAllEdges() calls took only 40 time units on a directed     * graph (1time unit = 1 millisecond / 10000 calls).     *      * In that case it is more advantageous to reverse the edges,      * compute whatever stats on the dual and revert it than to allocate memory.     *      */    public void reverseAllEdges()        {        if(!directed) return;//that was quick        int n = allNodes.numObjs;        Iterator i = indexOutInHash.values().iterator();        for(int k=0;k<n;k++)            {            IndexOutIn ioi= (IndexOutIn)i.next();            Bag tmpB = ioi.out;   ioi.out = ioi.in;   ioi.in = tmpB;            if(ioi.in!=null)                for(int j=0;j<ioi.in.numObjs;j++)                    {                    Edge e = (Edge)ioi.in.objs[j];                    //reverse e                    Object tmpO = e.from;      e.from = e.to;                e.to= tmpO;                    int tmpI = e.indexFrom;    e.indexFrom = e.indexTo;      e.indexTo = tmpI;                    }            }        }            /**     * An advantage over calling addNode and addEdge n and m times,      * is to allocate the Bags the right size the first time.     * @return a clone of this graph     *      * I cannot use clone() cause it's too shallow.     * I don't need the deep clone cause I want to reuse the nodes      * I need a special custom clone     */    public Network cloneGraph()        {        Network clone = new Network(directed);        clone.allNodes.addAll(allNodes);        int n = allNodes.numObjs;        Iterator ioiIterator = indexOutInHash.values().iterator();        Network.IndexOutIn[] ioiArray = new                Network.IndexOutIn[n];        for(int k=0;k<n;k++)            {            IndexOutIn oldIOI = (IndexOutIn)ioiIterator.next();            int index = oldIOI.index;            Bag copyOutBag = oldIOI.out==null?new Bag():new Bag(oldIOI.out.numObjs);            Bag copyInBag = directed? (oldIOI.in==null?new Bag():new Bag(oldIOI.in.numObjs)):copyOutBag;            IndexOutIn clonedIOI = new IndexOutIn( oldIOI.index, copyOutBag, copyInBag);            clone.indexOutInHash.put( allNodes.objs[index], clonedIOI);            ioiArray[k]=oldIOI;            }        //so far I avoided any resizing.        //TODO now I could work around addEdge, too.        //for instance I already now "IndexOutIn oldIOI", no need to hash-table look-up it.         for(int k=0;k<n;k++)            {            IndexOutIn oldIOI = ioiArray[k];            Object node_k = allNodes.objs[oldIOI.index];            if(oldIOI.out!=null)                for(int i=0;i<oldIOI.out.numObjs;i++)                    {                    Edge e = (Edge) oldIOI.out.objs[i];                    if(directed || e.from==node_k)                        clone.addEdge(new Edge(e.from, e.to, e.info));                    }                       }        return clone;        }//    /**//     * Probably slightly faster than clone().reverseAllEdges()//     *///      public static Network getDualNetwork(final Network network)//      {//              if(!network.directed) return network.cloneGraph();//              Network dual = new Network(true);//              int n = network.allNodes.numObjs;//              for(int k=0;k<n;k++)//                      dual.addNode(network.allNodes.objs[k]);//              Iterator i = network.indexOutInHash.values().iterator();//              for(int k=0;k<n;k++)//              {//                      Network.IndexOutIn ioi= (Network.IndexOutIn)i.next();//                      Bag out =ioi.out;//                      if(out==null) //                              continue;//                      for(int j=0;j<out.numObjs;j++)//                      {//                              Edge e = (Edge)out.objs[j];//                              dual.addEdge(new Edge(e.to, e.from, e.info));//                      }//              }//              return dual;//      }//      public static void compareDual(final Network net)//      {//              int iterations = 500000;//              long t0 = System.currentTimeMillis();//              for(int i=0;i<iterations;i++)//                      getDualNetwork(net);//              System.out.println("getDualNetwork = "+(System.currentTimeMillis() -t0));//      //              t0 = System.currentTimeMillis();//              for(int i=0;i<iterations;i++)//              {//                      net.reverseAllEdges();//                      //                      net.reverseAllEdges();//              }               //              System.out.println("reverseAllEdges x2 =  "+(System.currentTimeMillis() -t0));//      //              t0 = System.currentTimeMillis();//              for(int i=0;i<iterations;i++)//              {//                      net.cloneGraph().reverseAllEdges();//              }               //              System.out.println("clone + reverseAllEdges =  "+(System.currentTimeMillis() -t0));//      }    /**     * Complements the graph: same nodes, no edges were they were, edges where they were not.     *      * An advantage over calling addNode and addEdge n and m times,      * is to allocate the Bags the right size the first time.     */    public Network getGraphComplement(boolean allowSelfLoops)        {        Network complement = new Network(directed);        complement.allNodes.addAll(allNodes);        int n = allNodes.numObjs;        Iterator ioiIterator = indexOutInHash.values().iterator();        Network.IndexOutIn[] ioiArray = new Network.IndexOutIn[n];        int maxDegree = n-1+(allowSelfLoops?1:0);                for(int k=0;k<n;k++)            {            Network.IndexOutIn oldIOI = (Network.IndexOutIn)ioiIterator.next();            int index = oldIOI.index;            //TODO if i am multigraph, oldIOI.out.numObjs might be bigger than n,             //so that's how you get it to bomb on your hands.            Bag newOutBag = oldIOI.out==null?                new Bag(maxDegree):                new Bag(maxDegree-oldIOI.out.numObjs);            Bag newInBag = (!directed)?                 newOutBag:            (oldIOI.in==null?             new Bag(maxDegree):             new Bag(maxDegree-oldIOI.in.numObjs));            Network.IndexOutIn clonedIOI = new Network.IndexOutIn( oldIOI.index, newOutBag, newInBag);            complement.indexOutInHash.put( allNodes.objs[index], clonedIOI);            //so far I avoided any resizing.            ioiArray[k]=oldIOI;            }        //TODO now I could work around addEdge, too.        //for instance I already now "IndexOutIn oldIOI", no need to hash-table look-up it.         boolean[] edgeArray = new boolean[n];        for(int k=0;k<n;k++)            {            Network.IndexOutIn oldIOI = ioiArray[k];            int nodeIndex = oldIOI.index;            Object nodeObj = allNodes.objs[nodeIndex];            for(int i=0;i<n;i++) edgeArray[i]=true;            if(!allowSelfLoops) edgeArray[nodeIndex]= false;                            if(oldIOI.out!=null)                for(int i=0;i<oldIOI.out.numObjs;i++)                    {                    Edge e = (Edge) oldIOI.out.objs[i];                    Object otherNode = e.getOtherNode(nodeObj);                    int otherIndex = getNodeIndex(otherNode);                    edgeArray[otherIndex]=false;                    }                            for(int i=0;i<n;i++)                 if(edgeArray[i] && (directed || nodeIndex<=i))                    complement.addEdge(nodeObj,allNodes.objs[i], null);            }        return complement;        }           }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆福利精品推荐| 精品一区二区在线播放| 成人高清免费观看| 久久久久99精品国产片| 国产成人精品免费视频网站| 中文字幕av一区二区三区免费看| 国产在线麻豆精品观看| 国产亚洲一区字幕| 成人免费视频视频| 国产精品第四页| 在线观看不卡视频| 日韩成人伦理电影在线观看| 欧美草草影院在线视频| 国产高清精品网站| 国产精品夫妻自拍| 在线视频一区二区三区| 婷婷亚洲久悠悠色悠在线播放| 在线成人免费视频| 国产乱码字幕精品高清av| 国产精品久久久久久久久免费桃花| 9色porny自拍视频一区二区| 亚洲综合色成人| 日韩欧美中文一区二区| 国产馆精品极品| 亚洲综合小说图片| 日韩欧美一区二区久久婷婷| 成人美女视频在线观看18| 亚洲激情中文1区| 欧美一区二区观看视频| 国产福利一区二区| 亚洲一二三四久久| 欧美va亚洲va国产综合| 91网站最新地址| 三级久久三级久久| 国产精品乱人伦一区二区| 欧美日韩国产美女| 国产精品中文字幕欧美| 夜色激情一区二区| 久久精品亚洲一区二区三区浴池 | 亚洲444eee在线观看| 26uuu亚洲综合色欧美| 91在线porny国产在线看| 免费在线观看视频一区| 欧美国产乱子伦 | 91麻豆国产福利在线观看| 蜜芽一区二区三区| 成人欧美一区二区三区黑人麻豆| 欧美一区2区视频在线观看| 97久久超碰国产精品| 免费观看30秒视频久久| 亚洲美女视频一区| 久久蜜桃av一区精品变态类天堂| 欧美无乱码久久久免费午夜一区 | 国产精品一二三四| 免费日本视频一区| 一区二区三区精品久久久| 久久久久久9999| 欧美一区二区人人喊爽| 欧美性做爰猛烈叫床潮| 成人高清免费观看| 国产美女娇喘av呻吟久久| 日韩av在线免费观看不卡| 一区二区三区成人| 亚洲国产精品传媒在线观看| 欧美不卡一区二区三区四区| 69久久夜色精品国产69蝌蚪网| 91在线你懂得| 国产精品一二一区| 久久不见久久见免费视频1| 午夜视频一区二区| 亚洲精品视频在线观看免费| 最新中文字幕一区二区三区 | 欧美一二三四区在线| 欧美影视一区在线| 99精品视频在线播放观看| 粉嫩一区二区三区性色av| 久久er99精品| 久久精品国产亚洲5555| 丝袜美腿亚洲一区| 一区二区三区.www| 亚洲国产精品久久人人爱蜜臀| 亚洲人成7777| 亚洲激情自拍偷拍| 亚洲午夜在线视频| 午夜精品成人在线视频| 亚洲成人自拍一区| 日韩激情一二三区| 美国毛片一区二区三区| 久久99国产乱子伦精品免费| 久久 天天综合| 国产精品一区专区| 国产丶欧美丶日本不卡视频| 粉嫩嫩av羞羞动漫久久久 | 成人av综合在线| 91女神在线视频| 在线视频欧美精品| 91精品国产91热久久久做人人| 欧美一区二区三级| 久久久久久久久蜜桃| 国产精品不卡在线| 亚洲一区二区五区| 婷婷国产在线综合| 韩国成人精品a∨在线观看| 国产成人一级电影| www.成人在线| 在线亚洲+欧美+日本专区| 欧美一区二区三区公司| 久久人人爽人人爽| 亚洲三级在线观看| 亚洲主播在线观看| 久久精品国产一区二区三| 成人自拍视频在线观看| 在线观看日韩电影| 精品久久人人做人人爱| 国产精品色一区二区三区| 亚洲一区二区三区国产| 激情欧美日韩一区二区| 99国产精品国产精品久久| 欧美日韩精品一区二区| 欧美精品一区二区三区高清aⅴ| 国产精品三级久久久久三级| 亚洲综合色视频| 国产在线国偷精品产拍免费yy| 91在线视频免费91| 日韩精品一区在线| 亚洲精品中文在线观看| 久久福利视频一区二区| 91啪在线观看| 久久亚洲影视婷婷| 午夜视频久久久久久| 成人综合在线观看| 欧美一区二区精品久久911| 亚洲欧美综合另类在线卡通| 卡一卡二国产精品 | 国产美女视频一区| 欧美日韩二区三区| 亚洲天堂av一区| 国产中文字幕精品| 欧美一区午夜视频在线观看| 国产精品久久久久久久久免费丝袜 | 国产一区二区毛片| 欧美日韩和欧美的一区二区| 国产精品萝li| 国产一区二区三区美女| 欧美精品xxxxbbbb| 亚洲精品免费看| 成人av午夜电影| 精品国精品国产| 首页国产欧美久久| 色婷婷av久久久久久久| 国产精品午夜免费| 国产精品1区2区3区| 欧美一级理论性理论a| 天堂va蜜桃一区二区三区| 色丁香久综合在线久综合在线观看| 精品福利二区三区| 日本免费新一区视频| 欧美精品99久久久**| 亚洲一区二区影院| 欧美在线观看视频一区二区三区| 国产精品免费aⅴ片在线观看| 国产麻豆一精品一av一免费| 精品盗摄一区二区三区| 久久99蜜桃精品| 91麻豆精品国产91久久久使用方法| 亚洲午夜精品在线| 欧美视频日韩视频在线观看| 亚洲自拍与偷拍| 欧美日韩成人在线一区| 一区二区三区四区av| 欧美性色黄大片| 午夜精品久久久久久久久久| 欧美日韩国产一区二区三区地区| 亚洲综合另类小说| 欧美色图片你懂的| 午夜精品福利在线| 制服丝袜亚洲精品中文字幕| 日本不卡一二三区黄网| 4438x亚洲最大成人网| 丝袜亚洲另类丝袜在线| 日韩欧美aaaaaa| 国产成人日日夜夜| 亚洲国产成人午夜在线一区| 99精品一区二区三区| 亚洲最大成人网4388xx| 精品1区2区3区| 久久精品国产一区二区| 欧美国产一区二区| 99久久综合精品| 亚洲精品免费在线观看| 欧美系列亚洲系列| 日韩av电影免费观看高清完整版 | 亚洲国产精品天堂| 日韩一级高清毛片| 国产69精品久久久久毛片| 亚洲色图欧美激情| 欧美一区二区人人喊爽| 国产成人午夜视频| 一区二区国产盗摄色噜噜| 91精品欧美一区二区三区综合在|