Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Algorytm BFS - graf

Ostatnio zmodyfikowano 2016-02-17 13:08
Autor Wiadomość
SaXior
Temat założony przez niniejszego użytkownika
Algorytm BFS - graf
» 2016-02-17 11:30:17
Witam.
Jak rozwiązać to zadanie:
W wyniku wykonania algorytmu BFS węzły grafu G:: 1->2;;2->1,3,5,6;;3->4,6;;4->3,8;;5->1,6;;6->7;;7->2,6,8;;
zostaną odwiedzone w następującej kolejności: 5..
Jak to się rozwiązuje ?
P-144949
Monika90
» 2016-02-17 12:10:59
W C++ mamy do tego bardzo fajne biblioteki
C/C++
#include <vector>
#include <iostream>
#include <boost/graph/vector_as_graph.hpp>
#include <boost/graph/breadth_first_search.hpp>

typedef std::vector < std::vector < int >> Graph;

struct PrintVertex
    : boost::default_bfs_visitor
{
    void finish_vertex( int v, const Graph & ) { std::cout << v << ' '; }
};

int main()
{
    Graph g = { { }, { 2 }, { 1, 3, 5, 6 }, { 4, 6 }, { 3, 8 }, { 1, 6 }, { 7 }, { 2, 6, 8 }, { } };
    boost::breadth_first_search( g, 5, boost::visitor( PrintVertex() ) );
}

i oto wynik

5 1 6 2 7 3 8 4
P-144951
SaXior
Temat założony przez niniejszego użytkownika
» 2016-02-17 12:17:58
Dzięki, wytłumaczysz jeszcze dlaczego tak? :)
P-144952
Monika90
» 2016-02-17 12:58:28
Zaczynamy od wierzchołka numer 5, (bo tak jest napisane w treści zadania):
5


Z piątki da się przejść do jedynki i szóstki, więc dopisujemy do wyniku:
1 6


z 1 da się przejść do 2, a z 6 do 7, dopisujemy:
2 7


Z 2 można przejść do 1, 3, 5 i 6, ale 1, 5 i 6 już było, wiec dopisujemy tylko 3. Z 7 można przejść do 2, 6, 8, ale 2 i 6 odpada, bo już było:
3 8


Z 3 można przejść do 4 i 6, więc dopisujemy 4, a z 8 nigdzie nie można przejść:
4


Z czwórki można przejść tylko do wierzchołków, które były już odwiedzone, a zatem to już jest koniec.
P-144953
SaXior
Temat założony przez niniejszego użytkownika
» 2016-02-17 13:08:11
Jeszcze raz wielkie dzięki!
P-144954
« 1 »
  Strona 1 z 1