Исправила.
mas=[((1,'a',1),(1,'b',2)),((2,'a',1),(2,'b',4)),((3,'a',1),(3,'b',5)),((4,'a',3),(4,'b',4)),((5,'a',2),(5,'b',5)),((6,'a',2),(6,'b',4))]
t=1
clas=[[1,5],[2,3,4,6]]
def del1(spi,sw):
spi1=[]
for i6 in range(len(spi)):
if spi[i6]!=sw:
spi1.append(spi[i6])
return spi1
i=0
while t==1:
t=0
qw=[]
i=0
for i,clasi in enumerate(clas):
if isinstance(clasi,int):
continue
qw=clas[i]#konkretnyi klass
statver=[['',''],['',''],['',''],['',''],['',''],['',''],['','']]
for er in qw:
#er-poryadok ver6iny v klasse, er-zna4enie.
mq=mas[er-1]#ver6ina v massive
for sa in mq:
for s,clasn in enumerate(clas):
if sa[2] in clasn:
if sa[1]=='a':
u1=sa[0]
statver[u1][0]=sa[1]+str(s)
#spisok kakoe rebro v kakoi klass vedet
else:
u1=sa[0]
statver[u1][1]=sa[1]+str(s)
break
#print(statver)
newclas=[0,0,0,0,0,0,0,0,0,0,0,0,0,0]
checkn=[]
#print(statver)
for i1,ver in enumerate(clasi):
ver=clasi[i1]#сама вершина
for i2,ver1 in enumerate(clasi):
ver1=clas[i][i2]
if isinstance(checkn,list) and i2 in checkn:
continue
if statver[ver]!=statver[ver1]:
newclas[ver]=[ver1];
checkn.append(ver1)
#i=i+1
t=1
else:
#print('ni4ego ne pomenyali')
t=0
checkn.append(ver)
if t==1:
divclas=clas
newclas=del1(newclas,0)
del divclas[i]
divclas=divclas+newclas
clas=divclas
#clas=clas1
print(clas)
Сейчас программа выкидывает последнюю вершину, а все остальное просто разбивает по отдельным вершинам (т.е. по сути минимизации вообще нет). =(