Я пытаюсь сгенерировать все возможные комбинации набора объектов с определенными свойствами. Проблема в том, что эти объекты могут быть объединены только определенным образом, и что когда вы «проверяете» комбинацию объектов в целом, она должна удовлетворять определенным условиям.
Данные объекта хранятся в базе данных SQL Server (которую я полностью контролирую, поэтому она может измениться, если данные должны быть расположены по-другому)
Упрощенная версия объектов, с которыми я имею дело:
class Item {
public string Start {get;set;}
public string End {get;set;}
}
Если у меня есть список этих объектов, например:
- Item {Start = "A", End = "B"}
- Item {Start = "B", End = "C"}
- Item {Start = "B", End = "A"}
Результирующий вывод этого набора элементов будет:
A -> B
B -> C
B -> A
A -> B -> C
, например
Элемент 1 может быть объединен с Элементом 2 для получения A -> B -> C.
Но Элемент 2 не может быть объединен с Элементом 3, потому что Конечное значение Элемента 2 не соответствует Начальному значению Элемента 3.
Также существуют «общие» правила, в которых общая комбинация «Начало» и «Конец» не может привести к перемещению предметов:
A -> B -> A
(пункт 1 с пунктом 3).
Возможно объединение до 5 таких предметов.
Есть ли какой-нибудь общий способ сделать это или алгоритм, который достигает того же результата?
Любая помощь (даже указатели) приветствуется.