Код: Выделить всё
sets=[{1,2},{2,3},{1,3}]
Петля существует, когда вы можете перемещаться от одного числа в наборе к другому числу в наборе. набора, затем на тот же номер в другом наборе и вернитесь к исходному номеру, например. 1>2-->2>3-->3>1-->1, где '-->' указывает перемещение между наборами, а '>' указывает на перемещение внутри набора. Самый маленький цикл будет включать пару чисел, общих для двух наборов, например. а>b-->b>a-->a. Цикл должен содержать движение как минимум внутри двух наборов и между ними.
Какой тип структуры графика я мог бы использовать для представления этого? Я попытался представить каждый набор как узел, а затем указать, какие наборы с какими связаны, но это неправильно, поскольку для [{1,2},{1,3},{1,4}], между всеми множествами есть связь (общая единица), но петли нет. Я также пытался присвоить букву каждому числу в каждом наборе, но это тоже кажется неправильным, поскольку тогда я не знаю, как отличить циклы внутри набора.
Это было вызвано вопросом о создании уникальных продуктов.
Примерные наборы, подобные следующему (который имеет тривиальный цикл 4>17--17>4< /code> и более длинные циклы, например 13>5--5>11--11>13)
Код: Выделить всё
[{1, 13, 5}, {11, 13}, {17, 11, 4, 5}, {17, 4, 1}]
Альтернативная аналогия с визуализацией
Другой способ визуализировать «путь/петлю» — значит подумать о раскраске точек на сетке: столбцы содержат элементы наборов, а равные элементы находятся в одной строке. Петля – это путь, который начинается в одной точке и заканчивается в той же точке, перемещаясь по вертикали или горизонтали от точки к точке и должен включать оба направления движения.
Подробнее здесь: https://stackoverflow.com/questions/793 ... st-of-sets
Мобильная версия