2016-04-05 2 views
1

Ввод: список вершин и список смежности.Найти наибольшее подмножество непрямого графика

Выход: наибольшее подмножество хороших вершин.

(Мы говорим вершина в подмножестве, как «хорошая вершина», если она имеет по крайней мере 2 смежных вершины и, по меньшей мере, 2 несмежные вершины в этом подмножестве.)

Пример 1:

Vertexes: [1, 2, 3, 4, 5] 
Relations: [(1,2), (1,3), (3,4), (3,5), (4,5)] 

example

output: [] 

Пример 2:
example2

output: [1,2,3,4,5,6] 

Потому что для каждой вершины на выходе она имеет не менее 2 вершин, и по меньшей мере две вершины не связаны с ней.

+0

Is [2,4,5] нормально тоже? Что означает 2 смежные вершины и 2 несмежные вершины? –

+0

@YanhuiZhou извините, не очень хороший пример, в примере он вернет пустое подмножество. Я поставлю еще один позже. – Deqing

ответ

3

Вызовите вершину «хорошо», если она имеет по крайней мере два соседа и по крайней мере два несетевых в графе. Вершина должна быть в порядке, чтобы быть на выходе.

Удалить все нехорошие вершины из графика. Когда вы это делаете, ранее верные вершины могут перестать быть в порядке, поскольку они заканчиваются из соседних или не соседних; эти вершины также не могут быть в выводе, поэтому относитесь к ним, как и к любым другим нехорошим вершинам, и удаляйте их тоже. Продолжайте движение, пока все оставшиеся вершины не будут в порядке.

Вывести набор оставшихся вершин.

+0

Как вы проверяете, что вершина не в порядке? При проверке вершины по крайней мере два несезона не очень эффективны, сложность очень высока. –

+0

@YanhuiZhou: Число несетей - это число узлов, оставшихся минус степень узла, минус 1, потому что мы не учитываем сам узел. – user2357112

+0

Спасибо, это хорошая идея. –

0
  1. Удалите вершины, которые имеют менее двух соседей.

  2. Построить края дополнения (левых) вершин. Дополнение не имеет такого же отношения в наборе отношений происхождения, но имеет другие. Объедините набор отношений происхождения с дополнением, он станет множеством отношений, которое является полным соотношением с левыми вершинами.

  3. Удалите вершины, в которых есть не более двух соседей. Вершины результата - это результат.

Процесс удаления на этапах 1 и 3, является рекурсивным процессом. Он должен удалить вершины, пока никто не сможет быть удален.

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

  • Нет связанных вопросов^_^