Networkx min_weighted_vertex_cover в python возвращает весь набор вместо покрытия вершин

У меня есть матрица смежности A с nodes = {0, 1, 2, 3, 4, 5}

A = [[0,1,1,0,0,0],[1,0,1,1,0,0],[1,1,0,0,1,0],[0,1,0,0,1,1],[0,0,1,1,0,0],[0,0,0,1,0,0]]

Я хочу найти минимальный вес покрытия вершин этого графа. Я преобразовал эту матрицу смежности с

g_n = nx.from_numpy_matrix(A)

и следующая функция, чтобы найти крышку vectex

cover = nx.min_weighted_vertex_cover(g_n)

Но выход

set([0, 1, 2, 3, 4, 5])

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

set([1, 2, 3])

Что не так с этим процессом?

1 ответ

Решение

Эта функция является приблизительной и возвращает "набор вершин, весовая сумма которых не превышает 2 * OPT" ( Prooflink). В вашем случае OPT=3, поэтому набор всех шести узлов является приемлемым ответом.

Другие вопросы по тегам