Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Алгоритм пошуку в ширину

Реферат Алгоритм пошуку в ширину





, visited , goal_node ) {

if ( fringe ==?) {

//Цільовий вузол не знайдений

return false;

}

if ( goal_node ? fringe ) {

return true;

}

return BFS '({ child | x ? fringe , child ? expand ( x )} visited , visited ? fringe , goal_node ) ;

}


Ітеративна формулювання:


BFS ( start_node , goal_node ) {

for (all nodes i) visited [ i ]= false;// Спочатку список відвіданих вузлів порожній

queue . push ( start_node );// Починаючи з вузла-джерела

visited [ start_node ]=true;

while (! queue . empty ()) {// поки черга не порожня

node = queue . pop ();// Витягти перший елемент в черзі

if ( node == goal_node ) {

return true;// Перевірити, чи не є поточний вузол цільовим

}

foreach ( child in expand ( node )) {// всі наступники поточного вузла ,.

if (visited [ child ] == false) {//. які ще не були відвідані.

queue . push ( child );//. додати в кінець черги.

visited [ child ]=true;//. і позначити як відвідані

}

}

}

return false;// Цільовий вузол недосяжний

}

2. Схема алгоритму пошуку в ширину


Алгоритм

Пошук в ширину виконується в наступному порядку: початку обходу s приписується мітка 0, суміжним з нею вершин - мітка 1. Потім по черзі розглядається оточення всіх вершин з мітками 1, і кожної з вхідних в ці оточення вершин приписуємо мітку 2 і т.д.

Якщо вихідний граф зв'язний, то пошук в ширину позначить всі його вершини. Дуги виду (i, i + 1) породжують остовно бесконтурний орграф, що містить в якості своєї частини остовное ордерево, зване пошуковим деревом.

Легко побачити, що за допомогою пошуку в ширину можна також занумерувати вершини, нумеруя спочатку вершини з міткою 1, потім з міткою 2 і т.д.

Граф схема алгоритму пошуку в ширину


3. Приклади реалізації


Python

BFS (s, Adj):

level={s: 0}={s: None}=1=[s] frontier:=[] u in frontier: v in Adj [u]: v not in level: [v ]=i [v]=u. append (v)=next +=1

PHP

$ graph=array ( A = gt; array ( B , C , D , Z ), B = gt; array ( A , E ), C = gt; array ( A , F , G ), D = gt; array ( A raquo ;, I ), E = gt; array ( B , H ), F = gt; array ( C , J ), G = gt; array ( C ), H = gt; array ( E , Z ), I = gt; array ( D ), J = gt; array ( J ), Z = gt; array ( A , H )); bfs ($ graph, $ startNode= A )

{

$ visited=array ();

$ queue=array ();

$ queue []=$ graph [$ startNode];

$ visited [$ startNode]=true; (count ($ queue) gt; 0)

{

$ currentNodeAdj=array_pop ($ queue); ($ currentNodeAdj as $ vertex)

{(! array_key_exists ($ vertex, $ visited))

{_ unshift ($ queue, $ graph [$ vertex]);

}

$ visited [$ vertex]=true;

}

}

}

С ++

# include lt; vector gt;

# include lt; stdio. h...


Назад | сторінка 3 з 7 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: The impact of unhealthy lifestyles on a child's behavior in school
  • Реферат на тему: Return to materialism
  • Реферат на тему: Розробка програми для пошуку максимально віддалених вершин у графі
  • Реферат на тему: Пошук найкоротшого шляху між парами вершин в орієнтованому і неориентирован ...
  • Реферат на тему: Пошук вершини в графі між двома заданими вершинами