пример библиотеки графов boost шесть степеней Кевина Бэкона: что такое Vertex () в примере - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь изучить библиотеку Boost Graph и наткнулся на пример под названием «Six Degrees of Kevin Bacon». Вот URL-адрес https://www.boost.org/doc/libs/1_61_0/libs/graph/doc/kevin_bacon.html

В этом примере я вижу:

...
boost::tie(pos, inserted) = actors.insert(std::make_pair(actors_name, Vertex()));
...

Что означает Vertex()?

I см. псевдоним Vertex на несколько строк выше Vertex(), как показано ниже, но я не понимаю, для чего нужен Vertex():

typedef graph_traits<Graph>::vertex_descriptor Vertex;

Может кто-нибудь помочь мне понять это? Я новичок в Boost и чувствую, что уже потерялся!
Документацию очень сложно прочитать и понять.

Спасибо.

1 Ответ

2 голосов
/ 26 мая 2020

Вершина (теория графов) используется для записи подключений актера к другим актерам. Они напрямую связаны, если они появились в одном mov ie.

Вершина, используемая в примере, описана здесь: boost::graph_traits<Graph>

Эта строка:

boost::tie(pos, inserted) = actors.insert(std::make_pair(actors_name, Vertex()));

пытается вставить pair с именем актера и созданным по умолчанию (пустым) Vertex. Если это не удается (inserted==false), это потому, что актер уже присутствовал, а pos будет указывать на существующий pair с Vertex, который уже имеет хотя бы одно соединение. В случае успеха pos будет указывать на вновь вставленный pair с пустым Vertex.

Шаг add_edge позже - это то, что соединяет двух актеров. Когда файл будет обработан, у вас будет график того, как все актеры в файле связаны (через ребра).

...