У меня возникают трудности при написании программы для вышеуказанной проблемы .. У меня есть следующий график ....
A-----B------C D
A is connected to B
B is connected to C
D is connected with no body!!
The maximum Independent set in this is {A,C, D}...
Матрица смежности для графика ниже: -
![Adjacency Matrix](https://i.stack.imgur.com/CLZ1S.png)
Я нарисовал следующий порядок дерева решений для решения проблемы: -
![Recursion Tree](https://i.stack.imgur.com/D1bHH.png)
- Первым элементом каждого узла является индекс.
Вторым элементом каждого узла является набор, в котором хранятся независимые элементы графа.
Левая ветвь говорит, что я не буду рассматривать элемент, а правая ветвь говорит, что я буду рассматривать элемент с индексом, указанным первым элементом узла.
Итак, как вы можете ясно видеть, на каждом узле я не рассматривал элемент, указанный индексом первого элемента узла, и я рассмотрел элемент, может ли он быть вставлен в независимый набор.
Я хочу написать программу для этого на Python !! Я новичок, и все еще на ранних стадиях реализации программы посредством рекурсии.
любезно помогите !!
Я написал следующий код: - но он мне не нравится .. Он как-то работает ... Пожалуйста, опыт Люди могут добавить в ваши комментарии ... Я все еще учусь в рекурсии ..
def maxset(tab, i, set):
global numcalls
numcalls += 1
if i == 0:
flag = 0
for s in set:
if tab[i][s]:
return 0
if i not in set:
set.append(i)
return len(set)
without_i = maxset(tab, i-1, set)
flag = 0
for s in set:
if tab[i][s]:
return without_i
if i not in set:
set.append(i)
with_i = maxset(tab,i-1,set)
return max(without_i, with_i)
tab = [[0,1,0,0],[1,0,1,0],[0,1,0,0],[0,0,0,0]]
#tab = [[0,1,0,0,0],[1,0,1,1,0],[0,1,0,1,0],[0,1,1,0,1],[0,0,0,1,0]]
set = []
numVertIndex = 3 #### 0,1,2,3
numcalls = 0
print(maxset(tab, numVertIndex, set))
print(set)
print (numcalls)