2012-02-09 4 views
0

Мне нужно создать алгоритм для получения списка ребер (дуг) графика ADT.Получение ребер графа

Я не могу получить доступ к графическим частным членам. Я думал, что могу сделать что-то похожее на узлы разметки DFS или BFS, а в случае, если существует край, добавив его в список, который должен быть выходом алгоритма, но я не смог найти решение.

У меня есть эти методы:

bool IsEmpty() 
Node InsertNode() 
InsertArc(Node, Node) 
DeleteNode(Node) 
DeleteArc(Node, Node) 
List AdjNodes(Node) 
bool ExistsNode(Node) 
bool ExistsArc(Node, Node) 
Label ReadNode(Node) 
WriteNode(Node, Label) 

Какой алгоритм можно использовать?

+0

упомяните об апи, у вас есть? –

+0

Какие атрибуты графика * do * у вас есть доступ? Я не уверен, насколько полезен график, если вы не можете напрямую обращаться к его узлам и краям ... – ajwood

+0

У меня есть следующие методы: - IsEmpty() - Узел InsertNode() - InsertArc (Node, Node) - DeleteNode (Узел) - DeleteArc (узел, узел) - Список AdjNodes (узел) - BOOL ExistsNode (Node) - BOOL ExistsArc (узел, узел) - Метка ReadNode (Узел) - WriteNode (Узел , Label) – JohnQ

ответ

1

Ну, пройдя эти методы, вы можете вызвать AdjNodes (Node) на каждом узле графика. Для каждого узла в возвращенном списке это будет представлять ребро, которое может обозначаться парой (FirstNode, SecondNode). Храните эти пары во вновь созданном списке, и это ваш список ребер.

Если у вас есть неориентированный граф, у вас будет дубликат каждого найденного вами края, так как (FirstNode, SecondNode) и (SecondNode, FirstNode) представляют один и тот же ребро.

+0

Я не вижу метода listNodes(). –

+0

Да, мне было интересно об этом, но я уверен, что есть кое-где, чтобы найти количество узлов, OP, вероятно, еще не нашел его. – HexTree

Смежные вопросы