Так что у меня есть проблема, домашнее задание:Graph Sortability C++
Пусть
G
ориентированный граф наn
вершин.Вызова
G
сортируемыми, если вершины могут быть отчетливо пронумерованы от1
доn
(никаких две вершин не имеют одинаковое количество) таким образом, что каждая вершина с входящими ребрами имеет, по меньшей мере, один предшественник с более низким номером. Например, пустьNUM(v)
будет числом, назначенным вершинеv
, и рассмотрим вершинуx
с входящими краями из трех других вершинr
,y
иz
. ЗатемNUM(x)
должен быть больше, чем по меньшей мере один изNUM(r)
,NUM(y)
иNUM(z)
.
Кроме того, алгоритм должен быть линейным; O(|V|+|E|)
.
обходе графа достаточно легко, но я понятия не имею, как проверить родители вершины, чтобы увидеть, если кол-во любой родителей ниже, чем у ребенка.
Как следует обращаться к родителям вершин, в которых я участвую?
Следующие списки смежности являются входными файлами (только образцы фактических тестовых примеров имеют около 8k вершин).
1->2
2->3
3->1
Is not Sortable.
1->2
2->3
3->4
4->2
Is Sortable.
Проблема может быть в сделано в C++/C, и я выбрал C++ для использования STL.
Я храню график, используя списки смежности, входные файлы - это реберные списки.
Try и выделить конкретные проблемы, которые вы испытываете. Очевидно, мы не будем делать домашнее задание для вас, но мы будем рады помочь вам определить конкретные камни преткновения. – Veedrac
@Veedrac Спасибо, мое сообщение выглядит намного приятнее сейчас, у меня прежде всего возникают проблемы с возвращением к родителям вершин, на которых я нахожусь (не уверена в лучшем способе заявить об этом). – Tomwa
Вы не хотите, чтобы вы выбрали C++ для STL? –