javascript實現拓撲排序

拓撲序:

如果,圖中從v到w有一條有向路徑,則v一定排在w之前,滿足此條件的頂點序列稱之爲拓撲序,獲得一個拓撲序的過程叫做拓撲排序;AVO如果有合理的拓撲序,則必定是有向無環圖;

 // 拓撲排序
        topSort: function(){
          var that = this;
          var a = 1;    
          var visiteds = [];
          for (var i = 0; i < this.vertices; i++){
                    visiteds.push(false);
                }
          var stack = [];
          // 遍歷所有節點,並一次調用sortHelper函數
          for (var i = 0; i < this.vertices; i ++){
            if (!visiteds[i]){
                sortHelper(i);
            }
          }
          function sortHelper(v){
            // 類似深度搜索
            if (!visiteds[v]){
                stack.push(v);
                visiteds[v] = true;
                that.adj[v].forEach(function(w){
                   sortHelper(w);
                })
            }
          }
          return stack;
        }
發佈了63 篇原創文章 · 獲贊 36 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章