2016-09-27 8 views
-3

私はBFSアルゴリズムでキューが使用されるのはなぜですか?

ウィキペディア

Breadth-First-Search(Graph, root): 
2 
3  for each node n in Graph:    
4   n.distance = INFINITY   
5   n.parent = NIL 
6 
7  create empty queue Q  
8 
9  root.distance = 0 
10  Q.enqueue(root)      
11 
12  while Q is not empty:   
13  
14   current = Q.dequeue() 
15  
16   for each node n that is adjacent to current: 
17    if n.distance == INFINITY: 
18     n.distance = current.distance + 1 
19     n.parent = current 
20     Q.enqueue(n) 

https://en.wikipedia.org/wiki/Breadth-first_searchに擬似コードを見て、私は好奇心だと、queueuノードを保持するために使用される特別な理由があるのか​​どうかということですよ。現在コンテナ内の要素を通過する順序は無関係なので、コンテナを使用することができます。

+1

ヒント:BFSの場合、順序は関係ありません。それをスタックに置き換え、何が起こるかを推測してください。 – Carcigenicate

+0

別のヒント:キューまたはスタックを使用するとどうなるか考えてみてください。 – Mai

答えて

0

キューはまったくコンテナではありません。これはまさにこのアルゴリズムの重要なアイデアです。

キューは です。1.必ずコンテナ。 2.特定のシーケンスでのみ追加/ポップすることができます(キューとスタックの両方にこの属性があります)

2番目の点は、質問に答えるための要点です。

キューを一般リストとして使用している場合は、リストのインデックスを使用して要素を直接追加してポップすると、アルゴリズム全体がそれほど簡単ではありません。 (キューはもはやキューではありません)

関連する問題