Несвязное множество

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

Смежными называются вершины, имеющие общее ребро.

Несвязным множеством вершин называется такое подмножество вершин , что никакие две вершины из этого множества не являются смежными.

Ценностью множества вершин называется сумма ценностей всех вершин, входящих в это множество.

Задача

Ваша задача – выбрать из заданного графа несвязное множество вершин таким образом, чтобы ценность данного множества была как можно больше.

Технический регламент

<Число вершин>

<Ценность первой вершины> <Ценность второй вершины> … <Ценность последней вершины>

<Число ребер>

<Первая вершина первого ребра> <Вторая вершина первого ребра>

<Первая вершина второго ребра> <Вторая вершина второго ребра>

<Первая вершина третьего ребра> <Вторая вершина третьего ребра>

ответ

<Первая вершина последнего ребра> <Вторая вершина последнего ребра>

<Число выбранных вершин>

<Номер первой выбранной вершины> <Номер второй выбранной вершины> … <Номер последней выбранной вершины>

Обратите внимание на тот факт, что вершины нумеруются с единицы

Для уточнения деталей обратитесь к примеру.

Вот пример

  • 5
  • 10 6 6 1 1
  • 4
  • 1 2
  • 3 1
  • 3 5
  • 1 4

Ответ:

  • 2
  • 1 5

Ответы (1 шт):

Автор решения: MBo

Перебираете все максимальные по включению независимые множества вершин, например, с помощью алгоритма Брона-Кербоша, и находите наиболее ценное из них.

Вот, например, что есть в networkx: find_cliques(G) (работает на графе, дополнительному к данному)

На буржуйском это называется maximal independent sets (не maximum). Отличие в том, что maximum independent set подразумевает максимальное количество включённых вершин (для конкретного графа это определённое число), а maximal independent sets могут содержать разное количество вершин - главное, что каждый из них не является подмножествами какого-то другого независимого множества.

→ Ссылка