2016-06-21 4 views
-1

My graph looks like thisНайти все возможные пути от ребенка к началу родительского уровня

Как найти все возможные пути от ребенка до верхнего родительского уровня в графе в C#? У меня есть один верхний родитель на графике. Все узлы имеют собственный идентификатор, имя и родительский идентификатор. У родителя верхнего уровня есть родительский нуль, а у ребенка может быть несколько родителей. [Я должен найти все пути от H до A, как HEBA, HGDA AND HECA Мой узел выглядит следующим образом.

class Node 
    { 
     public int Id { get; set; } 
     public List<int> ParentId { get; set; } 
     public string Name { get; set; } 
    } 
+1

вы можете разместить код? – Thomas

+1

Какую структуру данных вы используете для представления орграфа? – Codor

+1

@ Томас У меня вопрос об обновлении. – pariwartan

ответ

0

вы можете найти все пути от 1 ребенка к родителю верхнего уровня, с BFS: https://en.wikipedia.org/wiki/Breadth-first_search или же ДФС: https://en.wikipedia.org/wiki/Depth-first_search. Оба могут быть записаны рекурсивно и итеративно. Но будьте осторожны, если у вас есть цикл вроде Node1 -> Node2 -> Node1 тогда эти алгоритмы не возвращают

Если вы ищете fastes образом, вы можете также использовать Алгоритм Дейкстры: https://de.wikipedia.org/wiki/Dijkstra-Algorithmus

+0

Я не мог хранить пути. Не могли бы вы дать мне образец? – pariwartan

+0

Danke aber das ist in Deutsch. – pariwartan

+0

извините ... вот английская ссылка: https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm – Thomas

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