Я пытаюсь случайно перемещаться по графику в jgrapht (пока не найду какой-то целевой узел). Чтобы сделать это, мне нужно начать с источникаNode, произвольно выбрать любой выходящий край и следовать ему.Получение всех ребер из узла в jgrapht
Я знаю, что существует метод getAllEdges(sourceVertex, targetVertex)
, который возвращает все ребра между двумя заданными узлами. Но как я могу получить все ребра, имея только sourceNode, без целевого?
Невозможно увидеть какой-либо прямой API для этого. То, что вы можете сделать, это либо 1. получить все вершины (возможно, используя метод 'vertexSet()'), а затем передать каждую вершину из этого набора как 'targetVertex' для метода' getAllEdges() 'и объединить результаты всех этих вызовов , или 2. получить все ребра, используя метод edgeSet(). Затем для каждого из этих ребер вызовите 'getEdgeSource (E e)', чтобы получить sourceVertext. Затем сравните его с указанной вершиной, чтобы увидеть, начинается ли это ребро из данной вершины. Соберите эти края и получите желаемый результат. –
Это, вероятно, будет работать, но насколько это эффективно? У меня довольно большой график для анализа. – Niemand
Если вы обеспокоены производительностью, так как не существует API-интерфейса, я предлагаю вам взглянуть на источник, а затем расширить класс, чтобы создать собственную реализацию, например, getAllEdgesStartingFromVertex (V vertex) , Это также позволяет оптимизировать метод так, как вы хотите. –