Получить вектор всех ребер

В igraphБиблиотека c / c ++, я пытаюсь написать функцию, которая возвращает случайное ребро graph, Намерение состоит в том, чтобы написать большую функцию, которая «посещает» случайное ребро на каждом временном шаге и останавливается, когда все ребра были посещены. При каждом посещении выполняется внешний код.

Чтобы написать такую ​​функцию, мне нужно сначала получить список / вектор / что угодно, содержащее все eidиз краев graph, В руководстве я только видел igraph_get_eids, который возвращает список идентификаторов ребер либо вдоль пути, либо по отношению к вектору пар вершин.

Конечно, я могу вручную создать вектор из всех пар вершин и использовать его в качестве входных данных для вышеупомянутой функции, но это кажется излишним, и, вероятно, более прямым (и эффективным?) Решением там …

0

Решение

ID ребра igraph всегда являются последовательными целыми числами от нуля до igraph_ecount(graph)-1 (включительно), так что вы можете просто сгенерировать случайное целое число из этого диапазона, чтобы нарисовать случайное ребро из графика.

Цитируя руководство к игре:

Графы igraph представляют собой мультимножества упорядоченных (если они направлены) или неупорядоченных (если они не направлены) помеченных пар. Метки пар плюс количество вершин всегда начинаются с нуля и заканчиваются числом ребер минус один.

1

Другие решения


По вопросам рекламы [email protected]