Breadth-first  Search

 

ÄÄÇ»ÅÍ°úÇÐ ¿¡¼­ breadth-first search (BFS) ´Â Æ®¸® (Tree), ±×·¡ÇÁ (Graph) ¸¦ Ž»öÇÏ´Â tree search algorithm ÀÌ´Ù. º¸Åë root node¿¡¼­ Ãâ¹ßÇÏ¿© ¸ðµç ÀÌ¿ôÇÏ´Â ³ëµåµéÀ» Ž»öÇÑ´Ù. ¶ÇÇÑ °¡Àå °¡±î¿î ³ëµåµé °¢°¢¿¡ ´ëÇØ Å½»öÇÏÁö ¾ÊÀº ÀÌ¿ô ³ëµåµéÀ» Ž»öÇÏ¿© ¸ñÇ¥¸¦ ãÀ» ¶§±îÁö °è¼ÓÇÑ´Ù.

BFS ´Â ÇØ (solution)¸¦ ã¾Æ¼­ Á¶Á÷ÀûÀ¸·Î Æ®¸®ÀÇ ¸ðµç ³ëµåµéÀ» °Ë»çÇÏ´Â ¹«Á¤º¸ Ž»ö (Uninformed or Blind Search) ÀÌ´Ù. ´Þ¸® ¸»ÇÏ¸é ¸ñÇ¥¿¡ ´ëÇÑ °í·Á¾øÀÌ ¸ñÇ¥°¡ ¹ß°ßµÉ ¶§ ±îÁö Àüü Æ®¸®¸¦ ÀüºÎ Ž»öÇÑ´Ù (exhaustively searches). BFS ´Â ÈÞ¸®½ºÆ½ (Heuristic)  À» »ç¿ëÇÏÁö ¾Ê´Â´Ù.

¾Ë°í¸®ÁòÀÇ °üÁ¡¿¡¼­ º¸¸é, ³ëµå¸¦ È®ÀåÇÏ¿© ¾ò¾îÁø ¸ðµç ÀÚ½Ä ³ëµåµéÀÌ FIFO queue ¿¡ ´õÇØÁø´Ù. ½ÇÁ¦·Î ±¸Çö½Ã, ÀÌ¿ô ³ëµåµéÀ» À§ÇØ ¾ÆÁ÷ °Ë»çµÇÁö ¾ÊÀº ³ëµåµéÀº  "open" »óÅ ¶ó°í ºÒ¸®´Â ¾î¶² ¿ë±â (queue ¶Ç´Â linked list °°Àº °Í) ¿¡ ³õ¿©Áö°Ô µÇ°í, ÀÏ´Ü °Ë»çµÇ¸é "closed" ¶ó°í ºÒ¸®´Â ¿ë±â¿¡ ³õ¿©Áø´Ù.

Æ®¸®°¡ ¾Æ´Ñ unweighted cyclic graph ¿¡¼­ ÃÖ´Ü°æ·Î¸¦ ã±âÀ§ÇØ Å½»öÇÒ ¶§´Â, BFS ´Â ÀÌ¹Ì ¹æ¹®Çß¾ú´Ù´Â °ÍÀ» ³ªÅ¸³¾ ÇÊ¿ä°¡ Àֱ⠶§¹®¿¡ °¢ ³ëµå¿¡ ÇϳªÀÇ bit ¸¦ °¡Áö°Ô ÇÏ¿© ÀûÀÀÇÒ ¼ö ÀÖ´Ù.

À§ÀÇ ±×·¡ÇÁ¿¡¼­ BFS ´Â A¿¡¼­ Ãâ¹ßÇϸç, ¿ÞÂÊÀÇ edge¸¦ ¿À¸¥ÂÊÀÇ edge º¸´Ù ¸ÕÀú ¼±ÅÃÇÑ´Ù°í °¡Á¤Çϸé, ¹æ¹®ÇÏ´Â ³ëµåÀÇ Å½»ö ¼ø¼­´Â ´ÙÀ½°ú °°´Ù. ±íÀÌ¿ì¼± Ž»ö (Depth First Search) ¿Í ºñ±³ÇØ º¸ÀÚ (Wikipedia : Breadth-first Search).

A, B, C, E, D, F, G.

Pseudocode :

Depth First Search    Iterative Deepening Depth-first Search   best-first search

Site :

Graph Algorithms : BFS java code

BFS-Applet

Breadth First Search : Demo

Dictionary of Algorithms and Data Structures: breadth-first search

C++ Boost Graph Library: Breadth-First Search

Paper :

³ªºñ¿ì¼± Ž»ö (Breadth-First Search) : Dan W. Patterson

³Êºñ¿ì¼± Ž»ö (Breadth-First Search) : Nils J.Nilsson