为什么eles.breadthFirstSearch()表现得像dfs?

时间:2014-03-05 19:16:17

标签: cytoscape.js

我使用以下脚本来使用bfs函数。

$(loadCy = function(){

  options = {
    showOverlay: false,
    minZoom: 0.5,
    maxZoom: 2,

    style: cytoscape.stylesheet()
      .selector('node')
        .css({
          'content': 'data(name)',
          'font-family': 'helvetica',
          'font-size': 24,
          'text-outline-width': 3,
          'text-outline-color': '#888',
          'text-valign': 'center',
          'color': '#fff',
          'width': 'mapData(weight, 30, 80, 20, 50)',
          'height': 'mapData(height, 0, 200, 10, 45)',
          'border-color': '#fff'
        })
      .selector(':selected')
        .css({
          'background-color': '#000',
          'line-color': '#000',
          'target-arrow-color': '#000',
          'text-outline-color': '#000'
        })
      .selector('edge')
        .css({
          'width': 2,
          'target-arrow-shape': 'triangle'
        })
    ,

    elements: {
      nodes: [
        {
          data: { id: 'j', name: 'Jerry', weight: 65, height: 174 }
        },

        {
          data: { id: 'e', name: 'Elaine', weight: 48, height: 160 }
        },

        {
          data: { id: 'k', name: 'Kramer', weight: 75, height: 185 }
        },

        {
          data: { id: 'g', name: 'George', weight: 70, height: 150 }
        }
        ,
        {
          data: { id: 'h', name: 'Hag', weight: 70, height: 150 }
        }
        ,
        {
          data: { id: 'i', name: 'Iam', weight: 70, height: 150 }
        }
      ],

      edges: [

        { data: { source: 'j', target: 'e' } },
        { data: { source: 'j', target: 'k' } },


        { data: { source: 'e', target: 'j' } },
        { data: { source: 'e', target: 'k' } },
        { data: { source: 'e', target: 'g' } },

        { data: { source: 'k', target: 'j' } },
        { data: { source: 'k', target: 'e' } },
        { data: { source: 'k', target: 'g' } },
        { data: { source: 'h', target: 'g' } },
       { data: { source: 'j', target: 'h' } },
       { data: { source: 'g', target: 'i' } }

      ],
    },

    ready: function(){
      cy = this;
      cy.$('#j').bfs(function(i, depth){
        console.log('visits ' + this.id()+depth);

}, false);
    }
  };

  $('#cy').cytoscape(options);

});

控制台上的输出

  • 访问j0
  • 访问h1
  • 访问g2
  • 访问i3
  • 访问k1
  • 访问e1

但预期输出应该类似于

  • 访问j0
  • 访问h1
  • 访问k1
  • 访问e1
  • 访问g2
  • 访问i3

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

你发现了一个错误。对于即将发布的2.2版本,已经在2.2分支中修复了这一特定问题。该分支还具有更好的单元测试(包括bfs)。您可以等到2.2发布,或者您可以在分支上gulp build立即获取快照。