Самая длинная возрастающая последовательность узлов в графе - PullRequest
3 голосов
/ 10 декабря 2010

Недавно посещал интервью MSFT для позиции SDET. Интервьюер 2-го тура задал мне этот вопрос: учитывая график, который имеет число в значении узла, найдите набор всех возрастающих последовательностей связанных вершин.Не в состоянии вспомнить точный вопрос. Парень казался очень враждебным и опровергал каждое из моих решений. Любой, кто знал такой вопрос ... Наконец, решение состояло в том, чтобы иметь матрицу смежности. Все еще не уверен, как это будет работать..

1 Ответ

5 голосов
/ 10 декабря 2010

Первым шагом является превращение двунаправленных ребер в направленные ребра, переходя только от меньшего к большему пронумерованному узлу для каждого. Обратите внимание, что результирующий граф будет ориентированным ациклическим графом (DAG), поскольку мы не можем перейти от небольшого-высокого-малого числа в пути. С этого момента мы можем игнорировать нумерацию узлов.

Теперь мы уменьшили проблему до проблема самого длинного пути . Решение (подробно описано в ссылке) состоит в том, чтобы выполнить топологическую сортировку на графе и затем использовать динамическое программирование, чтобы найти самый длинный путь.

Все это может быть достигнуто за линейное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...