Учитывая некоторые входные данные, которые состоят из левого и правого символа, выходные цепочки связывают входные данные.
Представьте, что входами являются домино , которые вы не можете перевернуть по горизонтали , и вам необходимо связать их вместе. Создание больших круглых цепочек (игнорируйте, если вы не можете физически сделать это с реальными домино) предпочтительнее маленьких круглых цепочек, которые предпочтительнее цепочек, где начало и конец не совпадают.
Выходы с более круглыми цепями (независимо от того, сколько или длина цепочки) - это то, что мы ищем. Например, выход из 3 круговых цепочек лучше, чем 1 большая цепочка и оставшееся одно домино.
Может ли кто-нибудь указать мне правильное направление? К какой группе проблем это относится и существуют ли алгоритмы для ее решения?
Примеры (выходные данные могут быть неверными!):
in[0]=(A,B)
in[1]=(B,C)
in[2]=(C,A)
out[0]=(0,1,2)
in[0]=(A,B)
in[1]=(B,A)
in[2]=(C,D)
in[3]=(D,C)
out[0]=(0,1)
out[1]=(2,3)
in[0]=(A,B)
in[1]=(B,A)
in[2]=(C,D)
in[3]=(E,F)
out[0]=(0,1)
out[1]=(2)
out[2]=(3)
in[0]=(A,B)
in[1]=(B,A)
in[2]=(C,D)
in[3]=(D,E)
out[0]=(0,1)
out[1]=(2,3)
in[0]=(A,B)
in[1]=(B,C)
in[2]=(C,D)
out[0]=(0,1,2)