В igraph
Библиотека c / c ++, я пытаюсь написать функцию, которая возвращает случайное ребро graph
, Намерение состоит в том, чтобы написать большую функцию, которая «посещает» случайное ребро на каждом временном шаге и останавливается, когда все ребра были посещены. При каждом посещении выполняется внешний код.
Чтобы написать такую функцию, мне нужно сначала получить список / вектор / что угодно, содержащее все eid
из краев graph
, В руководстве я только видел igraph_get_eids
, который возвращает список идентификаторов ребер либо вдоль пути, либо по отношению к вектору пар вершин.
Конечно, я могу вручную создать вектор из всех пар вершин и использовать его в качестве входных данных для вышеупомянутой функции, но это кажется излишним, и, вероятно, более прямым (и эффективным?) Решением там …
ID ребра igraph всегда являются последовательными целыми числами от нуля до igraph_ecount(graph)-1
(включительно), так что вы можете просто сгенерировать случайное целое число из этого диапазона, чтобы нарисовать случайное ребро из графика.
Цитируя руководство к игре:
Графы igraph представляют собой мультимножества упорядоченных (если они направлены) или неупорядоченных (если они не направлены) помеченных пар. Метки пар плюс количество вершин всегда начинаются с нуля и заканчиваются числом ребер минус один.